diff --git a/.editorconfig b/.editorconfig deleted file mode 100644 index 449f0da4..00000000 --- a/.editorconfig +++ /dev/null @@ -1,14 +0,0 @@ -# http://editorconfig.org/ -root = true - -[*] -charset = utf-8 -end_of_line = lf -indent_size = 2 -indent_style = space -insert_final_newline = true -trim_trailing_whitespace = true - -[{**/{actual,fixtures,expected,templates}/**,*.md}] -trim_trailing_whitespace = false -insert_final_newline = false diff --git a/.eslintrc.json b/.eslintrc.json index 61e88951..09c66550 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -107,7 +107,15 @@ "space-before-function-paren": [2, "never"], "space-in-parens": [2, "never"], "space-infix-ops": 2, - "space-unary-ops": [2, { "words": true, "nonwords": false }], + "space-unary-ops": [ + 2, { + "words": true, + "nonwords": false, + "overrides": { + "typeof": false + } + } + ], "spaced-comment": [0, "always", { "markers": ["global", "globals", "eslint", "eslint-disable", "*package", "!", ","] }], "use-isnan": 2, "valid-typeof": 2, diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 00000000..3112dfa8 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,18 @@ +# Number of days of inactivity before an issue becomes stale +daysUntilStale: 60 +# Number of days of inactivity before a stale issue is closed +daysUntilClose: 7 +# Issues with these labels will never be considered stale +exemptLabels: + - pinned + - security + - roadmap +# Label to use when marking an issue as stale +staleLabel: stale +# Comment to post when marking an issue as stale. Set to `false` to disable +markComment: > + This issue has been automatically marked as stale because it has not had + recent activity. It will be closed if no further activity occurs. Thank you + for your contributions. +# Comment to post when closing a stale issue. Set to `false` to disable +closeComment: false diff --git a/.github/workflows/helpers_ci.yml b/.github/workflows/helpers_ci.yml new file mode 100644 index 00000000..339f8a1a --- /dev/null +++ b/.github/workflows/helpers_ci.yml @@ -0,0 +1,59 @@ +name: Handlebars-helpers CI + +on: + # Trigger the workflow on push or pull request, + # but only for the master branch (or main) + push: + branches: + - master + - main + pull_request: + branches: + - master + - main + release: + types: + - created + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: + +jobs: + build-and-test: + + runs-on: ${{ matrix.os }} + + timeout-minutes: 30 # Just in case something goes realy real realy BAD..... + + strategy: + fail-fast: false + matrix: + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + node-version: [18.x, 20.x] + os: [ubuntu-20.04, windows-2019] + + steps: + - name: Checkout GITHub code + uses: actions/checkout@v2 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v2 + with: + node-version: ${{ matrix.node-version }} + + - name: Install dependencies + run: yarn install --frozen-lockfile # will run `yarn install --frozen-lockfile` command + + - name: Lint code + run: yarn lint + + - name: Run tests against code + run: yarn test + env: + CI: true + name: Handlebars-helpers CI + + - name: Publish to NPM only on a relase event + if: github.event_name == 'release' && github.event.action == 'created' + uses: JS-DevTools/npm-publish@v1 + with: + token: ${{ secrets.NPM_TOKEN }} diff --git a/.gitignore b/.gitignore index 4bf0a604..415de2f7 100644 --- a/.gitignore +++ b/.gitignore @@ -14,7 +14,6 @@ node_modules npm-debug.log # yarn -yarn.lock yarn-error.log # misc diff --git a/.mocharc.json b/.mocharc.json new file mode 100644 index 00000000..a97a2961 --- /dev/null +++ b/.mocharc.json @@ -0,0 +1,4 @@ +{ + "extension": ["js"], + "spec": "test/**/*.js" +} \ No newline at end of file diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index efd82de1..00000000 --- a/.travis.yml +++ /dev/null @@ -1,17 +0,0 @@ -sudo: false -os: - - linux - - osx -language: node_js -node_js: - - node - - '9' - - '8' - - '7' - - '6' - - '5' - - '4' - - '0.12' -before_script: - - npm install -g gulp-cli -script: gulp diff --git a/.verb.md b/.verb.md index 01c3a80f..a1369ade 100644 --- a/.verb.md +++ b/.verb.md @@ -1,7 +1,3 @@ -## Browser usage - -See how to [use handlebars-helpers in the browser](https://github.com/doowb/handlebars-helpers-browserify-example). - ## Usage The main export returns a function that needs to be called to expose the object of helpers. @@ -67,9 +63,4 @@ The following utils are exposed on `.utils`. *** - [operators]: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Arithmetic_Operators - -## History - -{%= changelog(yaml(read("CHANGELOG"))) %} diff --git a/CHANGELOG b/CHANGELOG index 15e5a1b7..38e3114c 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,9 @@ +v0.11.0: + date: "2023-06-21" + changes: + - removed `times` from math helpers + - removed alias `url_encode` and `url_decode` from URL helpers + - fixed decodeURI example, it was a using escape and had the example for encodeURI v0.10.0: date: "2017-11-17" changes: diff --git a/README.md b/README.md index 7c708747..7d2285ca 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,10 @@ -# handlebars-helpers [![NPM version](https://img.shields.io/npm/v/handlebars-helpers.svg?style=flat)](https://www.npmjs.com/package/handlebars-helpers) [![NPM monthly downloads](https://img.shields.io/npm/dm/handlebars-helpers.svg?style=flat)](https://npmjs.org/package/handlebars-helpers) [![NPM total downloads](https://img.shields.io/npm/dt/handlebars-helpers.svg?style=flat)](https://npmjs.org/package/handlebars-helpers) [![Linux Build Status](https://img.shields.io/travis/helpers/handlebars-helpers.svg?style=flat&label=Travis)](https://travis-ci.org/helpers/handlebars-helpers) [![Windows Build Status](https://img.shields.io/appveyor/ci/helpers/handlebars-helpers.svg?style=flat&label=AppVeyor)](https://ci.appveyor.com/project/helpers/handlebars-helpers) +## handlebars-helpers -> More than 130 Handlebars helpers in ~20 categories. Helpers can be used with Assemble, Generate, Verb, Ghost, gulp-handlebars, grunt-handlebars, consolidate, or any node.js/Handlebars project. +[![Build](https://github.com/Budibase/handlebars-helpers/actions/workflows/helpers_ci.yml/badge.svg)](https://github.com/Budibase/handlebars-helpers/actions/workflows/helpers_ci.yml) -You might also be interested in [template-helpers](https://github.com/jonschlinkert/template-helpers). +> More than 130 Handlebars helpers in ~20 categories. Helpers can be used with Assemble, Generate, Verb, Ghost, gulp-handlebars, grunt-handlebars, consolidate, or any node.js/Handlebars project. - [Install](#install) -- [Browser usage](#browser-usage) - [Usage](#usage) - [Helpers](#helpers) - [Utils](#utils) @@ -14,22 +13,12 @@ You might also be interested in [template-helpers](https://github.com/jonschlink ## Install -Install with [npm](https://www.npmjs.com/): - -```sh -$ npm install --save handlebars-helpers -``` - Install with [yarn](https://yarnpkg.com): ```sh -$ yarn add handlebars-helpers +$ yarn add @budibase/handlebars-helpers ``` -## Browser usage - -See how to [use handlebars-helpers in the browser](https://github.com/doowb/handlebars-helpers-browserify-example). - ## Usage The main export returns a function that needs to be called to expose the object of helpers. @@ -37,7 +26,7 @@ The main export returns a function that needs to be called to expose the object **Get all helpers** ```js -var helpers = require('handlebars-helpers')(); +var helpers = require('@budibase/handlebars-helpers')(); //=> returns object with all (130+) helpers ``` @@ -46,11 +35,11 @@ var helpers = require('handlebars-helpers')(); Helper collections are exposed as getters, so only the helpers you want will be required and loaded. ```js -var helpers = require('handlebars-helpers'); +var helpers = require('@budibase/handlebars-helpers'); var math = helpers.math(); //=> only the `math` helpers -var helpers = require('handlebars-helpers'); +var helpers = require('@budibase/handlebars-helpers'); var array = helpers.array(); //=> only the `collections` helpers ``` @@ -60,7 +49,7 @@ var array = helpers.array(); Helper collections are exposed as getters, so only the helpers you want will be required and loaded. ```js -var helpers = require('handlebars-helpers')(['math', 'string']); +var helpers = require('@budibase/handlebars-helpers')(['math', 'string']); //=> only the `math` and `string` helpers ``` @@ -68,7 +57,7 @@ var helpers = require('handlebars-helpers')(['math', 'string']); ```js var handlebars = require('handlebars'); -var helpers = require('handlebars-helpers')({ +var helpers = require('@budibase/handlebars-helpers')({ handlebars: handlebars }); @@ -88,13 +77,9 @@ Currently **189 helpers** in **20 categories**: * **[code](#code)** ([code](lib/code.js) | [unit tests](test/code.js)) * **[collection](#collection)** ([code](lib/collection.js) | [unit tests](test/collection.js)) * **[comparison](#comparison)** ([code](lib/comparison.js) | [unit tests](test/comparison.js)) -* **[date](#date)** ([code](lib/date.js) | [unit tests](test/date.js)) -* **[fs](#fs)** ([code](lib/fs.js) | [unit tests](test/fs.js)) * **[html](#html)** ([code](lib/html.js) | [unit tests](test/html.js)) * **[i18n](#i18n)** ([code](lib/i18n.js) | [unit tests](test/i18n.js)) * **[inflection](#inflection)** ([code](lib/inflection.js) | [unit tests](test/inflection.js)) -* **[logging](#logging)** ([code](lib/logging.js) | [unit tests](test/logging.js)) -* **[markdown](#markdown)** ([code](lib/markdown.js) | [unit tests](test/markdown.js)) * **[match](#match)** ([code](lib/match.js) | [unit tests](test/match.js)) * **[math](#math)** ([code](lib/math.js) | [unit tests](test/math.js)) * **[misc](#misc)** ([code](lib/misc.js) | [unit tests](test/misc.js)) @@ -185,22 +170,6 @@ Visit the: [code](lib/comparison.js) | [unit tests](test/comparison.js) | [issue * **[unlessGteq](#unlessGteq)** ([code](lib/comparison.js#L578) | [tests](test/comparison.js#L589)) * **[unlessLteq](#unlessLteq)** ([code](lib/comparison.js#L598) | [tests](test/comparison.js#L604)) -### [date helpers](#date) - -Visit the: [code](lib/date.js) | [unit tests](test/date.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+date+helpers)) - -* **[year](#year)** ([code](lib/date.js#L15) | [no tests]) -* **[date](#date)** ([code](lib/date.js#Lundefined) | [no tests]) -* **[moment](#moment)** ([code](lib/date.js#L24) | [no tests]) - -### [fs helpers](#fs) - -Visit the: [code](lib/fs.js) | [unit tests](test/fs.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+fs+helpers)) - -* **[fileSize](#fileSize)** ([code](lib/fs.js#L14) | [no tests]) -* **[read](#read)** ([code](lib/fs.js#L29) | [tests](test/fs.js#L16)) -* **[readdir](#readdir)** ([code](lib/fs.js#L42) | [tests](test/fs.js#L23)) - ### [html helpers](#html) Visit the: [code](lib/html.js) | [unit tests](test/html.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+html+helpers)) @@ -226,29 +195,6 @@ Visit the: [code](lib/inflection.js) | [unit tests](test/inflection.js) | [issue * **[inflect](#inflect)** ([code](lib/inflection.js#L30) | [tests](test/inflection.js#L9)) * **[ordinalize](#ordinalize)** ([code](lib/inflection.js#L58) | [tests](test/inflection.js#L22)) -### [logging helpers](#logging) - -Visit the: [code](lib/logging.js) | [unit tests](test/logging.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+logging+helpers)) - -* **[log](#log)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[ok](#ok)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[success](#success)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[info](#info)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[warning](#warning)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[warn](#warn)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[error](#error)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[danger](#danger)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[bold](#bold)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[_debug](#_debug)** ([code](lib/logging.js#Lundefined) | [no tests]) -* **[_inspect](#_inspect)** ([code](lib/logging.js#Lundefined) | [no tests]) - -### [markdown helpers](#markdown) - -Visit the: [code](lib/markdown.js) | [unit tests](test/markdown.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+markdown+helpers)) - -* **[markdown](#markdown)** ([code](lib/markdown.js#Lundefined) | [tests](test/markdown.js#L10)) -* **[md](#md)** ([code](lib/markdown.js#L55) | [tests](test/markdown.js#L18)) - ### [match helpers](#match) Visit the: [code](lib/match.js) | [unit tests](test/match.js) | [issues](https://github.com/helpers/handlebars-helpers/issues?utf8=%E2%9C%93&q=is%3Aissue+is%3Aopen+match+helpers)) @@ -276,7 +222,6 @@ Visit the: [code](lib/math.js) | [unit tests](test/math.js) | [issues](https://g * **[round](#round)** ([code](lib/math.js#L224) | [tests](test/math.js#L69)) * **[subtract](#subtract)** ([code](lib/math.js#L241) | [tests](test/math.js#L76)) * **[sum](#sum)** ([code](lib/math.js#L263) | [tests](test/math.js#L83)) -* **[times](#times)** ([code](lib/math.js#L286) | [no tests]) ### [misc helpers](#misc) @@ -389,8 +334,6 @@ Visit the: [code](lib/url.js) | [unit tests](test/url.js) | [issues](https://git * **[encodeURI](#encodeURI)** ([code](lib/url.js#L19) | [tests](test/url.js#L31)) * **[escape](#escape)** ([code](lib/url.js#L34) | [no tests]) * **[decodeURI](#decodeURI)** ([code](lib/url.js#L48) | [tests](test/url.js#L38)) -* **[url_encode](#url_encode)** ([code](lib/url.js#L59) | [no tests]) -* **[url_decode](#url_decode)** ([code](lib/url.js#L68) | [no tests]) * **[urlResolve](#urlResolve)** ([code](lib/url.js#L82) | [tests](test/url.js#L11)) * **[urlParse](#urlParse)** ([code](lib/url.js#L94) | [tests](test/url.js#L45)) * **[stripQuerystring](#stripQuerystring)** ([code](lib/url.js#L106) | [tests](test/url.js#L24)) @@ -1389,51 +1332,6 @@ is less than or equal to `b`**. * `options` **{Object}**: Handlebars provided options object * `returns` **{String}**: Block, or inverse block if specified and falsey. -## date - -### [{{year}}](lib/date.js#L15) - -Get the current year. - -**Example** - -```handlebars -{{year}} - -``` - -### [{{moment}}](lib/date.js#L24) - -Use [moment](http://momentjs.com) as a helper. See [helper-date](https://github.com/helpers/helper-date) for more details. - -## fs - -### [{{read}}](lib/fs.js#L29) - -Read a file from the file system. This is useful in composing "include"-style helpers using sub-expressions. - -**Params** - -* `filepath` **{String}** -* `returns` **{String}** - -**Example** - -```handlebars -{{read "a/b/c.js"}} -{{someHelper (read "a/b/c.md")}} -``` - -### [{{readdir}}](lib/fs.js#L42) - -Return an array of files from the given -directory. - -**Params** - -* `directory` **{String}** -* `returns` **{Array}** - ## html ### [{{attr}}](lib/html.js#L23) @@ -1601,47 +1499,6 @@ Returns an ordinalized number as a string. ``` -## logging - -[logging-helpers](https://github.com/helpers/logging-helpers). - -## markdown - -### [{{markdown}}](lib/markdown.js#L28) - -Block helper that converts a string of inline markdown to HTML. - -**Params** - -* `context` **{Object}** -* `options` **{Object}** -* `returns` **{String}** - -**Example** - -```handlebars -{{#markdown}} -# Foo -{{/markdown}} - -``` - -### [{{md}}](lib/markdown.js#L55) - -Read a markdown file from the file system and inject its contents after converting it to HTML. - -**Params** - -* `context` **{Object}** -* `options` **{Object}** -* `returns` **{String}** - -**Example** - -```handlebars -{{md "foo/bar.md"}} -``` - ## match ### [{{match}}](lib/match.js#L23) @@ -1766,7 +1623,7 @@ Get the remainder of a division operation. ### [{{multiply}}](lib/math.js#L157) -Return the product of `a` times `b`. +Return the product of `a` multiply `b`. **Params** @@ -1837,10 +1694,6 @@ Returns the sum of all numbers in the given array. ``` -### [{{times}}](lib/math.js#L286) - -Multiply number `a` by number `b`. - **Params** * `a` **{Number}**: factor @@ -2506,9 +2359,9 @@ Truncates a string to the specified `length`, and appends it with an elipsis, ` **Example** ```handlebars -{{ellipsis (sanitize "foo bar baz"), 7}} +{{ellipsis (sanitize "foo bar baz") 7}} -{{ellipsis "foo bar baz", 7}} +{{ellipsis "foo bar baz" 7}} ``` @@ -2988,14 +2841,6 @@ Decode a Uniform Resource Identifier (URI) component. * `str` **{String}** * `returns` **{String}** -### [{{url_encode}}](lib/url.js#L59) - -Alias for [encodeURI](#encodeuri). - -### [{{url_decode}}](lib/url.js#L68) - -Alias for [decodeURI](#decodeuri). - ### [{{urlResolve}}](lib/url.js#L82) Take a base URL, and a href URL, and resolve them as a @@ -3079,218 +2924,6 @@ Generate a random number *** -## History - -## [v0.10.0](https://github.com/helpers/handlebars-helpers/compare/v0.9.0...v0.10.0) - 2017-11-17 - -**changes** - -* adds `unique` to array helpers -* updates `css` helper to ensure that path.join() is not called on an absolute URL. - -## [v0.9.0](https://github.com/helpers/handlebars-helpers/compare/v0.8.4...v0.9.0) - 2017-07-03 - -**changes** - -* all unit tests now use assert instead of should -* remove `fileSize` helper in favor of new `bytes` helper, which does the same thing, but returns `B` instead of `byte` or `bytes`. -* JSONParse helper is no longer a block helper. It now returns an object, which can be used as a subexpression to achieve the same behavior as before. -* adds better error handling for path helpers, since node.js errors are terrible. We have a better way to handle errors that will be implemented in a near future release. -* adds inline helper support to `isEmpty`, so it can now be used as an inline or block helper -* adds `raw` helper -* adds regex helpers -* adds inline helper support to most of the comparison helpers, so they can now be used as inline or block helpers -* adds `pluck` helper to array helpers -* adds `prepend` and `append` helpers to string helpers -* adds `isTruthy` and `isFalsey` comparison helpers -* adds `escape` and `url_encode` and `url_decode` URL helpers -* adds `attr` helper to html helpers -* adds `year` helper to date helpers -* adds `typeOf` and `frame` helpers to misc helpers -* adds `abs`, `minus`, `modulo`, `plus`, `times` to math helpers -* moves `ellipsis` helper from `html` helpers to string helpers -* moves `truncate` helper from `html` helpers to string helpers -* moves `reverse` helper from `string` helpers to array helpers -* differentiate `eq` and `is` helpers so that `eq` is strict equality and `is` is not -* removes `mm` helper, use `match` instead - -## [v0.8.4](https://github.com/helpers/handlebars-helpers/compare/v0.8.3...v0.8.4) - 2017-07-03 - -**changes** - -* removes strlen helper in favor of fixing the length helper - -## [v0.8.3](https://github.com/helpers/handlebars-helpers/compare/v0.8.2...v0.8.3) - 2017-07-03 - -**changes** - -* adds strlen helper -* adds itemAt helper -* clean up code comments for array helpers - -## [v0.8.2](https://github.com/helpers/handlebars-helpers/compare/v0.8.1...v0.8.2) - 2017-03-30 - -**changes** - -* documentation updates -* fixes md helper to use sync by default - -## [v0.8.1](https://github.com/helpers/handlebars-helpers/compare/v0.8.0...v0.8.1) - 2017-03-30 - -**changes** - -* fixes sorting in withSort helper. see https://github.com/helpers/handlebars-helpers/pull/245 -* adds toPath helper -* handle null inputs in number helpers -* adds stripProtocol helper - -## [v0.8.0](https://github.com/helpers/handlebars-helpers/compare/v0.7.6...v0.8.0) - 2017-01-25 - -**changes** - -* handle string arguments in list helpers -* adds JSONParse helper as an alias for parseJSON - -## [v0.7.6](https://github.com/helpers/handlebars-helpers/compare/v0.7.0...v0.7.6) - 2017-01-08 - -**changes** - -* fixes markdown helpers. see https://github.com/helpers/handlebars-helpers/pull/226 -* documentation improvements and other minor fixes - -## [v0.7.0](https://github.com/helpers/handlebars-helpers/compare/v0.6.0...v0.7.0) - 2016-07-16 - -**changes** - -* The [or](#or) helper can now take a variable number of arguments - -## [v0.6.0](https://github.com/helpers/handlebars-helpers/compare/v0.3.3...v0.6.0) - 2016-05-13 - -**changes** - -* the main export is now a function that takes a name or array of names of helper types to load. Example `helpers(['string', 'array'])` will load only the `string` and `array` helpers -* helper types can alternatively be accessed as methods. example - `helpers.path()` will return all of the path helpers. -* handlebars may be provided by the user. if not provided it will fall back to the `handlebars-helpers` handlebars -* helpers are now as generic as possible, with little to no code related to assemble, grunt, etc. -* helpers are lazy-loaded using getters for improved performance -* Once tests are added for the `md` and `markdown` helpers, we'll have 100% unit test coverage on helpers - -## [v0.3.3](https://github.com/helpers/handlebars-helpers/compare/v0.3.2...v0.3.3) - 2013-09-03 - -**changes** - -* Adds fileSize helper. -* Adds startsWith helper. - -## [v0.3.2](https://github.com/helpers/handlebars-helpers/compare/v0.3.0...v0.3.2) - 2013-08-20 - -**changes** - -* Adds glob helper. - -## [v0.3.0](https://github.com/helpers/handlebars-helpers/compare/v0.2.4...v0.3.0) - 2013-07-30 - -**changes** - -* The project has been refactored, cleaned up, and full documentation has bee put up at http://assemble.io - -## [v0.2.4](https://github.com/helpers/handlebars-helpers/compare/v0.2.3...v0.2.4) - 2013-05-11 - -**changes** - -* Adding object globbing utility functions to be used in helpers later. - -## [v0.2.3](https://github.com/helpers/handlebars-helpers/compare/v0.2.0...v0.2.3) - 2013-05-11 - -**changes** - -* File globbing added to some helpers. Including md and some file helpers. - -## [v0.2.0](https://github.com/helpers/handlebars-helpers/compare/v0.1.32...v0.2.0) - 2013-05-07 - -**changes** - -* A bunch of new tests for markdown and special helpers. -* Refactored most of the rest of the helpers to separate functions from Handlebars registration. - -## [v0.1.32](https://github.com/helpers/handlebars-helpers/compare/v0.1.31...v0.1.32) - 2013-05-02 - -**changes** - -* Updates utils and a number of helpers, including value, property, and stringify. - -## [v0.1.31](https://github.com/helpers/handlebars-helpers/compare/v0.1.30...v0.1.31) - 2013-04-21 - -**changes** - -* Fixes relative helper - -## [v0.1.30](https://github.com/helpers/handlebars-helpers/compare/v0.1.25...v0.1.30) - 2013-04-20 - -**changes** - -* Refactoring helpers-collection module to separate the functions from the Handlebars helper registration process. - -## [v0.1.25](https://github.com/helpers/handlebars-helpers/compare/v0.1.21...v0.1.25) - 2013-04-16 - -**changes** - -* Adding defineSection and renderSection helpers to try to get sections populated in a layout from the page. - -## [v0.1.21](https://github.com/helpers/handlebars-helpers/compare/v0.1.20...v0.1.21) - 2013-04-07 - -**changes** - -* Add markdown helpers back, add more tests. - -## [v0.1.20](https://github.com/helpers/handlebars-helpers/compare/v0.1.11...v0.1.20) - 2013-04-06 - -**changes** - -* Generalized helpers structure, externalized utilities. - -## [v0.1.11](https://github.com/helpers/handlebars-helpers/compare/v0.1.10...v0.1.11) - 2013-04-05 - -**changes** - -* New authors and gist helpers, general cleanup and new tests. - -## [v0.1.10](https://github.com/helpers/handlebars-helpers/compare/v0.1.8...v0.1.10) - 2013-04-04 - -**changes** - -* Externalized utility javascript from helpers.js - -## [v0.1.8](https://github.com/helpers/handlebars-helpers/compare/v0.1.7...v0.1.8) - 2013-03-28 - -**changes** - -* Gruntfile updated with mocha tests for 71 helpers, bug fixes. - -## [v0.1.7](https://github.com/helpers/handlebars-helpers/compare/v0.1.3...v0.1.7) - 2013-03-18 - -**changes** - -* New path helper 'relative', for resolving relative path from one absolute path to another. - -## [v0.1.3](https://github.com/helpers/handlebars-helpers/compare/v0.1.2...v0.1.3) - 2013-03-16 - -**changes** - -* New helpers, 'formatPhoneNumber' and 'eachProperty' - -## [v0.1.2](https://github.com/helpers/handlebars-helpers/compare/v0.1.0...v0.1.2) - 2013-03-15 - -**changes** - -* Update README.md with documentation, examples. - -## [v0.1.0] - 2013-03-06 - -**changes** - -* First commit. - ## About ### Related projects @@ -3345,4 +2978,4 @@ Released under the [MIT License](LICENSE). *** -_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 17, 2017._ \ No newline at end of file +_This file was generated by [verb-generate-readme](https://github.com/verbose/verb-generate-readme), v0.6.0, on November 17, 2017._ diff --git a/appveyor.yml b/appveyor.yml deleted file mode 100644 index ebbad0a7..00000000 --- a/appveyor.yml +++ /dev/null @@ -1,27 +0,0 @@ -# Test against this version of Node.js -environment: - matrix: - # node.js - - nodejs_version: "8.0" - - nodejs_version: "7.0" - - nodejs_version: "6.0" - - nodejs_version: "5.0" - -# Install scripts. (runs after repo cloning) -install: - # Get the latest stable version of Node.js or io.js - - ps: Install-Product node $env:nodejs_version - # install modules - - npm install - - npm install -g gulp-cli - -# Post-install test scripts. -test_script: - # Output useful info for debugging. - - node --version - - npm --version - # run tests - - gulp - -# Don't actually build. -build: off diff --git a/bower.json b/bower.json deleted file mode 100644 index 804a40e6..00000000 --- a/bower.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "name": "handlebars-helpers", - "description": "More than 130 Handlebars helpers in ~20 categories. Helpers can be used with Assemble, Generate, Verb, Ghost, gulp-handlebars, grunt-handlebars, consolidate, or any node.js/Handlebars project.", - "version": "0.9.8", - "homepage": "https://github.com/helpers/handlebars-helpers", - "authors": [ - "Brian Woodward (https://github.com/doowb)", - "Jon Schlinkert (https://github.com/jonschlinkert)" - ], - "maintainers": [ - "Brian Woodward (https://github.com/doowb)", - "Jon Schlinkert (https://github.com/jonschlinkert)" - ], - "repository": "helpers/handlebars-helpers", - "bugs": { - "url": "https://github.com/helpers/handlebars-helpers/issues" - }, - "license": "MIT", - "files": [ - "index.js", - "lib" - ], - "main": [ - "index.js" - ], - "dependencies": { - "arr-flatten": "^1.1.0", - "array-sort": "^0.1.4", - "create-frame": "^1.0.0", - "define-property": "^1.0.0", - "falsey": "^0.3.2", - "for-in": "^1.0.2", - "for-own": "^1.0.0", - "get-object": "^0.2.0", - "get-value": "^2.0.6", - "handlebars": "^4.0.11", - "handlebars-helper-create-frame": "^0.1.0", - "handlebars-utils": "^1.0.6", - "has-value": "^1.0.0", - "helper-date": "^1.0.1", - "helper-markdown": "^1.0.0", - "helper-md": "^0.2.2", - "html-tag": "^2.0.0", - "is-even": "^1.0.0", - "is-glob": "^4.0.0", - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "lazy-cache": "^2.0.2", - "logging-helpers": "^1.0.0", - "micromatch": "^3.1.4", - "relative": "^3.0.2", - "striptags": "^3.1.0", - "to-gfm-code-block": "^0.1.1", - "year": "^0.2.1" - }, - "devDependencies": { - "engine-handlebars": "^0.8.2", - "fs-exists-sync": "^0.1.0", - "global-modules": "^1.0.0", - "gulp": "^3.9.1", - "gulp-eslint": "^4.0.0", - "gulp-format-md": "^1.0.0", - "gulp-istanbul": "^1.1.2", - "gulp-mocha": "^3.0.1", - "gulp-unused": "^0.2.1", - "helper-changelog": "^0.3.0", - "helper-coverage": "^0.1.3", - "is-valid-app": "^0.3.0", - "js-yaml": "^3.10.0", - "markdown-link": "^0.1.1", - "mocha": "^3.5.2", - "template-helpers": "^0.6.7", - "templates": "^1.2.9", - "through2": "^2.0.3", - "verb-generate-readme": "^0.6.0", - "vinyl": "^2.1.0" - }, - "keywords": [ - "array", - "assemble", - "collection", - "comparison", - "date", - "handlebars", - "helper", - "html", - "i18n", - "inflection", - "log", - "logging", - "markdown", - "math", - "number", - "object", - "path", - "repeat", - "string", - "template", - "time", - "url", - "util", - "utility" - ], - "ignore": [ - "actual", - "bower_components", - "fixtures", - "node_modules", - "temp", - "test", - "test.js", - "tmp" - ], - "contributors": [ - "Adrián Mugnolo (https://github.com/xymbol)", - "Brian Woodward (https://twitter.com/doowb)", - "Dan Gorby (https://plus.google.com/+GreenRaccoon23)", - "Foundy (http://foundy.io)", - "Hariadi Hinta (http://www.hariadi.org)", - "Jan Stola (https://github.com/iamstolis)", - "Jocelyn Badgley (http://www.chipersoft.com)", - "Jon Schlinkert (http://twitter.com/jonschlinkert)", - "Laurent Goderre (https://github.com/LaurentGoderre)", - "Liam Moat (http://www.liammoat.com)", - "Makoto Tateno (https://github.com/makotot)", - "Mikko Tapionlinna (http://mikko.tapionlinna.fi)", - "Oleg Orlov (https://github.com/efender)", - "Paul Welsh (paulwelsh.info)", - "Rob (https://github.com/robsilva)", - "Stephen Way (http://stephenway.net)" - ], - "lintDeps": { - "devDependencies": { - "files": { - "patterns": [ - "test/integration/*.js", - "test/support/*.js", - "test/utils/*.js" - ] - } - } - } -} \ No newline at end of file diff --git a/gulpfile.js b/gulpfile.js index cb20c940..bc667f35 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,38 +1,10 @@ 'use strict'; var gulp = require('gulp'); -var mocha = require('gulp-mocha'); -var istanbul = require('gulp-istanbul'); -var eslint = require('gulp-eslint'); var unused = require('gulp-unused'); -gulp.task('coverage', ['eslint'], function() { - return gulp.src(['index.js', 'lib/**/*.js']) - .pipe(istanbul({includeUntested: true})) - .pipe(istanbul.hookRequire()); -}); - -gulp.task('mocha', ['coverage'], function() { - return gulp.src('test/{integration/,}*.js') - .pipe(mocha({reporter: 'spec'})) - .pipe(istanbul.writeReports()) - .pipe(istanbul.writeReports({ - reporters: [ 'text', 'text-summary' ], - reportOpts: {dir: 'coverage', file: 'summary.txt'} - })); -}); - -gulp.task('eslint', function() { - return gulp.src(['*.js', 'lib/**/*.js', 'test/*.js']) - .pipe(eslint()) - .pipe(eslint.format()) - .pipe(eslint.failAfterError()); -}); - gulp.task('unused', function() { var utils = require('./lib/utils'); return gulp.src(['index.js', 'lib/**/*.js']) .pipe(unused({keys: Object.keys(utils)})); }); - -gulp.task('default', ['mocha']); diff --git a/index.js b/index.js index 4ede8993..e527003a 100644 --- a/index.js +++ b/index.js @@ -7,8 +7,6 @@ 'use strict'; -var forIn = require('for-in'); -var define = require('define-property'); var lib = require('./lib/'); /** @@ -25,16 +23,17 @@ module.exports = function helpers(groups, options) { options = options || {}; var hbs = options.handlebars || options.hbs || require('handlebars'); - define(module.exports, 'handlebars', hbs); + module.exports.handlebars = hbs; if (groups) { groups.forEach(function(key) { hbs.registerHelper(lib[key]); }); } else { - forIn(lib, function(group, key) { + for (const key in lib) { + const group = lib[key]; hbs.registerHelper(group); - }); + } } return hbs.helpers; @@ -43,16 +42,17 @@ module.exports = function helpers(groups, options) { /** * Expose helper groups */ +for (const key in lib) { + const group = lib[key]; -forIn(lib, function(group, key) { - define(module.exports, key, function(options) { + module.exports[key] = function(options) { options = options || {}; var hbs = options.handlebars || options.hbs || require('handlebars'); - define(module.exports, 'handlebars', hbs); + module.exports.handlebars = hbs; hbs.registerHelper(group); - return hbs.helpers; - }); -}); + return group; + }; +} /** * Expose `utils` diff --git a/lib/array.js b/lib/array.js index 1e0fc527..db4b1556 100644 --- a/lib/array.js +++ b/lib/array.js @@ -1,8 +1,17 @@ 'use strict'; -var util = require('handlebars-utils'); -var utils = require('./utils'); +var util = { + isUndefined: require('./utils/isUndefined'), + result: require('./utils/result'), + value: require('./utils/value'), + indexOf: require('./utils/indexOf'), + isString: require('./utils/isString'), + isOptions: require('./utils/isOptions'), + isObject: require('./utils/isObject') +}; var helpers = module.exports; +const getValue = require('get-value'); +const createFrame = require('./utils/createFrame'); /** * Returns all of the items in an array after the specified index. @@ -11,32 +20,39 @@ var helpers = module.exports; * ```handlebars * * {{after array 1}} - * + * * ``` * @param {Array} `array` Collection * @param {Number} `n` Starting index (number of items to exclude) * @return {Array} Array exluding `n` items. * @api public + * @example {{ after ['a', 'b', 'c', 'd'] 2}} -> ['c', 'd'] */ helpers.after = function(array, n) { if (util.isUndefined(array)) return ''; - return array.slice(n); + array = util.result(array); + if (Array.isArray(array)) { + return array.slice(n); + } + return ''; }; /** * Cast the given `value` to an array. * * ```handlebars - * {{arrayify "foo"}} - * + * {{arrayify 'foo'}} + * * ``` * @param {any} `value` * @return {Array} * @api public + * @example {{ arrayify 'foo' }} -> ['foo'] */ helpers.arrayify = function(value) { + if (util.isUndefined(value)) return []; return value ? (Array.isArray(value) ? value : [value]) : []; }; @@ -47,17 +63,22 @@ helpers.arrayify = function(value) { * ```handlebars * * {{before array 2}} - * + * * ``` * @param {Array} `array` * @param {Number} `n` * @return {Array} Array excluding items after the given number. * @api public + * @example {{ before ['a', 'b', 'c', 'd'] 3}} -> ['a', 'b'] */ helpers.before = function(array, n) { if (util.isUndefined(array)) return ''; - return array.slice(0, -n); + array = util.result(array); + if (Array.isArray(array)) { + return array.slice(0, n - 1); + } + return ''; }; /** @@ -72,12 +93,17 @@ helpers.before = function(array, n) { * @return {String} * @block * @api public + * @example {{#eachIndex [1, 2, 3]}} {{item}} is {{index}} {{/eachIndex}} -> ' 1 is 0 2 is 1 3 is 2 ' */ helpers.eachIndex = function(array, options) { var result = ''; - for (var i = 0; i < array.length; i++) { - result += options.fn({item: array[i], index: i}); + if (util.isUndefined(array)) return ''; + array = util.result(array); + if (Array.isArray(array)) { + for (var i = 0; i < array.length; i++) { + result += options.fn({ item: array[i], index: i }); + } } return result; }; @@ -88,7 +114,7 @@ helpers.eachIndex = function(array, options) { * * ```handlebars * - * {{#filter array "foo"}}AAA{{else}}BBB{{/filter}} + * {{#filter array 'foo'}}AAA{{else}}BBB{{/filter}} * * ``` * @param {Array} `array` @@ -97,31 +123,35 @@ helpers.eachIndex = function(array, options) { * @return {String} * @block * @api public + * @example {{#filter [1, 2, 3] 2}}2 Found{{else}}2 not found{{/filter}} -> 2 Found */ helpers.filter = function(array, value, options) { - var content = ''; - var results = []; - - // filter on a specific property - var prop = options.hash && (options.hash.property || options.hash.prop); - if (prop) { - results = array.filter(function(val) { - return value === utils.get(val, prop); - }); - } else { - - // filter on a string value - results = array.filter(function(v) { - return value === v; - }); - } + if (util.isUndefined(array)) return options.inverse(this); + array = util.result(array); + if (Array.isArray(array)) { + var content = ''; + var results = []; + + // filter on a specific property + var prop = options.hash && (options.hash.property || options.hash.prop); + if (prop) { + results = array.filter(function(val) { + return value === getValue(val, prop); + }); + } else { + // filter on a string value + results = array.filter(function(v) { + return value === v; + }); + } - if (results && results.length > 0) { - for (var i = 0; i < results.length; i++) { - content += options.fn(results[i]); + if (results && results.length > 0) { + for (var i = 0; i < results.length; i++) { + content += options.fn(results[i]); + } + return content; } - return content; } return options.inverse(this); }; @@ -130,21 +160,26 @@ helpers.filter = function(array, value, options) { * Returns the first item, or first `n` items of an array. * * ```handlebars - * {{first "['a', 'b', 'c', 'd', 'e']" 2}} - * + * {{first '['a', 'b', 'c', 'd', 'e']' 2}} + * * ``` * @param {Array} `array` * @param {Number} `n` Number of items to return, starting at `0`. * @return {Array} * @api public + * @example {{first [1, 2, 3, 4] 2}} -> 1,2 */ helpers.first = function(array, n) { - if (util.isUndefined(array)) return ''; - if (!utils.isNumber(n)) { - return array[0]; + if (util.isUndefined(array)) return []; + array = util.result(array); + if (Array.isArray(array)) { + if (isNaN(n)) { + return array[0]; + } + return array.slice(0, n); } - return array.slice(0, n); + return []; }; /** @@ -169,34 +204,41 @@ helpers.first = function(array, n) { * ] --> * * {{#forEach accounts}} - * + * * {{ name }} * {{#unless isLast}}, {{/unless}} * {{/forEach}} * ``` * @source * @param {Array} `array` + * @param {Object} `options` * @return {String} * @block * @api public + * @example {{#forEach [{ 'name': 'John' }] }} {{ name }} {{/forEach}} -> ' John ' */ helpers.forEach = function(array, options) { - var data = utils.createFrame(options, options.hash); - var len = array.length; - var buffer = ''; - var i = -1; - - while (++i < len) { - var item = array[i]; - data.index = i; - item.index = i + 1; - item.total = len; - item.isFirst = i === 0; - item.isLast = i === (len - 1); - buffer += options.fn(item, {data: data}); + if (util.isUndefined(array)) return options.inverse(this); + array = util.result(array); + if (Array.isArray(array)) { + var data = createFrame(options, options.hash); + var len = array.length; + var buffer = ''; + var i = -1; + + while (++i < len) { + var item = array[i]; + data.index = i; + item.index = i + 1; + item.total = len; + item.isFirst = i === 0; + item.isLast = i === len - 1; + buffer += options.fn(item, { data: data }); + } + return buffer; } - return buffer; + return options.inverse(this); }; /** @@ -206,7 +248,7 @@ helpers.forEach = function(array, options) { * * ```handlebars * - * {{#inArray array "d"}} + * {{#inArray array 'd'}} * foo * {{else}} * bar @@ -219,17 +261,23 @@ helpers.forEach = function(array, options) { * @return {String} * @block * @api public + * @example {{#inArray [1, 2, 3] 2}} 2 exists {{else}} 2 does not exist {{/inArray}} -> ' 2 exists ' */ helpers.inArray = function(array, value, options) { - return util.value(util.indexOf(array, value) > -1, this, options); + if (util.isUndefined(array)) return ''; + array = util.result(array); + if (Array.isArray(array)) { + return util.value(util.indexOf(array, value) > -1, this, options); + } + return ''; }; /** * Returns true if `value` is an es5 array. * * ```handlebars - * {{isArray "abc"}} + * {{isArray 'abc'}} * * * @@ -239,6 +287,7 @@ helpers.inArray = function(array, value, options) { * @param {any} `value` The value to test. * @return {Boolean} * @api public + * @example {{isArray [1, 2]}} -> true */ helpers.isArray = function(value) { @@ -256,14 +305,15 @@ helpers.isArray = function(value) { * @param {Array} `array` * @param {Number} `idx` * @return {any} `value` - * @block * @api public + * @example {{itemAt [1, 2, 3] 1}} -> 2 */ helpers.itemAt = function(array, idx) { + if (util.isUndefined(array)) return null; array = util.result(array); if (Array.isArray(array)) { - idx = utils.isNumber(idx) ? +idx : 0; + idx = !isNaN(idx) ? +idx : 0; if (idx < 0) { return array[array.length + idx]; } @@ -271,6 +321,7 @@ helpers.itemAt = function(array, idx) { return array[idx]; } } + return null; }; /** @@ -289,13 +340,18 @@ helpers.itemAt = function(array, idx) { * @param {String} `separator` The separator to use. Defaults to `, `. * @return {String} * @api public + * @example {{join [1, 2, 3]}} -> 1, 2, 3 */ helpers.join = function(array, separator) { + if (util.isUndefined(array)) return ''; if (typeof array === 'string') return array; - if (!Array.isArray(array)) return ''; - separator = util.isString(separator) ? separator : ', '; - return array.join(separator); + array = util.result(array); + if (Array.isArray(array)) { + separator = util.isString(separator) ? separator : ', '; + return array.join(separator); + } + return ''; }; /** @@ -304,10 +360,11 @@ helpers.join = function(array, separator) { * * @param {Array|String} `value` * @param {Number} `length` - * @param {Object} `options` * @return {String} * @block + * @inline * @api public + * @example {{equalsLength [1, 2, 3] 3}} -> true */ helpers.equalsLength = function(value, length, options) { @@ -316,10 +373,7 @@ helpers.equalsLength = function(value, length, options) { length = 0; } - var len = 0; - if (typeof value === 'string' || Array.isArray(value)) { - len = value.length; - } + var len = helpers.length(value); return util.value(len === length, this, options); }; @@ -344,23 +398,25 @@ helpers.equalsLength = function(value, length, options) { * @param {Number} `n` Number of items to return from the end of the array. * @return {Array} * @api public + * @example {{last [1, 2, 3]}} -> 3 */ -helpers.last = function(value, n) { - if (!Array.isArray(value) && typeof value !== 'string') { +helpers.last = function(array, n) { + if (util.isUndefined(array)) return ''; + if (!Array.isArray(array) && typeof value !== 'string') { return ''; } - if (!utils.isNumber(n)) { - return value[value.length - 1]; + if (isNaN(n)) { + return array[array.length - 1]; } - return value.slice(-Math.abs(n)); + return array.slice(-Math.abs(n)); }; /** * Returns the length of the given string or array. * * ```handlebars - * {{length '["a", "b", "c"]'}} + * {{length '['a', 'b', 'c']'}} * * * @@ -374,14 +430,24 @@ helpers.last = function(value, n) { * @param {Array|Object|String} `value` * @return {Number} The length of the value. * @api public + * @example {{length [1, 2, 3]}} -> 3 */ -helpers.length = function(value) { - if (util.isObject(value) && !util.isOptions(value)) { - value = Object.keys(value); +helpers.length = function(array) { + if (util.isUndefined(array)) return 0; + if (util.isObject(array) && !util.isOptions(array)) { + array = Object.keys(array); + } + // this is an inline array, split it + if ( + typeof array === 'string' && + array.startsWith('[') && + array.endsWith(']') + ) { + return array.split(',').length; } - if (typeof value === 'string' || Array.isArray(value)) { - return value.length; + if (typeof array === 'string' || Array.isArray(array)) { + return array.length; } return 0; }; @@ -399,19 +465,21 @@ helpers.lengthEqual = helpers.equalsLength; * element of the given `array`. For example, * * ```handlebars - * * {{map array double}} - * + * * ``` * * @param {Array} `array` * @param {Function} `fn` * @return {String} * @api public + * @example {{map [1, 2, 3] double}} -> [2, 4, 6] */ helpers.map = function(array, iter) { + if (util.isUndefined(array)) return ''; if (!Array.isArray(array)) return ''; var len = array.length; var res = new Array(len); @@ -433,25 +501,30 @@ helpers.map = function(array, iter) { * nested properties. * * ```handlebars - * // {{pluck items "data.title"}} - * + * // {{pluck items 'data.title'}} + * * ``` * @param {Array|Object} `collection` * @param {Function} `prop` * @return {String} * @api public + * @example {{pluck [{ 'name': 'Bob' }] 'name' }} -> ['Bob'] */ -helpers.pluck = function(arr, prop) { - if (util.isUndefined(arr)) return ''; - var res = []; - for (var i = 0; i < arr.length; i++) { - var val = utils.get(arr[i], prop); - if (typeof val !== 'undefined') { - res.push(val); +helpers.pluck = function(array, prop) { + if (util.isUndefined(array)) return ''; + array = util.result(array); + if (Array.isArray(array)) { + var res = []; + for (var i = 0; i < array.length; i++) { + var val = getValue(array[i], prop); + if (typeof val !== 'undefined') { + res.push(val); + } } + return res; } - return res; + return ''; }; /** @@ -468,16 +541,18 @@ helpers.pluck = function(arr, prop) { * @param {Array|String} `value` * @return {Array|String} Returns the reversed string or array. * @api public + * @example {{reverse [1, 2, 3]}} -> [3, 2, 1] */ - -helpers.reverse = function(val) { - if (Array.isArray(val)) { - val.reverse(); - return val; +helpers.reverse = function(array) { + if (util.isUndefined(array)) return ''; + array = util.result(array); + if (Array.isArray(array)) { + return [...array].reverse(); } - if (val && typeof val === 'string') { - return val.split('').reverse().join(''); + if (array && typeof array === 'string') { + return array.split('').reverse().join(''); } + return ''; }; /** @@ -499,9 +574,12 @@ helpers.reverse = function(val) { * @return {String} * @block * @api public + * @example {{#some [1, "b", 3] isString}} string found {{else}} No string found {{/some}} -> ' string found ' */ helpers.some = function(array, iter, options) { + if (util.isUndefined(array)) return options.inverse(this); + array = util.result(array); if (Array.isArray(array)) { for (var i = 0; i < array.length; i++) { if (iter(array[i], i, array)) { @@ -521,20 +599,25 @@ helpers.some = function(array, iter, options) { * ```handlebars * * {{sort array}} - * + * * ``` * * @param {Array} `array` the array to sort. * @param {String|Function} `key` The object key to sort by, or sorting function. * @api public + * @example {{ sort ['b', 'a', 'c'] }} -> ['a', 'b', 'c'] */ helpers.sort = function(array, options) { - if (!Array.isArray(array)) return ''; - if (utils.get(options, 'hash.reverse')) { - return array.sort().reverse(); + if (util.isUndefined(array)) return ''; + array = util.result(array); + if (Array.isArray(array)) { + if (getValue(options, 'hash.reverse')) { + return [...array].sort().reverse(); + } + return [...array].sort(); } - return array.sort(); + return ''; }; /** @@ -545,25 +628,35 @@ helpers.sort = function(array, options) { * * ```handlebars * - * {{sortBy array "a"}} - * + * {{sortBy array 'a'}} + * * ``` * * @param {Array} `array` the array to sort. * @param {String|Function} `props` One or more properties to sort by, or sorting functions to use. * @api public + * @example {{ sortBy [{'a': 'zzz'}, {'a': 'aaa'}] 'a' }} -> [{'a':'aaa'},{'a':'zzz'}] */ helpers.sortBy = function(array, prop, options) { - if (!Array.isArray(array)) return ''; - var args = [].slice.call(arguments); - // remove handlebars options - args.pop(); + if (util.isUndefined(array)) return ''; + array = util.result(array); + if (Array.isArray(array)) { + var args = [].slice.call(arguments); + // remove handlebars options + args.pop(); + + if (!util.isString(prop) && typeof prop !== 'function') { + return [...array].sort(); + } + + if (typeof prop === 'function') { + return [...array].sort(prop); + } - if (!util.isString(prop) && typeof prop !== 'function') { - return array.sort(); + return [...array].sort((a, b) => (a[prop] > b[prop] ? 1 : -1)); } - return utils.sortBy.apply(null, args); + return ''; }; /** @@ -575,7 +668,7 @@ helpers.sortBy = function(array, prop, options) { * {{#withAfter array 3}} * {{this}} * {{/withAfter}} - * + * * ``` * @param {Array} `array` * @param {Number} `idx` @@ -583,17 +676,22 @@ helpers.sortBy = function(array, prop, options) { * @return {Array} * @block * @api public + * @example {{#withAfter [1, 2, 3] 1 }} {{this}} {{/withAfter}} -> ' 2 3 ' */ helpers.withAfter = function(array, idx, options) { - if (!Array.isArray(array)) return ''; - array = array.slice(idx); - var result = ''; + if (util.isUndefined(array)) return ''; + array = util.result(array); + if (Array.isArray(array)) { + array = array.slice(idx); + var result = ''; - for (var i = 0; i < array.length; i++) { - result += options.fn(array[i]); + for (var i = 0; i < array.length; i++) { + result += options.fn(array[i]); + } + return result; } - return result; + return ''; }; /** @@ -613,17 +711,22 @@ helpers.withAfter = function(array, idx, options) { * @return {Array} * @block * @api public + * @example {{#withBefore [1, 2, 3] 2 }} {{this}} {{/withBefore}} -> ' 1 ' */ helpers.withBefore = function(array, idx, options) { - if (!Array.isArray(array)) return ''; - array = array.slice(0, -idx); - var result = ''; + if (util.isUndefined(array)) return ''; + array = util.result(array); + if (Array.isArray(array)) { + array = array.slice(0, -idx); + var result = ''; - for (var i = 0; i < array.length; i++) { - result += options.fn(array[i]); + for (var i = 0; i < array.length; i++) { + result += options.fn(array[i]); + } + return result; } - return result; + return ''; }; /** @@ -643,27 +746,30 @@ helpers.withBefore = function(array, idx, options) { * @return {String} * @block * @api public + * @example {{#withFirst [1, 2, 3] }}{{this}}{{/withFirst}} -> 1 */ helpers.withFirst = function(array, idx, options) { if (util.isUndefined(array)) return ''; array = util.result(array); + if (Array.isArray(array)) { + if (!util.isUndefined(idx)) { + idx = parseFloat(util.result(idx)); + } - if (!util.isUndefined(idx)) { - idx = parseFloat(util.result(idx)); - } - - if (util.isUndefined(idx)) { - options = idx; - return options.fn(array[0]); - } + if (util.isUndefined(idx)) { + options = idx; + return options.fn(array[0]); + } - array = array.slice(0, idx); - var result = ''; - for (var i = 0; i < array.length; i++) { - result += options.fn(array[i]); + array = array.slice(0, idx); + var result = ''; + for (var i = 0; i < array.length; i++) { + result += options.fn(array[i]); + } + return result; } - return result; + return ''; }; /** @@ -674,7 +780,7 @@ helpers.withFirst = function(array, idx, options) { * {{#withGroup array 4}} * {{#each this}} * {{.}} - * {{each}} + * {{/each}} *
* {{/withGroup}} * @@ -682,19 +788,22 @@ helpers.withFirst = function(array, idx, options) { * * ``` * @param {Array} `array` The array to iterate over - * @param {Number} `size` The desired length of each array "group" + * @param {Number} `size` The desired length of each array 'group' * @param {Object} `options` Handlebars options * @return {String} * @block * @api public - */ + * @example {{#withGroup [1, 2, 3, 4] 2}}{{#each this}}{{.}}{{/each}}
{{/withGroup}} -> 12
34
+ * */ helpers.withGroup = function(array, size, options) { + if (util.isUndefined(array)) return ''; var result = ''; + array = util.result(array); if (Array.isArray(array) && array.length > 0) { var subcontext = []; for (var i = 0; i < array.length; i++) { - if (i > 0 && (i % size) === 0) { + if (i > 0 && i % size === 0) { result += options.fn(subcontext); subcontext = []; } @@ -721,29 +830,32 @@ helpers.withGroup = function(array, size, options) { * @param {Object} `options` * @return {String} * @block - * @api public + * @example {{#withLast [1, 2, 3, 4]}}{{this}}{{/withLast}} -> 4 */ helpers.withLast = function(array, idx, options) { if (util.isUndefined(array)) return ''; array = util.result(array); + if (Array.isArray(array)) { + if (!util.isUndefined(idx)) { + idx = parseFloat(util.result(idx)); + } - if (!util.isUndefined(idx)) { - idx = parseFloat(util.result(idx)); - } - - if (util.isUndefined(idx)) { - options = idx; - return options.fn(array[array.length - 1]); - } + if (util.isUndefined(idx)) { + options = idx; + return options.fn(array[array.length - 1]); + } - array = array.slice(-idx); - var len = array.length, i = -1; - var result = ''; - while (++i < len) { - result += options.fn(array[i]); + array = array.slice(-idx); + var len = array.length, + i = -1; + var result = ''; + while (++i < len) { + result += options.fn(array[i]); + } + return result; } - return result; + return ''; }; /** @@ -757,66 +869,78 @@ helpers.withLast = function(array, idx, options) { * ``` * @param {Array} `array` * @param {String} `prop` - * @param {Object} `options` Specify `reverse="true"` to reverse the array. + * @param {Object} `options` Specify `reverse='true'` to reverse the array. * @return {String} * @block * @api public + * @example {{#withSort ['b', 'a', 'c']}}{{this}}{{/withSort}} -> abc */ helpers.withSort = function(array, prop, options) { if (util.isUndefined(array)) return ''; - var result = ''; + array = util.result(array); + if (Array.isArray(array)) { + var result = ''; - if (util.isUndefined(prop)) { - options = prop; + if (util.isUndefined(prop)) { + options = prop; - array = array.sort(); - if (utils.get(options, 'hash.reverse')) { - array = array.reverse(); - } + array = [...array].sort(); + if (getValue(options, 'hash.reverse')) { + array = array.reverse(); + } - for (var i = 0, len = array.length; i < len; i++) { - result += options.fn(array[i]); + for (var i = 0, len = array.length; i < len; i++) { + result += options.fn(array[i]); + } + return result; } - return result; - } - array.sort(function(a, b) { - a = utils.get(a, prop); - b = utils.get(b, prop); - return a > b ? 1 : (a < b ? -1 : 0); - }); + array = [...array].sort(function(a, b) { + a = getValue(a, prop); + b = getValue(b, prop); + return a > b ? 1 : a < b ? -1 : 0; + }); - if (utils.get(options, 'hash.reverse')) { - array = array.reverse(); - } + if (getValue(options, 'hash.reverse')) { + array = array.reverse(); + } - var alen = array.length, j = -1; - while (++j < alen) { - result += options.fn(array[j]); + var alen = array.length, + j = -1; + while (++j < alen) { + result += options.fn(array[j]); + } + return result; } - return result; + return ''; }; /** * Block helper that return an array with all duplicate * values removed. Best used along with a [each](#each) helper. * - * ```handlebars - * - * {{#each (unique array)}}{{.}}{{/each}} - * - * ``` + * ```handlebars + * + * {{#each (unique array)}}{{.}}{{/each}} + * + * ``` * @param {Array} `array` * @param {Object} `options` * @return {Array} + * @block * @api public + * @example {{#each (unique ['a', 'a', 'c', 'b', 'e', 'e']) }}{{.}}{{/each}} -> acbe */ helpers.unique = function(array, options) { if (util.isUndefined(array)) return ''; - return array.filter(function(item, index, arr) { - return arr.indexOf(item) === index; - }); + array = util.result(array); + if (Array.isArray(array)) { + return array.filter(function(item, index, arr) { + return arr.indexOf(item) === index; + }); + } + return ''; }; diff --git a/lib/code.js b/lib/code.js index b61111a1..d665c03b 100644 --- a/lib/code.js +++ b/lib/code.js @@ -2,7 +2,8 @@ var fs = require('fs'); var path = require('path'); -var utils = require('./utils'); +const codeBlock = require('to-gfm-code-block'); +const htmlTag = require('html-tag'); var helpers = module.exports; /** @@ -28,14 +29,14 @@ helpers.embed = function embed(filepath, ext) { // if the string is markdown, escape backticks code = code.split('`').join('`'); } - return utils.block(code, ext).trim() + '\n'; + return codeBlock(code, ext).trim() + '\n'; }; /** * Embed a GitHub Gist using only the id of the Gist * * ```handlebars - * {{gist "12345"}} + * {{gist '12345'}} * ``` * @param {String} `id` * @return {String} @@ -43,14 +44,14 @@ helpers.embed = function embed(filepath, ext) { */ helpers.gist = function(id) { - return utils.tag('script', {src: 'https://gist.github.com/' + id + '.js'}); + return htmlTag('script', {src: 'https://gist.github.com/' + id + '.js'}); }; /** * Generate the HTML for a jsFiddle link with the given `params` * * ```handlebars - * {{jsfiddle id="0dfk10ks" tabs="true"}} + * {{jsfiddle id='0dfk10ks' tabs='true'}} * ``` * @param {Object} `params` * @return {String} @@ -76,5 +77,5 @@ helpers.jsfiddle = function jsFiddle(options) { delete attr.tabs; delete attr.skin; delete attr.id; - return utils.tag('iframe', attr); + return htmlTag('iframe', attr); }; diff --git a/lib/collection.js b/lib/collection.js index b5648eeb..6cb87f1d 100644 --- a/lib/collection.js +++ b/lib/collection.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('handlebars-utils'); +var util = require('./utils/handlebarsUtils'); var object = require('./object'); var array = require('./array'); var forEach = array.forEach; diff --git a/lib/comparison.js b/lib/comparison.js index 0b404e9a..cad8c9a8 100644 --- a/lib/comparison.js +++ b/lib/comparison.js @@ -1,8 +1,17 @@ 'use strict'; var has = require('has-value'); -var util = require('handlebars-utils'); +var util = { + value: require('./utils/value'), + isOptions: require('./utils/isOptions'), + isString: require('./utils/isString'), + fn: require('./utils/fn'), + isObject: require('./utils/isObject'), + inverse: require('./utils/inverse') +}; var utils = require('./utils'); +const falsey = require('./utils/falsey'); +const isOdd = require('./utils/odd'); var helpers = module.exports; /** @@ -22,6 +31,7 @@ var helpers = module.exports; * @return {String} * @block * @api public + * @example {{#and great magnificent}}both{{else}}no{{/and}} -> no */ helpers.and = function() { @@ -46,12 +56,14 @@ helpers.and = function() { * optionally specify an inverse block to render when falsy. * * @param `a` - * @param `operator` The operator to use. Operators must be enclosed in quotes: `">"`, `"="`, `"<="`, and so on. + * @param `operator` The operator to use. Operators must be enclosed in quotes: `'>'`, `'='`, `'<='`, and so on. * @param `b` * @param {Object} `options` Handlebars provided options object * @return {String} Block, or if specified the inverse block is rendered if falsey. * @block + * @inline * @api public + * @example {{compare 10 '<' 5 }} -> false */ helpers.compare = function(a, operator, b, options) { @@ -91,7 +103,9 @@ helpers.compare = function(a, operator, b, options) { result = typeof a === b; break; default: { - throw new Error('helper {{compare}}: invalid operator: `' + operator + '`'); + throw new Error( + 'helper {{compare}}: invalid operator: `' + operator + '`' + ); } } @@ -107,7 +121,7 @@ helpers.compare = function(a, operator, b, options) { * * ```handlebars * - * {{#contains array "d"}} + * {{#contains array 'd'}} * This will not be rendered. * {{else}} * This will be rendered. @@ -119,6 +133,7 @@ helpers.compare = function(a, operator, b, options) { * @param {Object} `options` Handlebars provided options object. * @block * @api public + * @example {{#contains ['a', 'b', 'c'] 'd'}} This will not be rendered. {{else}} This will be rendered. {{/contains}} -> ' This will be rendered. ' */ helpers.contains = function(collection, value, startIndex, options) { @@ -131,13 +146,14 @@ helpers.contains = function(collection, value, startIndex, options) { }; /** - * Returns the first value that is not undefined, otherwise the "default" value is returned. + * Returns the first value that is not undefined, otherwise the 'default' value is returned. * * @param {any} `value` * @param {any} `defaultValue` * @return {String} * @alias .or * @api public + * @example {{default null null 'default'}} -> default */ helpers.default = function() { @@ -150,7 +166,7 @@ helpers.default = function() { /** * Block helper that renders a block if `a` is **equal to** `b`. * If an inverse block is specified it will be rendered when falsy. - * You may optionally use the `compare=""` hash argument for the + * You may optionally use the `compare=''` hash argument for the * second value. * * @param {String} `a` @@ -160,6 +176,7 @@ helpers.default = function() { * @alias is * @block * @api public + * @example {{#eq 3 3}}equal{{else}}not equal{{/eq}} -> equal */ helpers.eq = function(a, b, options) { @@ -174,7 +191,7 @@ helpers.eq = function(a, b, options) { * Block helper that renders a block if `a` is **greater than** `b`. * * If an inverse block is specified it will be rendered when falsy. - * You may optionally use the `compare=""` hash argument for the + * You may optionally use the `compare=''` hash argument for the * second value. * * @param {String} `a` @@ -183,6 +200,7 @@ helpers.eq = function(a, b, options) { * @return {String} Block, or inverse block if specified and falsey. * @block * @api public + * @example {{#gt 4 3}} greater than{{else}} not greater than{{/gt}} -> ' greater than' */ helpers.gt = function(a, b, options) { @@ -198,7 +216,7 @@ helpers.gt = function(a, b, options) { * equal to** `b`. * * If an inverse block is specified it will be rendered when falsy. - * You may optionally use the `compare=""` hash argument for the + * You may optionally use the `compare=''` hash argument for the * second value. * * @param {String} `a` @@ -207,6 +225,7 @@ helpers.gt = function(a, b, options) { * @return {String} Block, or inverse block if specified and falsey. * @block * @api public + * @example {{#gte 4 3}} greater than or equal{{else}} not greater than{{/gte}} -> ' greater than or equal' */ helpers.gte = function(a, b, options) { @@ -227,6 +246,7 @@ helpers.gte = function(a, b, options) { * @return {String} * @block * @api public + * @example {{#has 'foobar' 'foo'}}has it{{else}}doesn't{{/has}} -> has it */ helpers.has = function(value, pattern, options) { @@ -249,7 +269,10 @@ helpers.has = function(value, pattern, options) { return util.value(has(this, value), this, options); } - if ((Array.isArray(value) || util.isString(value)) && util.isString(pattern)) { + if ( + (Array.isArray(value) || util.isString(value)) && + util.isString(pattern) + ) { if (value.indexOf(pattern) > -1) { return util.fn(true, this, options); } @@ -269,10 +292,11 @@ helpers.has = function(value, pattern, options) { * @param {Options} `options` * @return {Boolean} * @api public + * @example {{isFalsey '' }} -> true */ helpers.isFalsey = function(val, options) { - return util.value(utils.falsey(val), this, options); + return util.value(falsey(val), this, options); }; /** @@ -284,10 +308,11 @@ helpers.isFalsey = function(val, options) { * @param {Options} `options` * @return {Boolean} * @api public + * @example {{isTruthy '12' }} -> true */ helpers.isTruthy = function(val, options) { - return util.value(!utils.falsey(val), this, options); + return util.value(!falsey(val), this, options); }; /** @@ -305,15 +330,16 @@ helpers.isTruthy = function(val, options) { * @return {String} Block, or inverse block if specified and falsey. * @block * @api public + * @example {{#ifEven 2}} even {{else}} odd {{/ifEven}} -> ' even ' */ helpers.ifEven = function(num, options) { - return util.value(utils.isEven(num), this, options); + return util.value(!isOdd(num), this, options); }; /** * Conditionally renders a block if the remainder is zero when - * `a` operand is divided by `b`. If an inverse block is specified + * `b` operand is divided by `a`. If an inverse block is specified * it will be rendered when the remainder is **not zero**. * * @param {Number} @@ -322,10 +348,11 @@ helpers.ifEven = function(num, options) { * @return {String} Block, or inverse block if specified and falsey. * @block * @api public + * @example {{#ifNth 2 10}}remainder{{else}}no remainder{{/ifNth}} -> remainder */ helpers.ifNth = function(a, b, options) { - var isNth = utils.isNumber(a) && utils.isNumber(b) && b % a === 0; + var isNth = !isNaN(a) && !isNaN(b) && b % a === 0; return util.value(isNth, this, options); }; @@ -345,10 +372,11 @@ helpers.ifNth = function(a, b, options) { * @return {String} Block, or inverse block if specified and falsey. * @block * @api public + * @example {{#ifOdd 3}}odd{{else}}even{{/ifOdd}} -> odd */ helpers.ifOdd = function(val, options) { - return util.value(!utils.isEven(val), this, options); + return util.value(isOdd(val), this, options); }; /** @@ -362,6 +390,7 @@ helpers.ifOdd = function(val, options) { * @return {String} * @block * @api public + * @example {{#is 3 3}} is {{else}} is not {{/is}} -> ' is ' */ helpers.is = function(a, b, options) { @@ -384,6 +413,7 @@ helpers.is = function(a, b, options) { * @return {String} * @block * @api public + * @example {{#isnt 3 3}} isnt {{else}} is {{/isnt}} -> ' is ' */ helpers.isnt = function(a, b, options) { @@ -398,7 +428,7 @@ helpers.isnt = function(a, b, options) { * Block helper that renders a block if `a` is **less than** `b`. * * If an inverse block is specified it will be rendered when falsy. - * You may optionally use the `compare=""` hash argument for the + * You may optionally use the `compare=''` hash argument for the * second value. * * @param {Object} `context` @@ -406,6 +436,7 @@ helpers.isnt = function(a, b, options) { * @return {String} Block, or inverse block if specified and falsey. * @block * @api public + * @example {{#lt 2 3}} less than {{else}} more than or equal {{/lt}} -> ' less than ' */ helpers.lt = function(a, b, options) { @@ -421,15 +452,16 @@ helpers.lt = function(a, b, options) { * equal to** `b`. * * If an inverse block is specified it will be rendered when falsy. - * You may optionally use the `compare=""` hash argument for the + * You may optionally use the `compare=''` hash argument for the * second value. * - * @param {Sring} `a` - * @param {Sring} `b` + * @param {String} `a` + * @param {String} `b` * @param {Object} `options` Handlebars provided options object * @return {String} Block, or inverse block if specified and falsey. * @block * @api public + * @example {{#lte 2 3}} less than or equal {{else}} more than {{/lte}} -> ' less than or equal ' */ helpers.lte = function(a, b, options) { @@ -451,6 +483,7 @@ helpers.lte = function(a, b, options) { * @return {String} Block, or inverse block if specified and falsey. * @block * @api public + * @example {{#neither null null}}both falsey{{else}}both not falsey{{/neither}} -> both falsey */ helpers.neither = function(a, b, options) { @@ -465,6 +498,7 @@ helpers.neither = function(a, b, options) { * @return {String} * @block * @api public + * @example {{#not undefined }}falsey{{else}}not falsey{{/not}} -> falsey */ helpers.not = function(val, options) { @@ -487,6 +521,7 @@ helpers.not = function(val, options) { * @return {String} Block, or inverse block if specified and falsey. * @block * @api public + * @example {{#or 1 2 undefined }} at least one truthy {{else}} all falsey {{/or}} -> ' at least one truthy ' */ helpers.or = function(/* any, any, ..., options */) { @@ -513,6 +548,7 @@ helpers.or = function(/* any, any, ..., options */) { * @return {String} Inverse block by default, or block if falsey. * @block * @api public + * @example {{#unlessEq 2 1 }} not equal {{else}} equal {{/unlessEq}} -> ' not equal ' */ helpers.unlessEq = function(a, b, options) { @@ -533,6 +569,7 @@ helpers.unlessEq = function(a, b, options) { * @return {String} Inverse block by default, or block if falsey. * @block * @api public + * @example {{#unlessGt 20 1 }} not greater than {{else}} greater than {{/unlessGt}} -> ' greater than ' */ helpers.unlessGt = function(a, b, options) { @@ -553,6 +590,7 @@ helpers.unlessGt = function(a, b, options) { * @return {String} Block, or inverse block if specified and falsey. * @block * @api public + * @example {{#unlessLt 20 1 }}greater than or equal{{else}}less than{{/unlessLt}} -> greater than or equal */ helpers.unlessLt = function(a, b, options) { @@ -573,6 +611,7 @@ helpers.unlessLt = function(a, b, options) { * @return {String} Block, or inverse block if specified and falsey. * @block * @api public + * @example {{#unlessGteq 20 1 }} less than {{else}}greater than or equal to{{/unlessGteq}} -> greater than or equal to */ helpers.unlessGteq = function(a, b, options) { @@ -593,6 +632,7 @@ helpers.unlessGteq = function(a, b, options) { * @return {String} Block, or inverse block if specified and falsey. * @block * @api public + * @example {{#unlessLteq 20 1 }} greater than {{else}} less than or equal to {{/unlessLteq}} -> ' greater than ' */ helpers.unlessLteq = function(a, b, options) { diff --git a/lib/date.js b/lib/date.js deleted file mode 100644 index dc7d02d0..00000000 --- a/lib/date.js +++ /dev/null @@ -1,24 +0,0 @@ -'use strict'; -var helpers = module.exports; - -/** - * Get the current year. - * - * ```handlebars - * {{year}} - * - * ``` - * @exposes year as year - * @api public - */ - -helpers.year = require('year'); - -/** - * Use [moment][] as a helper. See [helper-date][] for more details. - * - * @exposes helper-date as moment - * @api public - */ - -helpers.moment = helpers.date = require('helper-date'); diff --git a/lib/fs.js b/lib/fs.js index 6c2d4fe7..6460a6de 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -2,10 +2,12 @@ var fs = require('fs'); var path = require('path'); -var util = require('handlebars-utils'); -var utils = require('./utils'); +var util = require('./utils/handlebarsUtils'); var number = require('./number'); var helpers = module.exports; +const kindOf = require('kind-of'); +const isGlob = require('is-glob'); +const micromatch = require('micromatch'); /** * Helper `fileSize` is deprecated. Use `helper.prettyBytes` instead. @@ -15,11 +17,11 @@ helpers.fileSize = number.bytes; /** * Read a file from the file system. This is useful in composing - * "include"-style helpers using sub-expressions. + * 'include'-style helpers using sub-expressions. * * ```handlebars - * {{read "a/b/c.js"}} - * {{someHelper (read "a/b/c.md")}} + * {{read 'a/b/c.js'}} + * {{someHelper (read 'a/b/c.md')}} * ``` * @param {String} `filepath` * @return {String} @@ -50,13 +52,13 @@ helpers.readdir = function(dir, filter) { if (typeof filter === 'function') { return filter(files); } - if (utils.typeOf(filter) === 'regexp') { + if (kindOf(filter) === 'regexp') { return files.filter(function(fp) { return filter.test(fp); }); } - if (utils.isGlob(filter)) { - return files.filter(utils.mm.matcher(filter)); + if (isGlob(filter)) { + return files.filter(micromatch.matcher(filter)); } if (['isFile', 'isDirectory'].indexOf(filter) !== -1) { return files.filter(function(fp) { diff --git a/lib/html.js b/lib/html.js index 3dcf25f1..208ee07a 100644 --- a/lib/html.js +++ b/lib/html.js @@ -1,11 +1,11 @@ 'use strict'; var path = require('path'); -var util = require('handlebars-utils'); +var util = require('./utils/handlebarsUtils'); var html = require('./utils/html'); -var utils = require('./utils'); var parseAttr = html.parseAttributes; var helpers = module.exports; +const htmlTag = require('html-tag'); /** * Stringify attributes on the options `hash`. @@ -14,7 +14,7 @@ var helpers = module.exports; * * * - * {{inflect 1 "string" "strings"}} - * - * {{inflect 1 "string" "strings" true}} - * - * {{inflect 2 "string" "strings"}} - * - * {{inflect 2 "string" "strings" true}} - * + * {{inflect 0 'string' 'strings'}} + * + * {{inflect 1 'string' 'strings'}} + * + * {{inflect 1 'string' 'strings' true}} + * + * {{inflect 2 'string' 'strings'}} + * + * {{inflect 2 'string' 'strings' true}} + * * ``` * @param {Number} `count` * @param {String} `singular` The singular form diff --git a/lib/logging.js b/lib/logging.js deleted file mode 100644 index 98ca8bdd..00000000 --- a/lib/logging.js +++ /dev/null @@ -1,8 +0,0 @@ -'use strict'; - -/** - * [logging-helpers](https://github.com/helpers/logging-helpers). - * @api public - */ - -module.exports = require('logging-helpers'); diff --git a/lib/lorem.js b/lib/lorem.js new file mode 100644 index 00000000..12f68b0b --- /dev/null +++ b/lib/lorem.js @@ -0,0 +1,3 @@ +const lorem = 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Phasellus imperdiet, nulla et dictum interdum, nisi lorem egestas odio, vitae scelerisque enim ligula venenatis dolor. Maecenas nisl est, ultrices nec congue eget, auctor vitae massa. Fusce luctus vestibulum augue ut aliquet. Mauris ante ligula, facilisis sed ornare eu, lobortis in odio. Praesent convallis urna a lacus interdum ut hendrerit risus congue. Nunc sagittis dictum nisi, sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. \n\n Crase tempor malesuada magna a vehicula. Nam sollicitudin vel turpis id fermentum. Ut sit amet nisl ac nulla vulputate ultrices vitae vitae urna. Quisque eget odio ac lectus vestibulum faucibus eget in metus. In pellentesque faucibus vestibulum. Nulla at nulla justo, eget luctus tortor. Nulla facilisi. Donec vulputate interdum sollicitudin. Nunc lacinia auctor quam sed pellentesque. Aliquam dui mauris, mattis quis lacus id, pellentesque lobortis odio. \n\n Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede. Donec nec justo eget felis facilisis fermentum. Aliquam porttitor mauris sit amet orci. Aenean dignissim pellentesque felis. Phasellus ultrices nulla quis nibh. Quisque a lectus. Donec consectetuer ligula vulputate sem tristique cursus. Nam nulla quam, gravida non, commodo a, sodales sit amet, nisi. Praesent id justo in neque elementum ultrices. Sed malesuada augue eu sapien sodales congue. Nam ut dui. Quisque a lectus. Donec consectetuer ligula vulputate sem tristique cursus. Nam nulla quam, gravida non, commodo a, sodales sit amet, nisi. Proin vel ante a orci tempus eleifend ut et magna. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus luctus urna sed urna ultricies ac tempor dui sagittis. In condimentum facilisis porta. Sed nec diam eu diam mattis viverra. Nulla fringilla, orci ac euismod semper, magna diam porttitor mauris, quis sollicitudin sapien justo in libero. Vestibulum mollis mauris enim. Morbi euismod magna ac lorem rutrum elementum. Donec viverra auctor lobortis. Pellentesque eu est a nulla placerat dignissim. Morbi a enim in magna semper bibendum. Etiam scelerisque, nunc ac egestas consequat, odio nibh euismod nulla, eget auctor orci nibh vel nisi. Aliquam erat volutpat. Sed quis velit. Nulla facilisi. Nulla libero. Vivamus fermentum nibh in augue. Praesent a lacus at urna congue rutrum. Nulla enim eros, porttitor eu, tempus id, varius non, nibh. Vestibulum imperdiet nibh vel magna lacinia ultrices. Sed id ligula quis est convallis tempor. \n\n Aliquam erat volutpat. Integer aliquam ultrices nunc. Ut lectus dui, tincidunt ac, scelerisque ac, ultrices vitae, risus. Donec vehicula augue eu neque. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Mauris ut leo. Cras viverra metus rhoncus sem. Nulla et lectus vestibulum urna fringilla ultrices. Phasellus eu tellus sit amet tortor gravida placerat. Integer sapien est, iaculis in, pretium quis, viverra ac, nunc. Praesent eget sem vel leo ultrices bibendum. Aenean faucibus. Morbi dolor nulla, malesuada eu, pulvinar at, mollis ac, nulla. Curabitur vehicula nisi a magna. Sed nec libero. Phasellus nonummy magna. Sed et libero nec ligula blandit fringilla. Ut pretium tempus gravida. Proin lacinia justo vel ipsum varius eget auctor est iaculis. \n\n Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Fusce luctus vestibulum augue ut aliquet. Nunc sagittis dictum nisi, sed ullamcorper ipsum dignissim ac. In at libero sed nunc venenatis imperdiet sed ornare turpis. Donec vitae dui eget tellus gravida venenatis. Integer fringilla congue eros non fermentum. Sed dapibus pulvinar nibh tempor porta. \n\n Nam dui erat, auctor a, dignissim quis. Aenean dignissim pellentesque felis. Sed gravida ante at nunc dictum placerat. Donec placerat nisl magna, et faucibus arcu condimentum sed. Curabitur et eros ac orci vehicula vestibulum sit amet at nunc. Maecenas non diam cursus, tincidunt nisi vitae, hendrerit enim. Donec vulputate felis id felis dapibus fermentum. \n\n Nullam malesuada erat ut turpis. Suspendisse urna nibh, viverra non, semper suscipit, posuere a, pede. Donec nec justo eget felis facilisis fermentum. Aliquam porttitor mauris sit amet orci. Aenean dignissim pellentesque felis. Phasellus ultrices nulla quis nibh. Quisque a lectus. Donec consectetuer ligula vulputate sem tristique cursus. Nam nulla quam, gravida non, commodo a, sodales sit amet, nisi. Praesent id justo in neque elementum ultrices. Sed malesuada augue eu sapien sodales congue. Nam ut dui. Quisque a lectus. Donec consectetuer ligula vulputate sem tristique cursus. Nam nulla quam, gravida non, commodo a, sodales sit amet, nisi. \n\n Pellentesque sit amet mauris eget lectus commodo viverra. Donec vulputate interdum sollicitudin. Nunc lacinia auctor quam sed pellentesque. Aliquam dui mauris, mattis quis lacus id, pellentesque lobortis odio. Cras ultricies ligula sed magna dictum porta. Curabitur aliquet quam id dui posuere blandit. Nulla porttitor accumsan tincidunt. Donec sollicitudin molestie malesuada. Curabitur arcu erat, accumsan id imperdiet et, porttitor at sem. Sed porttitor lectus nibh. Pellentesque in ipsum id orci porta dapibus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. \n\n Cras ultricies ligula sed magna dictum porta. Donec rutrum congue leo eget malesuada. Nulla quis lorem ut libero malesuada feugiat. Proin eget tortor risus. Nulla quis lorem ut libero malesuada feugiat. Proin eget tortor risus. Curabitur aliquet quam id dui posuere blandit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Pellentesque in ipsum id orci porta dapibus. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Donec rutrum congue leo eget malesuada. Vivamus suscipit tortor eget felis porttitor volutpat. Nulla porttitor accumsan tincidunt. \n\n Donec sollicitudin molestie malesuada. Pellentesque in ipsum id orci porta dapibus. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Nulla quis lorem ut libero malesuada feugiat. Proin eget tortor risus. Cras ultricies ligula sed magna dictum porta. Donec sollicitudin molestie malesuada. Pellentesque in ipsum id orci porta dapibus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Nulla quis lorem ut libero malesuada feugiat. Proin eget tortor risus. Curabitur aliquet quam id dui posuere blandit. \n\n Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Nulla quis lorem ut libero malesuada feugiat. Proin eget tortor risus. Cras ultricies ligula sed magna dictum porta. Donec sollicitudin molestie malesuada. Pellentesque in ipsum id orci porta dapibus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Nulla quis lorem ut libero malesuada feugiat. Proin eget tortor risus. \n\n Curabitur aliquet quam id dui posuere blandit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Pellentesque in ipsum id orci porta dapibus. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Nulla quis lorem ut libero malesuada feugiat. Proin eget tortor risus. Cras ultricies ligula sed magna dictum porta. Donec sollicitudin molestie malesuada. Pellentesque in ipsum id orci porta dapibus. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui. Curabitur non nulla sit amet nisl tempus convallis quis ac lectus. Nulla quis lorem ut libero malesuada feugiat. Proin eget tortor risus. Curabitur aliquet quam id dui posuere blandit. Vestibulum ac diam sit amet quam vehicula elementum sed sit amet dui.'; + +module.exports = lorem; diff --git a/lib/markdown.js b/lib/markdown.js deleted file mode 100644 index 27888d4f..00000000 --- a/lib/markdown.js +++ /dev/null @@ -1,55 +0,0 @@ -'use strict'; - -/** - * Expose markdown `helpers` (for performance we're using getters so - * that the helpers are only loaded if called) - */ - -var helpers = module.exports; -var markdown; - -/** - * Block helper that converts a string of inline markdown to HTML. - * - * ```handlebars - * {{#markdown}} - * # Foo - * {{/markdown}} - * - * ``` - * @name .markdown - * @param {Object} `context` - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -Object.defineProperty(helpers, 'markdown', { - configurable: true, - enumerable: true, - set: function(val) { - markdown = val; - }, - get: function() { - // this is defined as a getter to avoid calling this function - // unless the helper is actually used - return markdown || (markdown = require('helper-markdown')()); - } -}); - -/** - * Read a markdown file from the file system and inject its contents after - * converting it to HTML. - * - * ```handlebars - * {{md "foo/bar.md"}} - * ``` - * @param {Object} `context` - * @param {Object} `options` - * @return {String} - * @block - * @api public - */ - -helpers.md = require('helper-md'); diff --git a/lib/match.js b/lib/match.js index ee4a2267..049c99ff 100644 --- a/lib/match.js +++ b/lib/match.js @@ -1,16 +1,16 @@ 'use strict'; -var util = require('handlebars-utils'); -var utils = require('./utils'); +var util = require('./utils/handlebarsUtils'); var helpers = module.exports; +const micromatch = require('micromatch'); /** * Returns an array of strings that match the given glob pattern(s). * Options may be passed on the options hash or locals. * * ```handlebars - * {{match (readdir "foo") "*.js"}} - * {{match (readdir "foo") (toRegex "\\.js$")}} + * {{match (readdir 'foo') '*.js'}} + * {{match (readdir 'foo') (toRegex '\\.js$')}} * ``` * @param {Array|String} `files` * @param {Array|String} `patterns` One or more glob patterns. @@ -25,7 +25,7 @@ helpers.match = function(files, patterns, locals, options) { if (typeof patterns === 'string') { patterns = patterns.split(/, */); } - return utils.mm(files, patterns, opts); + return micromatch(files, patterns, opts); }; /** @@ -33,7 +33,7 @@ helpers.match = function(files, patterns, locals, options) { * Options may be passed on the options hash or locals. * * ```handlebars - * {{isMatch "foo.md" "*.md"}} + * {{isMatch 'foo.md' '*.md'}} * * ``` * @@ -46,7 +46,7 @@ helpers.match = function(files, patterns, locals, options) { helpers.isMatch = function(files, patterns, locals, options) { var opts = util.options(this, locals, options); - return utils.mm.isMatch(files, patterns, opts); + return micromatch.isMatch(files, patterns, opts); }; /** diff --git a/lib/math.js b/lib/math.js index f4c138b9..77884435 100644 --- a/lib/math.js +++ b/lib/math.js @@ -1,6 +1,5 @@ 'use strict'; -var isNumber = require('is-number'); var utils = require('./utils'); var helpers = module.exports; @@ -10,10 +9,11 @@ var helpers = module.exports; * @param {Number} `a` * @return {Number} * @api public + * @example {{ abs 12012.1000 }} -> 12012.1 */ helpers.abs = function(num) { - if (!isNumber(num)) { + if (isNaN(num)) { throw new TypeError('expected a number'); } return Math.abs(num); @@ -26,10 +26,11 @@ helpers.abs = function(num) { * @param {Number} `b` * @return {Number} * @api public + * @example {{ add 1 2 }} -> 3 */ helpers.add = function(a, b) { - if (isNumber(a) && isNumber(b)) { + if (!isNaN(a) && !isNaN(b)) { return Number(a) + Number(b); } if (typeof a === 'string' && typeof b === 'string') { @@ -42,17 +43,18 @@ helpers.add = function(a, b) { * Returns the average of all numbers in the given array. * * ```handlebars - * {{avg "[1, 2, 3, 4, 5]"}} + * {{avg 1 2 3 4 5}} * * ``` * * @param {Array} `array` Array of numbers to add up. * @return {Number} * @api public + * @example {{ avg 1 2 3 4 5 }} -> 3 */ helpers.avg = function() { - var args = [].concat.apply([], arguments); + const args = [].concat.apply([], arguments); // remove handlebars options object args.pop(); return helpers.sum(args) / args.length; @@ -64,10 +66,11 @@ helpers.avg = function() { * @param {Number} `value` * @return {Number} * @api public + * @example {{ ceil 1.2 }} -> 2 */ helpers.ceil = function(num) { - if (!isNumber(num)) { + if (isNaN(num)) { throw new TypeError('expected a number'); } return Math.ceil(num); @@ -79,13 +82,14 @@ helpers.ceil = function(num) { * @param {Number} `a` numerator * @param {Number} `b` denominator * @api public + * @example {{ divide 10 5 }} -> 2 */ helpers.divide = function(a, b) { - if (!isNumber(a)) { + if (isNaN(a)) { throw new TypeError('expected the first argument to be a number'); } - if (!isNumber(b)) { + if (isNaN(b)) { throw new TypeError('expected the second argument to be a number'); } return Number(a) / Number(b); @@ -97,10 +101,11 @@ helpers.divide = function(a, b) { * @param {Number} `value` * @return {Number} * @api public + * @example {{ floor 1.2 }} -> 1 */ helpers.floor = function(num) { - if (!isNumber(num)) { + if (isNaN(num)) { throw new TypeError('expected a number'); } return Math.floor(num); @@ -113,13 +118,14 @@ helpers.floor = function(num) { * @param {Number} `b` * @alias subtract * @api public + * @example {{ minus 10 5 }} -> 5 */ helpers.minus = function(a, b) { - if (!isNumber(a)) { + if (isNaN(a)) { throw new TypeError('expected the first argument to be a number'); } - if (!isNumber(b)) { + if (isNaN(b)) { throw new TypeError('expected the second argument to be a number'); } return Number(a) - Number(b); @@ -132,33 +138,35 @@ helpers.minus = function(a, b) { * @param {Number} `b` * @return {Number} * @api public + * @example {{ modulo 10 5 }} -> 0 */ helpers.modulo = function(a, b) { - if (!isNumber(a)) { + if (isNaN(a)) { throw new TypeError('expected the first argument to be a number'); } - if (!isNumber(b)) { + if (isNaN(b)) { throw new TypeError('expected the second argument to be a number'); } return Number(a) % Number(b); }; /** - * Return the product of `a` times `b`. + * Multiply number `a` by number `b`. * * @param {Number} `a` factor * @param {Number} `b` multiplier * @return {Number} - * @alias times + * @alias multiply * @api public + * @example {{ multiply 10 5 }} -> 50 */ helpers.multiply = function(a, b) { - if (!isNumber(a)) { + if (isNaN(a)) { throw new TypeError('expected the first argument to be a number'); } - if (!isNumber(b)) { + if (isNaN(b)) { throw new TypeError('expected the second argument to be a number'); } return Number(a) * Number(b); @@ -170,13 +178,14 @@ helpers.multiply = function(a, b) { * @param {Number} `a` factor * @param {Number} `b` multiplier * @api public + * @example {{ plus 10 5 }} -> 15 */ helpers.plus = function(a, b) { - if (!isNumber(a)) { + if (isNaN(a)) { throw new TypeError('expected the first argument to be a number'); } - if (!isNumber(b)) { + if (isNaN(b)) { throw new TypeError('expected the second argument to be a number'); } return Number(a) + Number(b); @@ -189,13 +198,14 @@ helpers.plus = function(a, b) { * @param {Number} `max` * @return {String} * @api public + * @example {{ random 0 20 }} -> 10 */ helpers.random = function(min, max) { - if (!isNumber(min)) { + if (isNaN(min)) { throw new TypeError('expected minimum to be a number'); } - if (!isNumber(max)) { + if (isNaN(max)) { throw new TypeError('expected maximum to be a number'); } return utils.random(min, max); @@ -207,6 +217,7 @@ helpers.random = function(min, max) { * @param {Number} `a` a * @param {Number} `b` b * @api public + * @example {{ remainder 10 6 }} -> 4 */ helpers.remainder = function(a, b) { @@ -219,10 +230,11 @@ helpers.remainder = function(a, b) { * @param {Number} `number` * @return {Number} * @api public + * @example {{ round 10.3 }} -> 10 */ helpers.round = function(num) { - if (!isNumber(num)) { + if (isNaN(num)) { throw new TypeError('expected a number'); } return Math.round(num); @@ -236,13 +248,14 @@ helpers.round = function(num) { * @return {Number} * @alias minus * @api public + * @example {{ subtract 10 5 }} -> 5 */ helpers.subtract = function(a, b) { - if (!isNumber(a)) { + if (isNaN(a)) { throw new TypeError('expected the first argument to be a number'); } - if (!isNumber(b)) { + if (isNaN(b)) { throw new TypeError('expected the second argument to be a number'); } return Number(a) - Number(b); @@ -252,12 +265,13 @@ helpers.subtract = function(a, b) { * Returns the sum of all numbers in the given array. * * ```handlebars - * {{sum "[1, 2, 3, 4, 5]"}} + * {{sum '[1, 2, 3, 4, 5]'}} * * ``` * @param {Array} `array` Array of numbers to add up. * @return {Number} * @api public + * @example {{ sum [1, 2, 3] }} -> 6 */ helpers.sum = function() { @@ -266,23 +280,9 @@ helpers.sum = function() { var sum = 0; while (len--) { - if (utils.isNumber(args[len])) { + if (!isNaN(args[len])) { sum += Number(args[len]); } } return sum; }; - -/** - * Multiply number `a` by number `b`. - * - * @param {Number} `a` factor - * @param {Number} `b` multiplier - * @return {Number} - * @alias multiply - * @api public - */ - -helpers.times = function() { - return helpers.multiply.apply(this, arguments); -}; diff --git a/lib/misc.js b/lib/misc.js index 5cea6764..79110038 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -1,21 +1,36 @@ 'use strict'; -var util = require('handlebars-utils'); -var utils = require('./utils'); +var util = require('./utils/handlebarsUtils'); var helpers = module.exports; +const getValue = require('get-value'); +const createFrame = require('./utils/createFrame'); /** * Block helper for exposing private `@` variables on the context */ -helpers.frame = require('handlebars-helper-create-frame'); +helpers.frame = function(context, options) { + if (typeof(context) === 'object' && context.hash) { + options = context; + context = options.data; + } + + var frame = createFrame(context); + if (typeof(options) !== 'object') { + options = {}; + } + + // extend the frame with hash arguments + frame.extend(options.hash); + return options.fn(this, { data: frame }); +}; /** * Return the given value of `prop` from `this.options`. * * ```handlebars * - * {{option "a.b.c"}} + * {{option 'a.b.c'}} * * ``` * @param {String} `prop` @@ -24,7 +39,7 @@ helpers.frame = require('handlebars-helper-create-frame'); */ helpers.option = function(prop, locals, options) { - return utils.get(util.options(this, locals, options), prop); + return getValue(util.options(this, locals, options), prop); }; /** @@ -46,9 +61,9 @@ helpers.noop = function(options) { * ```handlebars * {{typeOf 1}} * //=> 'number' - * {{typeOf "1"}} + * {{typeOf '1'}} * //=> 'string' - * {{typeOf "foo"}} + * {{typeOf 'foo'}} * //=> 'string' * ``` * @param {any} `value` @@ -56,7 +71,7 @@ helpers.noop = function(options) { * @api public */ -helpers.typeOf = require('kind-of'); +helpers.typeOf = function(val) { return typeof val; }; /** * Block helper that builds the context for the block diff --git a/lib/number.js b/lib/number.js index 15fd16b7..7948db60 100644 --- a/lib/number.js +++ b/lib/number.js @@ -1,8 +1,8 @@ 'use strict'; -var isNumber = require('is-number'); -var util = require('handlebars-utils'); -var utils = require('./utils'); +var util = { + isUndefined: require('./utils/isUndefined') +}; var helpers = module.exports; /** @@ -19,17 +19,18 @@ var helpers = module.exports; * @param {Number|String} `number` * @return {String} * @api public + * @example {{ bytes 1386 1 }} -> 1.4 kB */ helpers.bytes = function(number, precision, options) { if (number == null) return '0 B'; - if (!utils.isNumber(number)) { + if (isNaN(number)) { number = number.length; if (!number) return '0 B'; } - if (!utils.isNumber(precision)) { + if (isNaN(precision)) { precision = 2; } @@ -56,6 +57,7 @@ helpers.bytes = function(number, precision, options) { * @param {Number} `num` * @return {Number} * @api public + * @example {{ addCommas 1000000 }} -> 1,000,000 */ helpers.addCommas = function(num) { @@ -69,6 +71,7 @@ helpers.addCommas = function(num) { * @return {Number} Formatted phone number: `(800) 555-1212` * @source http://bit.ly/QlPmPr * @api public + * @example {{ phoneNumber 8005551212 }} -> (800) 555-1212 */ helpers.phoneNumber = function(num) { @@ -87,10 +90,11 @@ helpers.phoneNumber = function(num) { * @param {Number} `precision` * @return {String} * @api public + * @example {{ toAbbr 10123 2 }} -> 10.12k */ helpers.toAbbr = function(number, precision) { - if (!utils.isNumber(number)) { + if (isNaN(number)) { number = 0; } if (util.isUndefined(precision)) { @@ -125,10 +129,11 @@ helpers.toAbbr = function(number, precision) { * @param {Number} `fractionDigits` Optional. An integer specifying the number of digits to use after the decimal point. Defaults to as many digits as necessary to specify the number. * @return {Number} * @api public + * @example {{ toExponential 10123 2 }} -> 1.01e+4 */ helpers.toExponential = function(number, digits) { - if (!utils.isNumber(number)) { + if (isNaN(number)) { number = 0; } if (util.isUndefined(digits)) { @@ -141,20 +146,21 @@ helpers.toExponential = function(number, digits) { * Formats the given number using fixed-point notation. * * ```handlebars - * {{toFixed "1.1234" 2}} + * {{toFixed '1.1234' 2}} * //=> '1.12' * ``` * @param {Number} `number` * @param {Number} `digits` (Optional) The number of digits to appear after the decimal point; this may be a value between 0 and 20. If this argument is omitted, it is treated as 0. * @return {String} A string representing the given number using fixed-point notation. * @api public + * @example {{ toFixed 1.1234 2 }} -> 1.12 */ helpers.toFixed = function(number, digits) { - if (!utils.isNumber(number)) { + if (isNaN(number)) { number = 0; } - if (!isNumber(digits)) { + if (isNaN(digits)) { digits = 0; } return Number(number).toFixed(digits); @@ -184,20 +190,21 @@ helpers.toInt = function(number) { * Returns a string representing the `Number` object to the specified precision. * * ```handlebars - * {{toPrecision "1.1234" 2}} + * {{toPrecision '1.1234' 2}} * //=> '1.1' * ``` * @param {Number} `number` * @param {Number} `precision` (Optional) An integer specifying the number of significant digits. If precison is not between 1 and 100 (inclusive), it will be coerced to `0`. * @return {String} A string representing a Number object in fixed-point or exponential notation rounded to precision significant digits. * @api public + * @example {{toPrecision '1.1234' 2}} -> 1.1 */ helpers.toPrecision = function(number, precision) { - if (!utils.isNumber(number)) { + if (isNaN(number)) { number = 0; } - if (!isNumber(precision)) { + if (isNaN(precision)) { precision = 1; } return Number(number).toPrecision(precision); diff --git a/lib/object.js b/lib/object.js index 1c48590a..3cd17757 100644 --- a/lib/object.js +++ b/lib/object.js @@ -1,10 +1,15 @@ 'use strict'; var hasOwn = Object.hasOwnProperty; -var util = require('handlebars-utils'); +var util = { + isOptions: require('./utils/isOptions'), + isObject: require('./utils/isObject') +}; var array = require('./array'); -var utils = require('./utils/'); var helpers = module.exports; +const getValue = require('get-value'); +const getObject = require('get-object'); +const createFrame = require('./utils/createFrame'); /** * Extend the context with the properties of other objects. @@ -57,12 +62,12 @@ helpers.forIn = function(obj, options) { return obj.inverse(this); } - var data = utils.createFrame(options, options.hash); + var data = createFrame(options, options.hash); var result = ''; for (var key in obj) { data.key = key; - result += options.fn(obj[key], {data: data}); + result += options.fn(obj[key], { data: data }); } return result; }; @@ -83,13 +88,13 @@ helpers.forOwn = function(obj, options) { return obj.inverse(this); } - var data = utils.createFrame(options, options.hash); + var data = createFrame(options, options.hash); var result = ''; for (var key in obj) { if (obj.hasOwnProperty(key)) { data.key = key; - result += options.fn(obj[key], {data: data}); + result += options.fn(obj[key], { data: data }); } } return result; @@ -126,7 +131,7 @@ helpers.toPath = function(/*prop*/) { */ helpers.get = function(prop, context, options) { - var val = utils.get(context, prop); + var val = getValue(context, prop); if (options && options.fn) { return val ? options.fn(val) : options.inverse(context); } @@ -147,7 +152,7 @@ helpers.get = function(prop, context, options) { */ helpers.getObject = function(prop, context) { - return utils.getObject(context, prop); + return getObject(context, prop); }; /** @@ -172,7 +177,7 @@ helpers.hasOwn = function(context, key) { * Return true if `value` is an object. * * ```handlebars - * {{isObject "foo"}} + * {{isObject 'foo'}} * //=> false * ``` * @param {String} `value` @@ -181,14 +186,14 @@ helpers.hasOwn = function(context, key) { */ helpers.isObject = function(value) { - return utils.typeOf(value) === 'object'; + return typeof value === 'object'; }; /** * Parses the given string using `JSON.parse`. * * ```handlebars - * + * * {{JSONparse string}} * * ``` @@ -208,7 +213,7 @@ helpers.JSONparse = function(str, options) { * ```handlebars * * {{JSONstringify object}} - * + * * ``` * @param {Object} `obj` Object to stringify * @return {String} @@ -216,7 +221,7 @@ helpers.JSONparse = function(str, options) { */ helpers.JSONstringify = function(obj, indent) { - if (!utils.isNumber(indent)) { + if (isNaN(indent)) { indent = 0; } return JSON.stringify(obj, null, indent); @@ -270,7 +275,7 @@ helpers.pick = function(props, context, options) { var result = {}; while (++i < len) { - result = helpers.extend({}, result, utils.getObject(context, keys[i])); + result = helpers.extend({}, result, getObject(context, keys[i])); } if (options.fn) { diff --git a/lib/path.js b/lib/path.js index 16e43f40..6af69c4e 100644 --- a/lib/path.js +++ b/lib/path.js @@ -1,15 +1,15 @@ 'use strict'; -var util = require('handlebars-utils'); +var util = require('./utils/handlebarsUtils'); var path = require('path'); -var utils = require('./utils'); +const relative = require('relative'); var helpers = module.exports; /** * Get the directory path segment from the given `filepath`. * * ```handlebars - * {{absolute "docs/toc.md"}} + * {{absolute 'docs/toc.md'}} * * ``` * @param {String} `ext` @@ -18,7 +18,7 @@ var helpers = module.exports; */ helpers.absolute = function(filepath, options) { - options = options || {data: {}}; + options = options || { data: {} }; var context = util.options(this, options); var ctx = Object.assign({}, options.data.root, context); var cwd = ctx.cwd || process.cwd(); @@ -29,7 +29,7 @@ helpers.absolute = function(filepath, options) { * Get the directory path segment from the given `filepath`. * * ```handlebars - * {{dirname "docs/toc.md"}} + * {{dirname 'docs/toc.md'}} * * ``` * @param {String} `ext` @@ -39,7 +39,7 @@ helpers.absolute = function(filepath, options) { helpers.dirname = function(filepath, options) { if (typeof filepath !== 'string') { - throw new TypeError(utils.expectedType('filepath', 'string', filepath)); + throw new TypeError(util.expectedType('filepath', 'string', filepath)); } return path.dirname(filepath); }; @@ -58,19 +58,19 @@ helpers.dirname = function(filepath, options) { helpers.relative = function(a, b) { if (typeof a !== 'string') { - throw new TypeError(utils.expectedType('first path', 'string', a)); + throw new TypeError(util.expectedType('first path', 'string', a)); } if (typeof b !== 'string') { - throw new TypeError(utils.expectedType('second path', 'string', b)); + throw new TypeError(util.expectedType('second path', 'string', b)); } - return utils.relative(a, b); + return relative(a, b); }; /** * Get the file extension from the given `filepath`. * * ```handlebars - * {{basename "docs/toc.md"}} + * {{basename 'docs/toc.md'}} * * ``` * @param {String} `ext` @@ -80,16 +80,16 @@ helpers.relative = function(a, b) { helpers.basename = function(filepath) { if (typeof filepath !== 'string') { - throw new TypeError(utils.expectedType('filepath', 'string', filepath)); + throw new TypeError(util.expectedType('filepath', 'string', filepath)); } return path.basename(filepath); }; /** - * Get the "stem" from the given `filepath`. + * Get the 'stem' from the given `filepath`. * * ```handlebars - * {{stem "docs/toc.md"}} + * {{stem 'docs/toc.md'}} * * ``` * @param {String} `filepath` @@ -99,7 +99,7 @@ helpers.basename = function(filepath) { helpers.stem = function(filepath) { if (typeof filepath !== 'string') { - throw new TypeError(utils.expectedType('filepath', 'string', filepath)); + throw new TypeError(util.expectedType('filepath', 'string', filepath)); } return path.basename(filepath, path.extname(filepath)); }; @@ -108,7 +108,7 @@ helpers.stem = function(filepath) { * Get the file extension from the given `filepath`. * * ```handlebars - * {{extname "docs/toc.md"}} + * {{extname 'docs/toc.md'}} * * ``` * @param {String} `filepath` @@ -118,7 +118,7 @@ helpers.stem = function(filepath) { helpers.extname = function(filepath) { if (typeof filepath !== 'string') { - throw new TypeError(utils.expectedType('filepath', 'string', filepath)); + throw new TypeError(util.expectedType('filepath', 'string', filepath)); } return path.extname(filepath); }; @@ -127,7 +127,7 @@ helpers.extname = function(filepath) { * Resolve an absolute path from the given `filepath`. * * ```handlebars - * {{resolve "docs/toc.md"}} + * {{resolve 'docs/toc.md'}} * * ``` * @param {String} `filepath` @@ -148,13 +148,13 @@ helpers.resolve = function(filepath) { * range of array indices. * * ```handlebars - * {{segments "a/b/c/d" "2" "3"}} + * {{segments 'a/b/c/d' '2' '3'}} * * - * {{segments "a/b/c/d" "1" "3"}} + * {{segments 'a/b/c/d' '1' '3'}} * * - * {{segments "a/b/c/d" "1" "2"}} + * {{segments 'a/b/c/d' '1' '2'}} * * ``` * @@ -165,7 +165,7 @@ helpers.resolve = function(filepath) { helpers.segments = function(filepath, a, b) { if (typeof filepath !== 'string') { - throw new TypeError(utils.expectedType('filepath', 'string', filepath)); + throw new TypeError(util.expectedType('filepath', 'string', filepath)); } var segments = filepath.split(/[\\\/]+/); return segments.slice(a, b).join('/'); diff --git a/lib/regex.js b/lib/regex.js index 16662b68..5cba5f6d 100644 --- a/lib/regex.js +++ b/lib/regex.js @@ -1,19 +1,20 @@ 'use strict'; -var util = require('handlebars-utils'); -var utils = require('./utils'); +var util = { options: require('./utils/options') }; var helpers = module.exports; +const kindOf = require('kind-of'); /** * Convert the given string to a regular expression. * * ```handlebars - * {{toRegex "foo"}} + * {{toRegex 'foo'}} * * ``` * @param {String} `str` * @return {RegExp} * @api public + * @example {{toRegex 'foo'}} -> /foo/ */ helpers.toRegex = function(str, locals, options) { @@ -27,23 +28,24 @@ helpers.toRegex = function(str, locals, options) { * subexpression. * * ```handlebars - * {{test "bar" (toRegex "foo")}} + * {{test 'bar' (toRegex 'foo')}} * - * {{test "foobar" (toRegex "foo")}} + * {{test 'foobar' (toRegex 'foo')}} * - * {{test "foobar" (toRegex "^foo$")}} + * {{test 'foobar' (toRegex '^foo$')}} * * ``` * @param {String} `str` * @return {RegExp} * @api public + * @example {{test 'foobar' (toRegex 'foo')}} -> true */ helpers.test = function(str, regex) { - if (!util.isString(str)) { + if (typeof(str) !== 'string') { return false; } - if (!utils.typeOf(regex) === 'regexp') { + if (kindOf(regex) !== 'regexp') { throw new TypeError('expected a regular expression'); } return regex.test(str); diff --git a/lib/string.js b/lib/string.js index 5f079766..a89b8a10 100644 --- a/lib/string.js +++ b/lib/string.js @@ -1,22 +1,27 @@ 'use strict'; -var isNumber = require('is-number'); -var util = require('handlebars-utils'); +var util = { + isString: require('./utils/isString'), + isObject: require('./utils/isObject'), + options: require('./utils/options') +}; var utils = require('./utils'); var helpers = module.exports; +let lorem = require('./lorem.js'); /** * Append the specified `suffix` to the given string. * * ```handlebars - * - * {{append item.stem ".html"}} + * + * {{append item.stem '.html'}} * * ``` * @param {String} `str` * @param {String} `suffix` * @return {String} * @api public + * @example {{append 'index' '.html'}} -> index.html */ helpers.append = function(str, suffix) { @@ -30,16 +35,17 @@ helpers.append = function(str, suffix) { * camelCase the characters in the given `string`. * * ```handlebars - * {{camelcase "foo bar baz"}}; + * {{camelcase 'foo bar baz'}}; * * ``` * @param {String} `string` The string to camelcase. * @return {String} * @api public + * @example {{camelcase 'foo bar baz'}} -> fooBarBaz */ helpers.camelcase = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; return utils.changecase(str, function(ch) { return ch.toUpperCase(); }); @@ -49,16 +55,17 @@ helpers.camelcase = function(str) { * Capitalize the first word in a sentence. * * ```handlebars - * {{capitalize "foo bar baz"}} - * + * {{capitalize 'foo bar baz'}} + * * ``` * @param {String} `str` * @return {String} * @api public + * @example {{capitalize 'foo bar baz'}} -> Foo bar baz */ helpers.capitalize = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; return str.charAt(0).toUpperCase() + str.slice(1); }; @@ -66,16 +73,17 @@ helpers.capitalize = function(str) { * Capitalize all words in a string. * * ```handlebars - * {{capitalizeAll "foo bar baz"}} - * + * {{capitalizeAll 'foo bar baz'}} + * * ``` * @param {String} `str` * @return {String} * @api public + * @example {{ capitalizeAll 'foo bar baz'}} -> Foo Bar Baz */ helpers.capitalizeAll = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; if (util.isString(str)) { return str.replace(/\w\S*/g, function(word) { return helpers.capitalize(word); @@ -90,10 +98,11 @@ helpers.capitalizeAll = function(str) { * @param {String} `spaces` * @return {String} * @api public + * @example {{ center 'test' 1}} -> ' test ' */ helpers.center = function(str, spaces) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; var space = ''; var i = 0; while (i < spaces) { @@ -108,22 +117,23 @@ helpers.center = function(str, spaces) { * non-word characters** from the beginning and end of a string. * * ```handlebars - * {{chop "_ABC_"}} + * {{chop '_ABC_'}} * * - * {{chop "-ABC-"}} + * {{chop '-ABC-'}} * * - * {{chop " ABC "}} + * {{chop ' ABC '}} * * ``` * @param {String} `string` The string to chop. * @return {String} * @api public + * @example {{ chop ' ABC '}} -> ABC */ helpers.chop = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; return utils.chop(str); }; @@ -132,16 +142,17 @@ helpers.chop = function(str) { * characters and periods with hyphens. * * ```handlebars - * {{dashcase "a-b-c d_e"}} + * {{dashcase 'a-b-c d_e'}} * * ``` * @param {String} `string` * @return {String} * @api public + * @example {{dashcase 'a-b-c d_e'}} -> a-b-c-d-e */ helpers.dashcase = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; return utils.changecase(str, function(ch) { return '-' + ch; }); @@ -151,16 +162,17 @@ helpers.dashcase = function(str) { * dot.case the characters in `string`. * * ```handlebars - * {{dotcase "a-b-c d_e"}} + * {{dotcase 'a-b-c d_e'}} * * ``` * @param {String} `string` * @return {String} * @api public + * @example {{dotcase 'a-b-c d_e'}} -> a.b.c.d.e */ helpers.dotcase = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; return utils.changecase(str, function(ch) { return '.' + ch; }); @@ -170,13 +182,15 @@ helpers.dotcase = function(str) { * Lowercase all of the characters in the given string. Alias for [lowercase](#lowercase). * * ```handlebars - * {{downcase "aBcDeF"}} + * {{downcase 'aBcDeF'}} * * ``` * @param {String} `string` * @return {String} * @alias lowercase * @api public + * @example {{downcase 'aBcDeF'}} -> abcdef + */ helpers.downcase = function() { @@ -188,15 +202,16 @@ helpers.downcase = function() { * it with an elipsis, `…`. * * ```handlebars - * {{ellipsis (sanitize "foo bar baz"), 7}} + * {{ellipsis (sanitize 'foo bar baz'), 7}} * - * {{ellipsis "foo bar baz", 7}} + * {{ellipsis 'foo bar baz', 7}} * * ``` * @param {String} `str` * @param {Number} `length` The desired length of the returned string. * @return {String} The truncated string. * @api public + * @example {{ellipsis 'foo bar baz' 7}} -> foo bar… */ helpers.ellipsis = function(str, limit) { @@ -212,16 +227,17 @@ helpers.ellipsis = function(str, limit) { * Replace spaces in a string with hyphens. * * ```handlebars - * {{hyphenate "foo bar baz qux"}} - * + * {{hyphenate 'foo bar baz qux'}} + * * ``` * @param {String} `str` * @return {String} * @api public + * @example {{hyphenate 'foo bar baz qux'}} -> foo-bar-baz-qux */ helpers.hyphenate = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; return str.split(' ').join('-'); }; @@ -229,12 +245,13 @@ helpers.hyphenate = function(str) { * Return true if `value` is a string. * * ```handlebars - * {{isString "foo"}} + * {{isString 'foo'}} * * ``` * @param {String} `value` * @return {Boolean} * @api public + * @example {{isString 'foo'}} -> true */ helpers.isString = function(value) { @@ -245,19 +262,20 @@ helpers.isString = function(value) { * Lowercase all characters in the given string. * * ```handlebars - * {{lowercase "Foo BAR baZ"}} + * {{lowercase 'Foo BAR baZ'}} * * ``` * @param {String} `str` * @return {String} * @api public + * @example {{lowercase 'Foo BAR baZ'}} -> foo bar baz */ helpers.lowercase = function(str) { if (util.isObject(str) && str.fn) { return str.fn(this).toLowerCase(); } - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; return str.toLowerCase(); }; @@ -266,17 +284,18 @@ helpers.lowercase = function(str) { * given `string`. * * ```handlebars - * {{occurrences "foo bar foo bar baz" "foo"}} + * {{occurrences 'foo bar foo bar baz' 'foo'}} * * ``` * @param {String} `str` * @param {String} `substring` * @return {Number} Number of occurrences * @api public + * @example {{occurrences 'foo bar foo bar baz' 'foo'}} -> 2 */ helpers.occurrences = function(str, substring) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; var len = substring.length; var pos = 0; var n = 0; @@ -292,16 +311,17 @@ helpers.occurrences = function(str, substring) { * PascalCase the characters in `string`. * * ```handlebars - * {{pascalcase "foo bar baz"}} + * {{pascalcase 'foo bar baz'}} * * ``` * @param {String} `string` * @return {String} * @api public + * @example {{pascalcase 'foo bar baz'}} -> FooBarBaz */ helpers.pascalcase = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; str = utils.changecase(str, function(ch) { return ch.toUpperCase(); }); @@ -312,16 +332,17 @@ helpers.pascalcase = function(str) { * path/case the characters in `string`. * * ```handlebars - * {{pathcase "a-b-c d_e"}} + * {{pathcase 'a-b-c d_e'}} * * ``` * @param {String} `string` * @return {String} * @api public + * @example {{pathcase 'a-b-c d_e'}} -> a/b/c/d/e */ helpers.pathcase = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; return utils.changecase(str, function(ch) { return '/' + ch; }); @@ -331,17 +352,18 @@ helpers.pathcase = function(str) { * Replace spaces in the given string with pluses. * * ```handlebars - * {{plusify "foo bar baz"}} + * {{plusify 'foo bar baz'}} * * ``` * @param {String} `str` The input string * @return {String} Input string with spaces replaced by plus signs * @source Stephen Way * @api public + * @example {{plusify 'foo bar baz'}} -> foo+bar+baz */ helpers.plusify = function(str, ch) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; if (!util.isString(ch)) ch = ' '; return str.split(ch).join('+'); }; @@ -350,14 +372,15 @@ helpers.plusify = function(str, ch) { * Prepends the given `string` with the specified `prefix`. * * ```handlebars - * - * {{prepend val "foo-"}} + * + * {{prepend val 'foo-'}} * * ``` * @param {String} `str` * @param {String} `prefix` * @return {String} * @api public + * @example {{prepend 'bar' 'foo-'}} -> foo-bar */ helpers.prepend = function(str, prefix) { @@ -370,7 +393,7 @@ helpers.prepend = function(str, prefix) { * Render a block without processing mustache templates inside the block. * * ```handlebars - * {{{{#raw}}}} + * {{{{raw}}}} * {{foo}} * {{{{/raw}}}} * @@ -380,6 +403,7 @@ helpers.prepend = function(str, prefix) { * @return {String} * @block * @api public + * @example {{{{raw}}}}{{foo}}{{{{/raw}}}} -> \{{foo}} */ helpers.raw = function(options) { @@ -401,17 +425,18 @@ helpers.raw = function(options) { * Remove all occurrences of `substring` from the given `str`. * * ```handlebars - * {{remove "a b a b a b" "a "}} + * {{remove 'a b a b a b' 'a '}} * * ``` * @param {String} `str` * @param {String} `substring` * @return {String} * @api public + * @example {{remove 'a b a b a b' 'a '}} -> b b b */ helpers.remove = function(str, ch) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; if (!util.isString(ch)) return str; return str.split(ch).join(''); }; @@ -420,17 +445,18 @@ helpers.remove = function(str, ch) { * Remove the first occurrence of `substring` from the given `str`. * * ```handlebars - * {{remove "a b a b a b" "a"}} + * {{remove 'a b a b a b' 'a'}} * * ``` * @param {String} `str` * @param {String} `substring` * @return {String} * @api public + * @example {{removeFirst 'a b a b a b' 'a'}} -> ' b a b a b' */ helpers.removeFirst = function(str, ch) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; if (!util.isString(ch)) return str; return str.replace(ch, ''); }; @@ -439,7 +465,7 @@ helpers.removeFirst = function(str, ch) { * Replace all occurrences of substring `a` with substring `b`. * * ```handlebars - * {{replace "a b a b a b" "a" "z"}} + * {{replace 'a b a b a b' 'a' 'z'}} * * ``` * @param {String} `str` @@ -447,10 +473,11 @@ helpers.removeFirst = function(str, ch) { * @param {String} `b` * @return {String} * @api public + * @example {{replace 'a b a b a b' 'a' 'z'}} -> z b z b z b */ helpers.replace = function(str, a, b) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; if (!util.isString(a)) return str; if (!util.isString(b)) b = ''; return str.split(a).join(b); @@ -460,7 +487,7 @@ helpers.replace = function(str, a, b) { * Replace the first occurrence of substring `a` with substring `b`. * * ```handlebars - * {{replace "a b a b a b" "a" "z"}} + * {{replace 'a b a b a b' 'a' 'z'}} * * ``` * @param {String} `str` @@ -468,10 +495,11 @@ helpers.replace = function(str, a, b) { * @param {String} `b` * @return {String} * @api public + * @example {{replaceFirst 'a b a b a b' 'a' 'z'}} -> z b a b a b */ helpers.replaceFirst = function(str, a, b) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; if (!util.isString(a)) return str; if (!util.isString(b)) b = ''; return str.replace(a, b); @@ -481,33 +509,32 @@ helpers.replaceFirst = function(str, a, b) { * Reverse a string. * * ```handlebars - * {{reverse "abcde"}} + * {{reverse 'abcde'}} * * ``` * @param {String} `str` * @return {String} * @api public + * @example {{reverse 'abcde'}} -> edcba */ -helpers.reverse = function(str) { - if (!util.isString(str)) return ''; - return str.split('').reverse().join(''); -}; +helpers.reverse = require('./array').reverse; /** * Sentence case the given string * * ```handlebars - * {{sentence "hello world. goodbye world."}} + * {{sentence 'hello world. goodbye world.'}} * * ``` * @param {String} `str` * @return {String} * @api public + * @example {{sentence 'hello world. goodbye world.'}} -> Hello world. Goodbye world. */ helpers.sentence = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; return str.replace(/((?:\S[^\.\?\!]*)[\.\?\!]*)/g, function(txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); }); @@ -517,16 +544,17 @@ helpers.sentence = function(str) { * snake_case the characters in the given `string`. * * ```handlebars - * {{snakecase "a-b-c d_e"}} + * {{snakecase 'a-b-c d_e'}} * * ``` * @param {String} `string` * @return {String} * @api public + * @example {{snakecase 'a-b-c d_e'}} -> a_b_c_d_e */ helpers.snakecase = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; return utils.changecase(str, function(ch) { return '_' + ch; }); @@ -536,16 +564,17 @@ helpers.snakecase = function(str) { * Split `string` by the given `character`. * * ```handlebars - * {{split "a,b,c" ","}} + * {{split 'a,b,c' ','}} * * ``` * @param {String} `string` The string to split. * @return {String} `character` Default is an empty string. * @api public + * @example {{split 'a,b,c'}} -> ['a', 'b', 'c'] */ helpers.split = function(str, ch) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; if (!util.isString(ch)) ch = ','; return str.split(ch); }; @@ -554,7 +583,7 @@ helpers.split = function(str, ch) { * Tests whether a string begins with the given prefix. * * ```handlebars - * {{#startsWith "Goodbye" "Hello, world!"}} + * {{#startsWith 'Goodbye' 'Hello, world!'}} * Whoops * {{else}} * Bro, do you even hello world? @@ -567,6 +596,7 @@ helpers.split = function(str, ch) { * @return {String} * @block * @api public + * @example {{#startsWith 'Goodbye' 'Hello, world!'}}Yep{{else}}Nope{{/startsWith}} -> Nope */ helpers.startsWith = function(prefix, str, options) { @@ -585,16 +615,17 @@ helpers.startsWith = function(prefix, str, options) { * Title case the given string. * * ```handlebars - * {{titleize "this is title case"}} + * {{titleize 'this is title case'}} * * ``` * @param {String} `str` * @return {String} * @api public + * @example {{titleize 'this is title case' }} -> This Is Title Case */ helpers.titleize = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; var title = str.replace(/[- _]+/g, ' '); var words = title.split(' '); var len = words.length; @@ -612,12 +643,13 @@ helpers.titleize = function(str) { * of a string. * * ```handlebars - * {{trim " ABC "}} + * {{trim ' ABC '}} * * ``` * @param {String} `string` The string to trim. * @return {String} * @api public + * @example {{trim ' ABC ' }} -> ABC */ helpers.trim = function(str) { @@ -628,12 +660,13 @@ helpers.trim = function(str) { * Removes extraneous whitespace from the beginning of a string. * * ```handlebars - * {{trim " ABC "}} + * {{trim ' ABC '}} * * ``` * @param {String} `string` The string to trim. * @return {String} * @api public + * @example {{trimLeft ' ABC ' }} -> 'ABC ' */ helpers.trimLeft = function(str) { @@ -646,12 +679,13 @@ helpers.trimLeft = function(str) { * Removes extraneous whitespace from the end of a string. * * ```handlebars - * {{trimRight " ABC "}} + * {{trimRight ' ABC '}} * * ``` * @param {String} `string` The string to trim. * @return {String} * @api public + * @example {{trimRight ' ABC ' }} -> ' ABC' */ helpers.trimRight = function(str) { @@ -664,9 +698,9 @@ helpers.trimRight = function(str) { * Truncate a string to the specified `length`. Also see [ellipsis](#ellipsis). * * ```handlebars - * truncate("foo bar baz", 7); + * truncate('foo bar baz', 7); * - * truncate(sanitize("foo bar baz", 7)); + * truncate(sanitize('foo bar baz', 7)); * * ``` * @param {String} `str` @@ -675,6 +709,7 @@ helpers.trimRight = function(str) { * denote when the string has been truncated. Otherwise an ellipsis (`…`) will be used. * @return {String} The truncated string. * @api public + * @example {{truncate 'foo bar baz' 7 }} -> foo bar */ helpers.truncate = function(str, limit, suffix) { @@ -694,11 +729,11 @@ helpers.truncate = function(str, limit, suffix) { * Also see [truncate](#truncate). * * ```handlebars - * truncateWords("foo bar baz", 1); + * truncateWords('foo bar baz', 1); * - * truncateWords("foo bar baz", 2); + * truncateWords('foo bar baz', 2); * - * truncateWords("foo bar baz", 3); + * truncateWords('foo bar baz', 3); * * ``` * @param {String} `str` @@ -707,20 +742,22 @@ helpers.truncate = function(str, limit, suffix) { * denote when the string has been truncated. * @return {String} The truncated string. * @api public + * @example {{truncateWords 'foo bar baz' 1 }} -> foo… */ helpers.truncateWords = function(str, count, suffix) { - if (util.isString(str) && isNumber(count)) { + if (util.isString(str) && !isNaN(count)) { if (typeof suffix !== 'string') { suffix = '…'; } var num = Number(count); var arr = str.split(/[ \t]/); - if (num > arr.length) { - arr = arr.slice(0, num); + if (num >= arr.length) { + return str; } + arr = arr.slice(0, num); var val = arr.join(' ').trim(); return val + suffix; } @@ -730,13 +767,14 @@ helpers.truncateWords = function(str, count, suffix) { * Uppercase all of the characters in the given string. Alias for [uppercase](#uppercase). * * ```handlebars - * {{upcase "aBcDeF"}} + * {{upcase 'aBcDeF'}} * * ``` * @param {String} `string` * @return {String} * @alias uppercase * @api public + * @example {{upcase 'aBcDef'}} -> ABCDEF */ helpers.upcase = function() { @@ -749,7 +787,7 @@ helpers.upcase = function() { * does not support inverse blocks. * * ```handlebars - * {{uppercase "aBcDeF"}} + * {{uppercase 'aBcDeF'}} * * ``` * @related capitalize capitalizeAll @@ -757,13 +795,39 @@ helpers.upcase = function() { * @param {Object} `options` Handlebars options object * @return {String} * @block + * @inline * @api public + * @example {{uppercase 'aBcDef'}} -> ABCDEF */ helpers.uppercase = function(str) { if (util.isObject(str) && str.fn) { return str.fn(this).toUpperCase(); } - if (!util.isString(str)) return ''; + if (typeof(str) !== 'string') return ''; return str.toUpperCase(); }; + +/** + * Takes a number and returns that many charaters of Lorem Ipsum + * + * ```handlebars + * {{lorem 11}} + * + * ``` + * @param {Number} `[num=11]` + * @return {String} + * @block + * @inline + * @api public + * @example {{lorem 11}} -> Lorem ipsum + */ + +helpers.lorem = function(num) { + // Sad Path - Not a number, or not greater than 1, or not truthy + if (isNaN(num) || num < 1 || !num) { + num = 11; + } + + return lorem.substring(0, num); +}; diff --git a/lib/url.js b/lib/url.js index 110a8165..5ee2496a 100644 --- a/lib/url.js +++ b/lib/url.js @@ -1,7 +1,9 @@ 'use strict'; var url = require('url'); -var util = require('handlebars-utils'); +var util = { + isString: require('./utils/isString') +}; var querystring = require('querystring'); var helpers = module.exports; @@ -14,6 +16,7 @@ var helpers = module.exports; * @param {String} `str` The un-encoded string * @return {String} The endcoded string * @api public + * @example {{ encodeURI 'https://myurl?Hello There' }} -> https%3A%2F%2Fmyurl%3FHello%20There */ helpers.encodeURI = function(str) { @@ -29,6 +32,7 @@ helpers.encodeURI = function(str) { * @param {String} `str` * @return {String} Escaped string. * @api public + * @example {{ escape 'https://myurl?Hello+There' }} -> https%3A%2F%2Fmyurl%3FHello%2BThere */ helpers.escape = function(str) { @@ -43,6 +47,7 @@ helpers.escape = function(str) { * @param {String} `str` * @return {String} * @api public + * @example {{ decodeURI 'https://myurl?Hello%20There' }} -> https://myurl?Hello There */ helpers.decodeURI = function(str) { @@ -51,24 +56,6 @@ helpers.decodeURI = function(str) { } }; -/** - * Alias for [encodeURI](#encodeuri). - * @api public - */ - -helpers.url_encode = function() { - return helpers.encodeURI.apply(this, arguments); -}; - -/** - * Alias for [decodeURI](#decodeuri). - * @api public - */ - -helpers.url_decode = function(val) { - return helpers.decodeURI.apply(this, arguments); -}; - /** * Take a base URL, and a href URL, and resolve them as a * browser would for an anchor tag. @@ -77,6 +64,7 @@ helpers.url_decode = function(val) { * @param {String} `href` * @return {String} * @api public + * @example {{ urlResolve 'https://myurl' '/api/test' }} -> https://myurl/api/test */ helpers.urlResolve = function(base, href) { @@ -89,6 +77,7 @@ helpers.urlResolve = function(base, href) { * @param {String} `str` URL string * @return {String} Returns stringified JSON * @api public + * @example {{ urlParse 'https://myurl/api/test' }} */ helpers.urlParse = function(str) { @@ -101,6 +90,7 @@ helpers.urlParse = function(str) { * @param {String} `url` * @return {String} the url without the queryString * @api public + * @example {{ stripQuerystring 'https://myurl/api/test?foo=bar' }} -> 'https://myurl/api/test' */ helpers.stripQuerystring = function(str) { @@ -121,6 +111,7 @@ helpers.stripQuerystring = function(str) { * @param {String} `str` * @return {String} the url with http protocol stripped * @api public + * @example {{ stripProtocol 'https://myurl/api/test' }} -> '//myurl/api/test' */ helpers.stripProtocol = function(str) { diff --git a/lib/utils/createFrame.js b/lib/utils/createFrame.js new file mode 100644 index 00000000..ba552b11 --- /dev/null +++ b/lib/utils/createFrame.js @@ -0,0 +1,23 @@ +'use strict'; + +module.exports = function createFrame(data) { + if (typeof(data) !== 'object') { + throw new TypeError('createFrame expects data to be an object'); + } + + var frame = Object.assign({}, data); + frame._parent = data; + + frame.extend = function(data) { + Object.assign(this, data); + }; + + if (arguments.length > 1) { + var args = [].slice.call(arguments, 1); + var len = args.length, i = -1; + while (++i < len) { + frame.extend(args[i] || {}); + } + } + return frame; +}; diff --git a/lib/utils/falsey.js b/lib/utils/falsey.js new file mode 100644 index 00000000..a0e43f85 --- /dev/null +++ b/lib/utils/falsey.js @@ -0,0 +1,39 @@ +'use strict'; + +function falsey(val, keywords) { + if (!val) return true; + let words = keywords || falsey.keywords; + if (!Array.isArray(words)) words = [words]; + const lower = typeof val === 'string' ? val.toLowerCase() : null; + for (const word of words) { + if (word === val) { + return true; + } + if (word === lower) { + return true; + } + } + return false; +} + +falsey.keywords = [ + '0', + 'false', + 'nada', + 'nil', + 'nay', + 'nah', + 'negative', + 'no', + 'none', + 'nope', + 'nul', + 'null', + 'nix', + 'nyet', + 'uh-uh', + 'veto', + 'zero' +]; + +module.exports = falsey; diff --git a/lib/utils/fn.js b/lib/utils/fn.js new file mode 100644 index 00000000..9b4c9869 --- /dev/null +++ b/lib/utils/fn.js @@ -0,0 +1,40 @@ +'use strict'; + +const isBlock = require('./isBlock'); +const isOptions = require('./isOptions'); +const fn = require('./fn'); + +/** + * This code was taken directly from handlebars-helpers, + * https://github.com/helpers/handlebars-utils/blob/master/index.js#L398 + * + * that was taken directly from handlebars. + * https://github.com/wycats/handlebars.js/blob/b55a120e8222785db3dc00096f6afbf91b656e8a/LICENSE + * Released under the MIT License + * Copyright (C) 2011-2016 by Yehuda Katz + */ + +/** + * Returns the given value or renders the block if it's a block helper. + * + * ```js + * Handlebars.registerHelper('example', function(val, locals, options) { + * return utils.fn(val, locals, options); + * }); + * ``` + * @param {any} `val` + * @param {Object} `options` + * @param {Object} `context` + * @return {String} Either returns the value, or renders the block. + * @api public + */ + +module.exports = function(val, context, options) { + if (isOptions(val)) { + return fn('', val, options); + } + if (isOptions(context)) { + return fn(val, {}, context); + } + return isBlock(options) ? options.fn(context) : val; +}; diff --git a/lib/utils/handlebarsUtils.js b/lib/utils/handlebarsUtils.js new file mode 100644 index 00000000..d23cbe7a --- /dev/null +++ b/lib/utils/handlebarsUtils.js @@ -0,0 +1,275 @@ +'use strict'; + +/** + * This code was taken directly from handlebars-helpers, (extracting some utils to its own file) + * https://github.com/helpers/handlebars-utils/blob/master/index.js#L398 + * + * that was taken directly from handlebars. + * https://github.com/wycats/handlebars.js/blob/b55a120e8222785db3dc00096f6afbf91b656e8a/LICENSE + * Released under the MIT License + * Copyright (C) 2011-2016 by Yehuda Katz + */ + +var util = require('util'); +var type = require('typeof-article'); +var utils = exports = module.exports; + +utils.extend = extend; +utils.escapeExpression = escapeExpression; +utils.isEmpty = isEmpty; +utils.createFrame = createFrame; +utils.blockParams = blockParams; +utils.appendContextPath = appendContextPath; + +utils.isObject = require('./isObject'); +utils.isOptions = require('./isOptions'); +utils.isUndefined = require('./isUndefined'); +utils.result = require('./result'); +utils.indexOf = require('./indexOf'); +utils.isBlock = require('./isBlock'); +utils.fn = require('./fn'); +utils.inverse = require('./inverse'); +utils.value = require('./value'); +utils.options = require('./options'); +utils.identity = require('./identity'); +utils.isString = require('./isString'); + +var escape = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '`': '`', + '=': '=' +}; + +var badChars = /[&<>"'`=]/g; +var possible = /[&<>"'`=]/; + +function escapeChar(chr) { + return escape[chr]; +} + +function extend(obj /* , ...source */) { + for (var i = 1; i < arguments.length; i++) { + for (var key in arguments[i]) { + if (Object.prototype.hasOwnProperty.call(arguments[i], key)) { + obj[key] = arguments[i][key]; + } + } + } + + return obj; +} + +var toString = Object.prototype.toString; + +utils.toString = toString; +// Sourced from lodash +// https://github.com/bestiejs/lodash/blob/master/LICENSE.txt +/* eslint-disable func-style */ +var isFunction = function isFunction(value) { + return typeof value === 'function'; +}; +// fallback for older versions of Chrome and Safari +/* istanbul ignore next */ +if (isFunction(/x/)) { + utils.isFunction = isFunction = function(value) { + return typeof value === 'function' && toString.call(value) === '[object Function]'; + }; +} +utils.isFunction = isFunction; + +/* eslint-enable func-style */ + +/* istanbul ignore next */ +var isArray = Array.isArray || function(value) { + return value && typeof value === 'object' + ? toString.call(value) === '[object Array]' + : false; +}; + +utils.isArray = isArray; + +function escapeExpression(string) { + if (typeof string !== 'string') { + // don't escape SafeStrings, since they're already safe + if (string && string.toHTML) { + return string.toHTML(); + } else if (string == null) { + return ''; + } else if (!string) { + return string + ''; + } + + // Force a string conversion as this will be done by the append regardless and + // the regex test will do this transparently behind the scenes, causing issues if + // an object's to string has escaped characters in it. + string = '' + string; + } + + if (!possible.test(string)) { + return string; + } + return string.replace(badChars, escapeChar); +} + +function createFrame(object) { + var frame = extend({}, object); + frame._parent = object; + return frame; +} + +function blockParams(params, ids) { + params.path = ids; + return params; +} + +function appendContextPath(contextPath, id) { + return (contextPath ? contextPath + '.' : '') + id; +} + +// +// The code below this line was not sourced from handlebars +// -------------------------------------------------------- +// + +utils.expectedType = function(param, expected, actual) { + var exp = type.types[expected]; + var val = util.inspect(actual); + return 'expected ' + param + ' to be ' + exp + ' but received ' + type(actual) + ': ' + val; +}; + +/** + * Returns true if an `app` propery is on the context, which means + * the context was created by [assemble][], [templates][], [verb][], + * or any other library that follows this convention. + * + * ```js + * Handlebars.registerHelper('example', function(val, options) { + * var context = options.hash; + * if (utils.isApp(this)) { + * context = Object.assign({}, this.context, context); + * } + * // do stuff + * }); + * ``` + * @param {any} `value` + * @return {Boolean} + * @api public + */ + +utils.isApp = function(thisArg) { + return utils.isObject(thisArg) + && utils.isObject(thisArg.options) + && utils.isObject(thisArg.app); +}; + +/** + * Get the context to use for rendering. + * + * @param {Object} `thisArg` Optional invocation context `this` + * @return {Object} + * @api public + */ + +utils.context = function(thisArg, locals, options) { + if (utils.isOptions(thisArg)) { + return utils.context({}, locals, thisArg); + } + // ensure args are in the correct order + if (utils.isOptions(locals)) { + return utils.context(thisArg, options, locals); + } + var appContext = utils.isApp(thisArg) ? thisArg.context : {}; + options = options || {}; + + // if "options" is not handlebars options, merge it onto locals + if (!utils.isOptions(options)) { + locals = Object.assign({}, locals, options); + } + // merge handlebars root data onto locals if specified on the hash + if (utils.isOptions(options) && options.hash.root === true) { + locals = Object.assign({}, options.data.root, locals); + } + var context = Object.assign({}, appContext, locals, options.hash); + if (!utils.isApp(thisArg)) { + context = Object.assign({}, thisArg, context); + } + if (utils.isApp(thisArg) && thisArg.view && thisArg.view.data) { + context = Object.assign({}, context, thisArg.view.data); + } + return context; +}; + +/** + * Returns true if the given value is "empty". + * + * ```js + * console.log(utils.isEmpty(0)); + * //=> false + * console.log(utils.isEmpty('')); + * //=> true + * console.log(utils.isEmpty([])); + * //=> true + * console.log(utils.isEmpty({})); + * //=> true + * ``` + * @name .isEmpty + * @param {any} `value` + * @return {Boolean} + * @api public + */ + +function isEmpty(val) { + if (val === 0 || typeof val === 'boolean') { + return false; + } + if (val == null) { + return true; + } + if (utils.isObject(val)) { + val = Object.keys(val); + } + if (!val.length) { + return true; + } + return false; +} + +/** + * Cast the given `val` to an array. + * + * ```js + * console.log(utils.arrayify('')); + * //=> [] + * console.log(utils.arrayify('foo')); + * //=> ['foo'] + * console.log(utils.arrayify(['foo'])); + * //=> ['foo'] + * ``` + * @param {any} `val` + * @return {Array} + * @api public + */ + +utils.arrayify = function(val) { + return val != null ? (Array.isArray(val) ? val : [val]) : []; +}; + +/** + * Try to parse the given `string` as JSON. Fails + * gracefully and always returns an object if the value cannot be parsed. + * + * @param {String} `string` + * @return {Object} + * @api public + */ + +utils.tryParse = function(str) { + try { + return JSON.parse(str); + } catch (err) { } + return {}; +}; diff --git a/lib/utils/html.js b/lib/utils/html.js index 2d2ff6db..75758c99 100644 --- a/lib/utils/html.js +++ b/lib/utils/html.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('handlebars-utils'); +var util = require('./handlebarsUtils'); var striptags = require('striptags'); /** diff --git a/lib/utils/identity.js b/lib/utils/identity.js new file mode 100644 index 00000000..b06ef3ba --- /dev/null +++ b/lib/utils/identity.js @@ -0,0 +1,31 @@ +'use strict'; + +/** + * This code was taken directly from handlebars-helpers, + * https://github.com/helpers/handlebars-utils/blob/master/index.js#L398 + * + * that was taken directly from handlebars. + * https://github.com/wycats/handlebars.js/blob/b55a120e8222785db3dc00096f6afbf91b656e8a/LICENSE + * Released under the MIT License + * Copyright (C) 2011-2016 by Yehuda Katz + */ + +/** + * Returns the given value as-is, unchanged. + * + * ```js + * console.log(utils.result('foo')); + * //=> 'foo' + * console.log(utils.result(function() { + * return 'foo'; + * })); + * //=> [function] + * ``` + * @param {any} `val` + * @return {any} + * @api public + */ + +module.exports = function(val) { + return val; +}; diff --git a/lib/utils/index.js b/lib/utils/index.js index 6f978198..0ad95ebd 100644 --- a/lib/utils/index.js +++ b/lib/utils/index.js @@ -1,8 +1,5 @@ 'use strict'; -var util = require('handlebars-utils'); -var utils = require('./utils'); - /** * Returns true if the given value contains the given * `object`, optionally passing a starting index. @@ -13,8 +10,8 @@ var utils = require('./utils'); * @return {Boolean} */ -utils.contains = function(val, obj, start) { - if (val == null || obj == null || !utils.isNumber(val.length)) { +exports.contains = function(val, obj, start) { + if (val == null || obj == null || isNaN(val.length)) { return false; } return val.indexOf(obj, start) !== -1; @@ -28,8 +25,8 @@ utils.contains = function(val, obj, start) { * @return {String} */ -utils.chop = function(str) { - if (!util.isString(str)) return ''; +exports.chop = function(str) { + if (typeof(str) !== 'string') return ''; var re = /^[-_.\W\s]+|[-_.\W\s]+$/g; return str.trim().replace(re, ''); }; @@ -51,15 +48,15 @@ utils.chop = function(str) { * @api public */ -utils.changecase = function(str, fn) { - if (!util.isString(str)) return ''; +exports.changecase = function(str, fn) { + if (typeof(str) !== 'string') return ''; if (str.length === 1) { return str.toLowerCase(); } - str = utils.chop(str).toLowerCase(); + str = exports.chop(str).toLowerCase(); if (typeof fn !== 'function') { - fn = utils.identity; + fn = (val) => val; } var re = /[-_.\W\s]+(\w|$)/g; @@ -77,12 +74,6 @@ utils.changecase = function(str, fn) { * @api public */ -utils.random = function(min, max) { +exports.random = function(min, max) { return min + Math.floor(Math.random() * (max - min + 1)); }; - -/** - * Expose `utils` - */ - -module.exports = utils; diff --git a/lib/utils/indexOf.js b/lib/utils/indexOf.js new file mode 100644 index 00000000..b2693a4e --- /dev/null +++ b/lib/utils/indexOf.js @@ -0,0 +1,22 @@ +'use strict'; + +/** + * This code was taken directly from handlebars-helpers, + * https://github.com/helpers/handlebars-utils/blob/master/index.js#L398 + * + * that was taken directly from handlebars. + * https://github.com/wycats/handlebars.js/blob/b55a120e8222785db3dc00096f6afbf91b656e8a/LICENSE + * Released under the MIT License + * Copyright (C) 2011-2016 by Yehuda Katz + */ + +// Older IE versions do not directly support indexOf so we must implement our own, sadly. + +module.exports = function(array, value) { + for (var i = 0, len = array.length; i < len; i++) { + if (array[i] === value) { + return i; + } + } + return -1; +}; diff --git a/lib/utils/inverse.js b/lib/utils/inverse.js new file mode 100644 index 00000000..995af7ad --- /dev/null +++ b/lib/utils/inverse.js @@ -0,0 +1,41 @@ +'use strict'; + +const inverse = require('./inverse'); +const identity = require('./identity'); +const isBlock = require('./isBlock'); +const isOptions = require('./isOptions'); + +/** + * This code was taken directly from handlebars-helpers, + * https://github.com/helpers/handlebars-utils/blob/master/index.js#L398 + * + * that was taken directly from handlebars. + * https://github.com/wycats/handlebars.js/blob/b55a120e8222785db3dc00096f6afbf91b656e8a/LICENSE + * Released under the MIT License + * Copyright (C) 2011-2016 by Yehuda Katz + */ + +/** + * Returns the given value or renders the inverse block if it's a block helper. + * + * ```js + * Handlebars.registerHelper('example', function(val, locals, options) { + * return utils.inverse(val, locals, options); + * }); + * ``` + * @param {any} `val` + * @param {Object} `options` + * @param {Object} `context` + * @return {String} Either returns the value, or renders the inverse block. + * @api public + */ + +module.exports = function(val, context, options) { + if (isOptions(val)) { + return identity('', val, options); + } + if (isOptions(context)) { + return inverse(val, {}, context); + } + return isBlock(options) ? options.inverse(context) : val; +}; diff --git a/lib/utils/isBlock.js b/lib/utils/isBlock.js new file mode 100644 index 00000000..a4aa359e --- /dev/null +++ b/lib/utils/isBlock.js @@ -0,0 +1,38 @@ +'use strict'; + +const isOptions = require('./isOptions'); + +/** + * This code was taken directly from handlebars-helpers, + * https://github.com/helpers/handlebars-utils/blob/master/index.js#L398 + * + * that was taken directly from handlebars. + * https://github.com/wycats/handlebars.js/blob/b55a120e8222785db3dc00096f6afbf91b656e8a/LICENSE + * Released under the MIT License + * Copyright (C) 2011-2016 by Yehuda Katz + */ + +/** + * Returns true if a helper is a block helper. + * + * ```js + * Handlebars.registerHelper('example', function(options) { + * if (utils.isBlock(options)) { + * // do something if this is a block helper + * } else { + * // do something else if this is a not block helper + * } + * }); + * ``` + * @param {Object} `options` Helper options object + * @return {Boolean} + * @api public + */ + +module.exports = + +function(options) { + return isOptions(options) + && typeof options.fn === 'function' + && typeof options.inverse === 'function'; +}; diff --git a/lib/utils/isObject.js b/lib/utils/isObject.js new file mode 100644 index 00000000..f202bb9a --- /dev/null +++ b/lib/utils/isObject.js @@ -0,0 +1,33 @@ +'use strict'; + +/** + * This code was taken directly from handlebars-helpers, + * https://github.com/helpers/handlebars-utils/blob/master/index.js#L398 + * + * that was taken directly from handlebars. + * https://github.com/wycats/handlebars.js/blob/b55a120e8222785db3dc00096f6afbf91b656e8a/LICENSE + * Released under the MIT License + * Copyright (C) 2011-2016 by Yehuda Katz + */ + +/** + * Returns true if the given value is an object. + * + * ```js + * console.log(utils.isObject(null)); + * //=> false + * console.log(utils.isObject([])); + * //=> false + * console.log(utils.isObject(function() {})); + * //=> false + * console.log(utils.isObject({})); + * //=> true + * ``` + * @param {Object} `val` + * @return {Boolean} + * @api public + */ + +module.exports = function(val) { + return !!val && typeof val === 'object'; +}; diff --git a/lib/utils/isOptions.js b/lib/utils/isOptions.js new file mode 100644 index 00000000..329bcc8b --- /dev/null +++ b/lib/utils/isOptions.js @@ -0,0 +1,34 @@ +'use strict'; + +const isObject = require('./isObject'); + +/** + * This code was taken directly from handlebars-helpers, + * https://github.com/helpers/handlebars-utils/blob/master/index.js#L398 + * + * that was taken directly from handlebars. + * https://github.com/wycats/handlebars.js/blob/b55a120e8222785db3dc00096f6afbf91b656e8a/LICENSE + * Released under the MIT License + * Copyright (C) 2011-2016 by Yehuda Katz + */ + +/** + * Returns true if the given value is a handlebar `options` object. + * + * ```js + * Handlebars.registerHelper('example', function(val, locals, options) { + * if (utils.isOptions(locals)) { + * options = locals; + * locals = {}; + * } + * // do stuff + * }); + * ``` + * @param {Object} `val` + * @return {Boolean} + * @api public + */ + +module.exports = function(val) { + return isObject(val) && isObject(val.hash); +}; diff --git a/lib/utils/isString.js b/lib/utils/isString.js new file mode 100644 index 00000000..678a5f52 --- /dev/null +++ b/lib/utils/isString.js @@ -0,0 +1,23 @@ +'use strict'; + +/** + * This code was taken directly from handlebars-helpers, + * https://github.com/helpers/handlebars-utils/blob/master/index.js#L398 + * + * that was taken directly from handlebars. + * https://github.com/wycats/handlebars.js/blob/b55a120e8222785db3dc00096f6afbf91b656e8a/LICENSE + * Released under the MIT License + * Copyright (C) 2011-2016 by Yehuda Katz + */ + +/** + * Return true if `val` is a non-empty string. + * + * @param {any} `val` The value to check + * @return {Boolean} + * @api public + */ + +module.exports = function(val) { + return typeof val === 'string' && val !== ''; +}; diff --git a/lib/utils/isUndefined.js b/lib/utils/isUndefined.js new file mode 100644 index 00000000..f094fdfd --- /dev/null +++ b/lib/utils/isUndefined.js @@ -0,0 +1,34 @@ +'use strict'; + +const isOptions = require('./isOptions'); + +/** + * This code was taken directly from handlebars-helpers, + * https://github.com/helpers/handlebars-utils/blob/master/index.js#L398 + * + * that was taken directly from handlebars. + * https://github.com/wycats/handlebars.js/blob/b55a120e8222785db3dc00096f6afbf91b656e8a/LICENSE + * Released under the MIT License + * Copyright (C) 2011-2016 by Yehuda Katz + */ + +/** + * Returns true if the given value is `undefined` or is a handlebars + * options hash (which means that a value was not passed by the user). + * + * ```js + * Handlebars.registerHelper('example', function(val, options) { + * if (utils.isUndefined(val)) { + * return ''; + * } + * // do stuff + * }); + * ``` + * @param {any} `value` + * @return {Boolean} + * @api public + */ + +module.exports = function(val) { + return val == null || (isOptions(val) && val.hash != null); +}; diff --git a/lib/utils/odd.js b/lib/utils/odd.js new file mode 100644 index 00000000..38595046 --- /dev/null +++ b/lib/utils/odd.js @@ -0,0 +1,15 @@ +'use strict'; + +module.exports = function isOdd(value) { + const n = Math.abs(value); + if (isNaN(n)) { + throw new TypeError('expected a number'); + } + if (!Number.isInteger(n)) { + throw new Error('expected an integer'); + } + if (!Number.isSafeInteger(n)) { + throw new Error('value exceeds maximum safe integer'); + } + return (n % 2) === 1; +}; diff --git a/lib/utils/options.js b/lib/utils/options.js new file mode 100644 index 00000000..c98c5a98 --- /dev/null +++ b/lib/utils/options.js @@ -0,0 +1,50 @@ +'use strict'; + +const isObject = require('./isObject'); +const isOptions = require('./isOptions'); + +/** + * This code was taken directly from handlebars-helpers, + * https://github.com/helpers/handlebars-utils/blob/master/index.js#L398 + * + * that was taken directly from handlebars. + * https://github.com/wycats/handlebars.js/blob/b55a120e8222785db3dc00096f6afbf91b656e8a/LICENSE + * Released under the MIT License + * Copyright (C) 2011-2016 by Yehuda Katz + */ + +/** + * Creates an options object from the `context`, `locals` and `options.` + * Handlebars' `options.hash` is merged onto the options, and if the context + * is created by [templates][], `this.options` will be merged onto the + * options as well. + * + * @param {Object} `context` + * @param {Object} `locals` Options or locals + * @param {Object} `options` + * @return {Boolean} + * @api public + */ + +const _options = function(thisArg, locals, options) { + if (isOptions(thisArg)) { + return _options({}, locals, thisArg); + } + if (isOptions(locals)) { + return _options(thisArg, options, locals); + } + options = options || {}; + if (!isOptions(options)) { + locals = Object.assign({}, locals, options); + } + var opts = Object.assign({}, locals, options.hash); + if (isObject(thisArg)) { + opts = Object.assign({}, thisArg.options, opts); + } + if (opts[options.name]) { + opts = Object.assign({}, opts[options.name], opts); + } + return opts; +}; + +module.exports = _options; diff --git a/lib/utils/result.js b/lib/utils/result.js new file mode 100644 index 00000000..ec60e2e3 --- /dev/null +++ b/lib/utils/result.js @@ -0,0 +1,35 @@ +'use strict'; + +/** + * This code was taken directly from handlebars-helpers, + * https://github.com/helpers/handlebars-utils/blob/master/index.js#L398 + * + * that was taken directly from handlebars. + * https://github.com/wycats/handlebars.js/blob/b55a120e8222785db3dc00096f6afbf91b656e8a/LICENSE + * Released under the MIT License + * Copyright (C) 2011-2016 by Yehuda Katz + */ + +/** + * Returns the given value. If the value is a function it will be + * called with the current context, otherwise the value is returned. + * + * ```js + * console.log(utils.result('foo')); + * //=> 'foo' + * console.log(utils.result(function() { + * return 'foo'; + * })); + * //=> 'foo' + * ``` + * @param {any} `val` + * @return {any} + * @api public + */ + +module.exports = function(val) { + if (typeof val === 'function') { + return val.apply(this, [].slice.call(arguments, 1)); + } + return val; +}; diff --git a/lib/utils/utils.js b/lib/utils/utils.js deleted file mode 100644 index 4f9eb181..00000000 --- a/lib/utils/utils.js +++ /dev/null @@ -1,41 +0,0 @@ -'use strict'; - -var utils = require('lazy-cache')(require); -var fn = require; -require = utils; - -// Array utils -require('array-sort', 'sortBy'); -require('arr-flatten', 'flatten'); - -// Html utils -require('to-gfm-code-block', 'block'); -require('html-tag', 'tag'); - -// JavaScript language utils -require('kind-of', 'typeOf'); - -// matching utils -require('is-glob'); -require('micromatch', 'mm'); -require('falsey'); - -// Number utils -require('is-even'); -require('is-number'); - -// Object utils -require('create-frame'); -require('get-object'); -require('get-value', 'get'); -require('for-own'); - -// Path utils -require('relative'); -require = fn; - -/** - * Expose `utils` - */ - -module.exports = utils; diff --git a/lib/utils/value.js b/lib/utils/value.js new file mode 100644 index 00000000..d52aa55e --- /dev/null +++ b/lib/utils/value.js @@ -0,0 +1,46 @@ +'use strict'; + +const isBlock = require('./isBlock'); +const isOptions = require('./isOptions'); + +/** + * This code was taken directly from handlebars-helpers, + * https://github.com/helpers/handlebars-utils/blob/master/index.js#L398 + * + * that was taken directly from handlebars. + * https://github.com/wycats/handlebars.js/blob/b55a120e8222785db3dc00096f6afbf91b656e8a/LICENSE + * Released under the MIT License + * Copyright (C) 2011-2016 by Yehuda Katz + */ + +/** + * Gets the return value for a helper, by either rendering the block + * or inverse block if it's a block helper, or returning the given value + * (when truthy) or an empty string (when falsey) if it's a non-block expression. + * + * ```js + * Handlebars.registerHelper('example', function(val, locals, options) { + * return utils.value(val, locals, options); + * }); + * ``` + * @param {any} `val` + * @param {Object} `options` + * @param {Object} `context` + * @return {String} + * @api public + */ + +const value = function(val, context, options) { + if (isOptions(val)) { + return value(null, val, options); + } + if (isOptions(context)) { + return value(val, {}, context); + } + if (isBlock(options)) { + return val ? options.fn(context) : options.inverse(context); + } + return val; +}; + +module.exports = value; diff --git a/lib/uuid.js b/lib/uuid.js new file mode 100644 index 00000000..6c6a5bdd --- /dev/null +++ b/lib/uuid.js @@ -0,0 +1,14 @@ +const uuid = require('uuid'); +const helpers = module.exports; + +/** + * Generates a UUID, using the V4 method (identical to the browser crypto.randomUUID function). + * + * @return {String} A newly generated UUID. + * @api public + * @example {{ uuid }} -> f34ebc66-93bd-4f7c-b79b-92b5569138bc + */ +helpers.uuid = function() { + return uuid.v4(); +}; + diff --git a/package.json b/package.json index b51f0d11..0a219341 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { - "name": "handlebars-helpers", + "name": "@budibase/handlebars-helpers", "description": "More than 130 Handlebars helpers in ~20 categories. Helpers can be used with Assemble, Generate, Verb, Ghost, gulp-handlebars, grunt-handlebars, consolidate, or any node.js/Handlebars project.", - "version": "0.10.0", - "homepage": "https://github.com/helpers/handlebars-helpers", + "version": "0.14.0", + "homepage": "https://github.com/Budibase/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ "Adrián Mugnolo (https://github.com/xymbol)", @@ -52,11 +52,12 @@ "Stephen Way (http://stephenway.net)", "Thomas Jaggi (http://responsive.ch)", "Tim Douglas (https://github.com/timdouglas)", - "(https://github.com/homersimpsons)" + "(https://github.com/homersimpsons)", + "Michael Drury (https://github.com/mike12345567)" ], "repository": "helpers/handlebars-helpers", "bugs": { - "url": "https://github.com/helpers/handlebars-helpers/issues" + "url": "https://github.com/Budibase/handlebars-helpers/issues" }, "license": "MIT", "files": [ @@ -65,62 +66,47 @@ ], "main": "index.js", "engines": { - "node": ">=0.12.0" + "node": ">=10.12.0" }, "scripts": { - "test": "mocha" + "lint": "eslint --ext js .", + "test": "mocha", + "update:readmemd": "verb" }, "dependencies": { - "arr-flatten": "^1.1.0", - "array-sort": "^0.1.4", - "create-frame": "^1.0.0", - "define-property": "^1.0.0", - "falsey": "^0.3.2", - "for-in": "^1.0.2", - "for-own": "^1.0.0", "get-object": "^0.2.0", - "get-value": "^2.0.6", - "handlebars": "^4.0.11", - "handlebars-helper-create-frame": "^0.1.0", - "handlebars-utils": "^1.0.6", - "has-value": "^1.0.0", - "helper-date": "^1.0.1", - "helper-markdown": "^1.0.0", - "helper-md": "^0.2.2", + "get-value": "^3.0.1", + "handlebars": "^4.7.7", + "has-value": "^2.0.2", "html-tag": "^2.0.0", - "is-even": "^1.0.0", - "is-glob": "^4.0.0", - "is-number": "^4.0.0", - "kind-of": "^6.0.0", - "lazy-cache": "^2.0.2", - "logging-helpers": "^1.0.0", - "micromatch": "^3.1.4", + "is-glob": "^4.0.1", + "kind-of": "^6.0.3", + "micromatch": "^4.0.5", "relative": "^3.0.2", - "striptags": "^3.1.0", + "striptags": "^3.1.1", "to-gfm-code-block": "^0.1.1", - "year": "^0.2.1" + "uuid": "^9.0.1" }, "devDependencies": { "engine-handlebars": "^0.8.2", + "eslint": "^7.26.0", "fs-exists-sync": "^0.1.0", - "global-modules": "^1.0.0", - "gulp": "^3.9.1", - "gulp-eslint": "^4.0.0", - "gulp-format-md": "^1.0.0", - "gulp-istanbul": "^1.1.2", - "gulp-mocha": "^3.0.1", + "global-modules": "^2.0.0", + "gulp": "^4.0.2", "gulp-unused": "^0.2.1", - "helper-changelog": "^0.3.0", - "helper-coverage": "^0.1.3", "is-valid-app": "^0.3.0", - "js-yaml": "^3.10.0", + "js-yaml": "^4.1.0", "markdown-link": "^0.1.1", - "mocha": "^3.5.2", - "template-helpers": "^0.6.7", + "mocha": "^10.8.2", + "rimraf": "^3.0.2", + "sinon": "^17.0.1", + "template-helpers": "^1.0.1", "templates": "^1.2.9", - "through2": "^2.0.3", - "verb-generate-readme": "^0.6.0", - "vinyl": "^2.1.0" + "through2": "^4.0.2", + "verb": "^0.8.10", + "verb-cli": "^0.7.4", + "verb-generate-readme": "^0.8.0", + "vinyl": "^2.2.1" }, "keywords": [ "array", @@ -172,11 +158,9 @@ }, "reflinks": [ "falsey", - "helper-date", "moment" ], "helpers": [ - "helper-changelog", "helper-coverage" ], "lint": { @@ -194,4 +178,4 @@ } } } -} +} \ No newline at end of file diff --git a/test/array.js b/test/array.js index 5939deed..c7da5c30 100644 --- a/test/array.js +++ b/test/array.js @@ -39,12 +39,7 @@ describe('array', function() { }); it('should return all of the items in an array before the given index', function() { var fn = hbs.compile('{{before array 5}}'); - assert.equal(fn(context), 'a,b,c'); - }); - - it('should return all of the items in an array before the specified count', function() { - var fn = hbs.compile('{{before array 5}}'); - assert.equal(fn(context), 'a,b,c'); + assert.equal(fn(context), 'a,b,c,d'); }); }); @@ -343,6 +338,12 @@ describe('array', function() { assert.equal(res, 'a,b,c'); }); + it('should sort the items in a frozen array', function() { + var fn = hbs.compile('{{sort array}}'); + var res = fn({array: Object.freeze(['c', 'a', 'b'])}); + assert.equal(res, 'a,b,c'); + }); + it('should return all items in an array sorted in lexicographical order', function() { var fn = hbs.compile('{{sort array}}'); assert.equal(fn(context), 'a,b,c,d,e,f,g,h'); @@ -353,6 +354,12 @@ describe('array', function() { var res = fn({array: ['c', 'a', 'b']}); assert.equal(res, 'c,b,a'); }); + + it('should sort the items in a frozen array in reverse order:', function() { + var fn = hbs.compile('{{sort array reverse="true"}}'); + var res = fn({array: Object.freeze(['c', 'a', 'b'])}); + assert.equal(res, 'c,b,a'); + }); }); describe('sortBy', function() { diff --git a/test/examples/index.js b/test/examples/index.js new file mode 100644 index 00000000..bb4bec66 --- /dev/null +++ b/test/examples/index.js @@ -0,0 +1,132 @@ + +'use strict'; + +require('mocha'); + +const sinon = require('sinon'); +sinon.stub(require('../../lib/uuid'), 'uuid').returns('f34ebc66-93bd-4f7c-b79b-92b5569138bc'); + +sinon.stub(require('../../lib/math'), 'random').returns(10); + +var assert = require('assert'); +var lib = require('../../lib/'); + +const fs = require('fs'); +const doctrine = require('doctrine'); +const path = require('path'); + +var handlebars = require('handlebars').create(); +var helpers = require('../..'); + +function lookForward(lines, funcLines, idx) { + const funcLen = funcLines.length; + for (let i = idx, j = 0; i < idx + funcLen; ++i, j++) { + if (!lines[i].includes(funcLines[j])) { + return false; + } + } + return true; +} + +function getCommentInfo(file, func) { + const lines = file.split('\n'); + const funcLines = func.split('\n'); + let comment = null; + for (let idx = 0; idx < lines.length; ++idx) { + // from here work back until we have the comment + if (lookForward(lines, funcLines, idx)) { + let fromIdx = idx; + let start = 0, + end = 0; + do { + if (lines[fromIdx].includes('*/')) { + end = fromIdx; + } else if (lines[fromIdx].includes('/*')) { + start = fromIdx; + } + if (start && end) { + break; + } + fromIdx--; + } while (fromIdx > 0); + comment = lines.slice(start, end + 1).join('\n'); + } + } + if (comment == null) { + return { description: '' }; + } + const docs = doctrine.parse(comment, { unwrap: true }); + // some hacky fixes + docs.description = docs.description.replace(/\n/g, ' '); + docs.description = docs.description.replace(/[ ]{2,}/g, ' '); + docs.description = docs.description.replace(/is is/g, 'is'); + const examples = docs.tags + .filter(el => el.title === 'example') + .map(el => el.description); + const blocks = docs.description.split('```'); + if (examples.length > 0) { + docs.example = examples.join(' '); + } + // hacky example fix + if (docs.example && docs.example.includes('product')) { + docs.example = docs.example.replace('product', 'multiply'); + } + docs.description = blocks[0].trim(); + return docs; +} + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +describe('examples', function() { + for (const key in lib) { + helpers[key]({ handlebars }); + + const group = lib[key]; + + const fileContent = fs.readFileSync(require.resolve(path.join('../../lib/', key)), 'utf8'); + + describe(key, function() { + for (const func in group) { + const { example } = getCommentInfo(fileContent, lib[key][func].toString()); + + example && it(func, function() { + let [hbs, expectedResult] = example.split('->').map(x => x.trim()); + + const context = { + double: i => i * 2, + isString: (x) => typeof(x) === 'string' + }; + + const arrays = hbs.match(/\[[^/\]]+\]/); + arrays && arrays.forEach((arrayString, i) => { + hbs = hbs.replace(new RegExp(escapeRegExp(arrayString)), `array${i}`); + context[`array${i}`] = JSON.parse(arrayString.replace(/\'/g, '"')); + }); + + if (expectedResult === undefined) { + // The function has no return value + return; + } + + let result = handlebars.compile(hbs)(context); + // Trim 's + expectedResult = expectedResult.replace(/^\'|\'$/g, ''); + try { + let parsedExpected; + if ( + Array.isArray((parsedExpected = JSON.parse(expectedResult.replace(/\'/g, '"')))) + ) { + expectedResult = parsedExpected.join(','); + } + } catch (e) { + // Nothing to parse + } + result = result.replace(/&nbsp;/g, ' '); + assert.equal(result, expectedResult); + }); + } + }); + } +}); diff --git a/test/fs.js b/test/fs.js deleted file mode 100644 index e0b484bd..00000000 --- a/test/fs.js +++ /dev/null @@ -1,129 +0,0 @@ -'use strict'; - -require('mocha'); -var fs = require('fs'); -var path = require('path'); -var assert = require('assert'); -var hbs = require('handlebars').create(); -require('..')({handlebars: hbs}); - -var libFiles = fs.readdirSync(path.join(__dirname, '../lib')) - .map(function(fp) { - return path.join('lib', fp); - }); - -describe('fs', function() { - describe('read', function() { - it('should read a file from the file system', function() { - var fn = hbs.compile('{{read filepath}}'); - assert.equal(fn({filepath: 'test/fixtures/read/a.txt'}), 'abc'); - }); - }); - - describe('readdir', function() { - it('should return an array of files', function() { - var fn = hbs.compile('{{readdir dir}}'); - assert.deepEqual(fn({dir: 'lib'}).split(','), libFiles); - }); - - it('should work as a subexpression', function() { - var fn = hbs.compile('{{match (readdir dir) "**/[a-c]*.js"}}'); - assert.deepEqual(fn({dir: 'lib'}).split(','), [ - 'lib/array.js', - 'lib/code.js', - 'lib/collection.js', - 'lib/comparison.js' - ]); - }); - - it('should filter using a custom filter function', function() { - var fn = hbs.compile('{{readdir dir filter}}'); - function filter(arr) { - return arr.filter(function(fp) { - return /\.js$/.test(fp); - }); - } - - assert.deepEqual(fn({dir: 'lib', filter: filter}).split(','), [ - path.join('lib', 'array.js'), - path.join('lib', 'code.js'), - path.join('lib', 'collection.js'), - path.join('lib', 'comparison.js'), - path.join('lib', 'date.js'), - path.join('lib', 'fs.js'), - path.join('lib', 'html.js'), - path.join('lib', 'i18n.js'), - path.join('lib', 'index.js'), - path.join('lib', 'inflection.js'), - path.join('lib', 'logging.js'), - path.join('lib', 'markdown.js'), - path.join('lib', 'match.js'), - path.join('lib', 'math.js'), - path.join('lib', 'misc.js'), - path.join('lib', 'number.js'), - path.join('lib', 'object.js'), - path.join('lib', 'path.js'), - path.join('lib', 'regex.js'), - path.join('lib', 'string.js'), - path.join('lib', 'url.js') - ]); - }); - - it('should filter using a regex', function() { - var fn = hbs.compile('{{readdir dir (toRegex "\\.js$")}}'); - assert.deepEqual(fn({dir: 'lib'}).split(','), [ - path.join('lib', 'array.js'), - path.join('lib', 'code.js'), - path.join('lib', 'collection.js'), - path.join('lib', 'comparison.js'), - path.join('lib', 'date.js'), - path.join('lib', 'fs.js'), - path.join('lib', 'html.js'), - path.join('lib', 'i18n.js'), - path.join('lib', 'index.js'), - path.join('lib', 'inflection.js'), - path.join('lib', 'logging.js'), - path.join('lib', 'markdown.js'), - path.join('lib', 'match.js'), - path.join('lib', 'math.js'), - path.join('lib', 'misc.js'), - path.join('lib', 'number.js'), - path.join('lib', 'object.js'), - path.join('lib', 'path.js'), - path.join('lib', 'regex.js'), - path.join('lib', 'string.js'), - path.join('lib', 'url.js') - ]); - }); - - it('should filter using a glob pattern', function() { - var fn = hbs.compile('{{readdir dir "lib/[a-d]*.js"}}'); - assert.deepEqual(fn({dir: 'lib'}).split(','), [ - path.join('lib', 'array.js'), - path.join('lib', 'code.js'), - path.join('lib', 'collection.js'), - path.join('lib', 'comparison.js'), - path.join('lib', 'date.js') - ]); - }); - - it('should filter by fs.stat (files)', function() { - var fn = hbs.compile('{{readdir dir "isFile"}}'); - assert.deepEqual(fn({dir: 'lib'}).split(','), libFiles.filter(function(fp) { - return fp.indexOf(path.join('lib', 'util')) !== 0; - })); - }); - - it('should filter by fs.stat (dirs)', function() { - var fn = hbs.compile('{{readdir dir "isDirectory"}}'); - assert.deepEqual(fn({dir: 'lib'}).split(','), [ - path.join('lib', 'utils') - ]); - }); - - it('should return the whole array when the filter is invalid', function() { - var fn = hbs.compile('{{readdir dir "foo"}}'); - assert.deepEqual(fn({dir: 'lib'}).split(','), libFiles); - }); - }); -}); diff --git a/test/markdown.js b/test/markdown.js deleted file mode 100644 index 2551a602..00000000 --- a/test/markdown.js +++ /dev/null @@ -1,26 +0,0 @@ -'use strict'; - -require('mocha'); -var assert = require('assert'); -var fs = require('fs'); -var hbs = require('handlebars').create(); -var helpers = require('..'); -helpers.markdown({handlebars: hbs}); - -describe('markdown', function() { - describe('markdown', function() { - it('should render markdown using the {{#markdown}} block helper', function() { - var template = hbs.compile('{{#markdown}}## {{../title}}{{/markdown}}'); - assert.equal(template({title: 'Markdown Test'}), '

Markdown Test

\n'); - }); - }); - - describe('md', function() { - it('should render markdown from a file using the {{md}} inline helper', function() { - var expected = fs.readFileSync('test/expected/simple.html', 'utf8'); - var template = hbs.compile('{{{md fp}}}'); - var actual = template({fp: 'test/fixtures/simple.md'}); - assert.equal(actual, expected); - }); - }); -}); diff --git a/test/match.js b/test/match.js index e825b9cb..ec1f111c 100644 --- a/test/match.js +++ b/test/match.js @@ -14,13 +14,13 @@ describe('matching', function() { describe('match', function() { it('should use the main micromatch function to filter an array', function() { var fn = hbs.compile('{{match files "(a|u)*.js"}}'); - assert.equal(fn({files: testFiles}), 'array.js,url.js,utils.js'); + assert.equal(fn({files: testFiles}), 'array.js,url.js,utils.js,uuid.js'); }); it('should take an array of patterns', function() { var ctx = {files: testFiles, patterns: ['(a|u)*.js', 'f*.js']}; var fn = hbs.compile('{{match files patterns}}'); - assert.equal(fn(ctx), 'array.js,url.js,utils.js,fs.js'); + assert.equal(fn(ctx), 'array.js,url.js,utils.js,uuid.js'); }); it('should take options from the "options[helper name]" object', function() { @@ -37,7 +37,7 @@ describe('matching', function() { it('should use return matching items', function() { var fn = hbs.compile('{{match files "(a|u)*.js"}}'); - assert.equal(fn({files: testFiles}), 'array.js,url.js,utils.js'); + assert.equal(fn({files: testFiles}), 'array.js,url.js,utils.js,uuid.js'); }); it('should take options from the "options[helper name]" object', function() { diff --git a/test/path.js b/test/path.js index d2ae8145..e3d54b1c 100644 --- a/test/path.js +++ b/test/path.js @@ -34,7 +34,7 @@ describe('assemble', function() { var fn = hbs.compile('{{relative "dist/docs.html" "index.html"}}'); assert.equal(fn(), path.join('..', 'index.html')); }); - it('should return the relative path from file A to file B', function() { + it('should return the relative path from file A to folder B', function() { var fn = hbs.compile('{{relative "examples/result/md/path.md" "examples/assets"}}'); assert.equal(fn(), path.join('..', '..', 'assets')); }); diff --git a/test/string.js b/test/string.js index c18388d2..493c366d 100644 --- a/test/string.js +++ b/test/string.js @@ -4,7 +4,7 @@ require('mocha'); var assert = require('assert'); var hbs = require('handlebars').create(); var helpers = require('..'); -helpers.string({handlebars: hbs}); +helpers.string({ handlebars: hbs }); describe('string', function() { describe('camelcase', function() { @@ -359,6 +359,28 @@ describe('string', function() { }); }); + describe('truncateWords', function() { + it('should return then string truncated when the specified length is shorter than the word count', function() { + var fn = hbs.compile('{{truncateWords "foo bar baz" 2}}'); + assert.equal(fn(), 'foo bar…'); + }); + + it('should be able to truncate a single word', function() { + var fn = hbs.compile('{{truncateWords "foo bar baz" 1}}'); + assert.equal(fn(), 'foo…'); + }); + + it('should return the original string when the specified length matches the word count', function() { + var fn = hbs.compile('{{truncateWords "foo bar baz" 3}}'); + assert.equal(fn(), 'foo bar baz'); + }); + + it('should return the original string when the specified length is bigger than the word count', function() { + var fn = hbs.compile('{{truncateWords "foo bar baz" 4}}'); + assert.equal(fn(), 'foo bar baz'); + }); + }); + describe('uppercase', function() { it('should return an empty string if undefined', function() { var fn = hbs.compile('{{uppercase}}'); @@ -375,5 +397,50 @@ describe('string', function() { assert.equal(fn(), 'BENDER SHOULD NOT BE ALLOWED ON TV'); }); }); + + describe('lorem', function() { + // Bad parameters + it('Should return "Lorem ipsum" only, if passed no parameters', function() { + var fn = hbs.compile('{{ lorem }}'); + assert.equal(fn(), 'Lorem ipsum'); + }); + it('Should return "Lorem ipsum" only, if passed a non-number (string)', function() { + var fn = hbs.compile('{{ lorem a }}'); + assert.equal(fn(), 'Lorem ipsum'); + }); + it('Should return "Lorem ipsum" only, if passed a non-number (array)', function() { + var fn = hbs.compile('{{ lorem [1,2,3] }}'); + assert.equal(fn(), 'Lorem ipsum'); + }); + it('Should return "Lorem ipsum" only, if passed a number less than 1', function() { + var fn = hbs.compile('{{ lorem -1 }}'); + assert.equal(fn(), 'Lorem ipsum'); + }); + it('Should return "Lorem ipsum" only, if passed a number less than 1', function() { + var fn = hbs.compile('{{ lorem 0 }}'); + assert.equal(fn(), 'Lorem ipsum'); + }); + it('Should return "Lorem ipsum" only, if passed a number less than 1', function() { + var fn = hbs.compile('{{ lorem -999 }}'); + assert.equal(fn(), 'Lorem ipsum'); + }); + // Good parameters + it('Should return a string of "Lorem ipsum" if passed 11', function() { + var fn = hbs.compile('{{ lorem 11 }}'); + assert.equal(fn(), 'Lorem ipsum'); + }); + it('Should return a string of "Lorem" if passed 5', function() { + var fn = hbs.compile('{{ lorem 5 }}'); + assert.equal(fn(), 'Lorem'); + }); + it('Should return a string of "Lorem ipsum dolor sit amet, consectetur adipiscing" if passed 50', function() { + var fn = hbs.compile('{{ lorem 50 }}'); + assert.equal(fn(), 'Lorem ipsum dolor sit amet, consectetur adipiscing'); + }); + it('Should return a string of length 8032 if passed 8032', function() { + var fn = hbs.compile('{{ lorem 8032 }}'); + assert.equal(fn().length, 8032); + }); + }); }); diff --git a/test/uuid.js b/test/uuid.js new file mode 100644 index 00000000..5d845780 --- /dev/null +++ b/test/uuid.js @@ -0,0 +1,13 @@ +'use strict'; + +require('mocha'); +const assert = require('assert'); +const uuid = require('../lib/uuid'); + +describe('uuid', function() { + describe('generate', function() { + it('should generate a valid uuid', function() { + assert.match(uuid.uuid(), /^[0-9A-F]{8}-[0-9A-F]{4}-4[0-9A-F]{3}-[89AB][0-9A-F]{3}-[0-9A-F]{12}$/i); + }); + }); +}); diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000..d21687a6 --- /dev/null +++ b/yarn.lock @@ -0,0 +1,8121 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@babel/code-frame@7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== + dependencies: + "@babel/highlight" "^7.10.4" + +"@babel/helper-validator-identifier@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.5.tgz#d0f0e277c512e0c938277faa85a3968c9a44c0e8" + integrity sha512-5lsetuxCLilmVGyiLEfoHBRX8UCFD+1m2x3Rj97WrW3V7H3u4RWRXA4evMjImCsin2J2YT0QaVDGf+z8ondbAg== + +"@babel/highlight@^7.10.4": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.5.tgz#6861a52f03966405001f6aa534a01a24d99e8cd9" + integrity sha512-qf9u2WFWVV0MppaL877j2dBtQIDgmidgjGk5VIMw3OadXvYaXn66U1BFlH2t4+t3i+8PhedppRv+i40ABzd+gg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.5" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@eslint/eslintrc@^0.4.2": + version "0.4.2" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179" + integrity sha512-8nmGq/4ycLpIwzvhI4tNDmQztZ8sp+hI7cyG8i1nQDhkAbRzHpXPidRAHlNvCZQpJTKw5ItIpMw9RSToGF00mg== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^13.9.0" + ignore "^4.0.6" + import-fresh "^3.2.1" + js-yaml "^3.13.1" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@sinonjs/commons@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" + integrity sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg== + dependencies: + type-detect "4.0.8" + +"@sinonjs/commons@^3.0.0": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-3.0.1.tgz#1029357e44ca901a615585f6d27738dbc89084cd" + integrity sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ== + dependencies: + type-detect "4.0.8" + +"@sinonjs/fake-timers@^11.2.2": + version "11.2.2" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz#50063cc3574f4a27bd8453180a04171c85cc9699" + integrity sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw== + dependencies: + "@sinonjs/commons" "^3.0.0" + +"@sinonjs/samsam@^8.0.0": + version "8.0.0" + resolved "https://registry.yarnpkg.com/@sinonjs/samsam/-/samsam-8.0.0.tgz#0d488c91efb3fa1442e26abea81759dfc8b5ac60" + integrity sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew== + dependencies: + "@sinonjs/commons" "^2.0.0" + lodash.get "^4.4.2" + type-detect "^4.0.8" + +"@sinonjs/text-encoding@^0.7.2": + version "0.7.2" + resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" + integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== + +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== + +acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== + +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== + dependencies: + fast-deep-equal "^3.1.1" + fast-json-stable-stringify "^2.0.0" + json-schema-traverse "^0.4.1" + uri-js "^4.2.2" + +ajv@^8.0.1: + version "8.6.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.6.0.tgz#60cc45d9c46a477d80d92c48076d972c342e5720" + integrity sha512-cnUG4NSBiM4YFBxgZIj/In3/6KX+rQ2l2YPRVcvAMQGWEPKuXoPIhxzwqh31jA3IPbI4qEOp/5ILI4ynioXsGQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +align-text@^0.1.1, align-text@^0.1.3: + version "0.1.4" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" + integrity sha1-DNkKVhCT810KmSVsIrcGlDP60Rc= + dependencies: + kind-of "^3.0.2" + longest "^1.0.1" + repeat-string "^1.5.2" + +align-text@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/align-text/-/align-text-1.0.2.tgz#d35cf1c99bc16089af1b2a887683adcb7e6ca68a" + integrity sha512-uBPDs72zrRTdiTBY0YjBbuBOdXtRyT4qsKPb4bL4O7vH4utz/7KjwTJVsVbdThxMbVzkRGAfk8Ml3xoMvXSEYw== + dependencies: + kind-of "^5.0.2" + longest "^2.0.1" + repeat-string "^1.6.1" + +ansi-bgblack@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgblack/-/ansi-bgblack-0.1.1.tgz#a68ba5007887701b6aafbe3fa0dadfdfa8ee3ca2" + integrity sha1-poulAHiHcBtqr74/oNrf36juPKI= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgblue@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgblue/-/ansi-bgblue-0.1.1.tgz#67bdc04edc9b9b5278969da196dea3d75c8c3613" + integrity sha1-Z73ATtybm1J4lp2hlt6j11yMNhM= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgcyan@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgcyan/-/ansi-bgcyan-0.1.1.tgz#58489425600bde9f5507068dd969ebfdb50fe768" + integrity sha1-WEiUJWAL3p9VBwaN2Wnr/bUP52g= + dependencies: + ansi-wrap "0.1.0" + +ansi-bggreen@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bggreen/-/ansi-bggreen-0.1.1.tgz#4e3191248529943f4321e96bf131d1c13816af49" + integrity sha1-TjGRJIUplD9DIelr8THRwTgWr0k= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgmagenta@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgmagenta/-/ansi-bgmagenta-0.1.1.tgz#9b28432c076eaa999418672a3efbe19391c2c7a1" + integrity sha1-myhDLAduqpmUGGcqPvvhk5HCx6E= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgred@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgred/-/ansi-bgred-0.1.1.tgz#a76f92838382ba43290a6c1778424f984d6f1041" + integrity sha1-p2+Sg4OCukMpCmwXeEJPmE1vEEE= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgwhite@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgwhite/-/ansi-bgwhite-0.1.1.tgz#6504651377a58a6ececd0331994e480258e11ba8" + integrity sha1-ZQRlE3elim7OzQMxmU5IAljhG6g= + dependencies: + ansi-wrap "0.1.0" + +ansi-bgyellow@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bgyellow/-/ansi-bgyellow-0.1.1.tgz#c3fe2eb08cd476648029e6874d15a0b38f61d44f" + integrity sha1-w/4usIzUdmSAKeaHTRWgs49h1E8= + dependencies: + ansi-wrap "0.1.0" + +ansi-black@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-black/-/ansi-black-0.1.1.tgz#f6185e889360b2545a1ec50c0bf063fc43032453" + integrity sha1-9hheiJNgslRaHsUMC/Bj/EMDJFM= + dependencies: + ansi-wrap "0.1.0" + +ansi-blue@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-blue/-/ansi-blue-0.1.1.tgz#15b804990e92fc9ca8c5476ce8f699777c21edbf" + integrity sha1-FbgEmQ6S/JyoxUds6PaZd3wh7b8= + dependencies: + ansi-wrap "0.1.0" + +ansi-bold@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-bold/-/ansi-bold-0.1.1.tgz#3e63950af5acc2ae2e670e6f67deb115d1a5f505" + integrity sha1-PmOVCvWswq4uZw5vZ96xFdGl9QU= + dependencies: + ansi-wrap "0.1.0" + +ansi-colors@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-0.2.0.tgz#72c31de2a0d9a2ccd0cac30cc9823eeb2f6434b5" + integrity sha1-csMd4qDZoszQysMMyYI+6y9kNLU= + dependencies: + ansi-bgblack "^0.1.1" + ansi-bgblue "^0.1.1" + ansi-bgcyan "^0.1.1" + ansi-bggreen "^0.1.1" + ansi-bgmagenta "^0.1.1" + ansi-bgred "^0.1.1" + ansi-bgwhite "^0.1.1" + ansi-bgyellow "^0.1.1" + ansi-black "^0.1.1" + ansi-blue "^0.1.1" + ansi-bold "^0.1.1" + ansi-cyan "^0.1.1" + ansi-dim "^0.1.1" + ansi-gray "^0.1.1" + ansi-green "^0.1.1" + ansi-grey "^0.1.1" + ansi-hidden "^0.1.1" + ansi-inverse "^0.1.1" + ansi-italic "^0.1.1" + ansi-magenta "^0.1.1" + ansi-red "^0.1.1" + ansi-reset "^0.1.1" + ansi-strikethrough "^0.1.1" + ansi-underline "^0.1.1" + ansi-white "^0.1.1" + ansi-yellow "^0.1.1" + lazy-cache "^2.0.1" + +ansi-colors@^1.0.1, ansi-colors@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-1.1.0.tgz#6374b4dd5d4718ff3ce27a671a3b1cad077132a9" + integrity sha512-SFKX67auSNoVR38N3L+nvsPjOE0bybKTYbkf5tRvushrAPQ9V75huw0ZxBkKVeRU9kqH3d6HA4xTckbwZ4ixmA== + dependencies: + ansi-wrap "^0.1.0" + +ansi-colors@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.1.tgz#cbb9ae256bf750af1eab344f229aa27fe94ba348" + integrity sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA== + +ansi-colors@^4.1.3: + version "4.1.3" + resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-4.1.3.tgz#37611340eb2243e70cc604cad35d63270d48781b" + integrity sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw== + +ansi-cyan@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-cyan/-/ansi-cyan-0.1.1.tgz#538ae528af8982f28ae30d86f2f17456d2609873" + integrity sha1-U4rlKK+JgvKK4w2G8vF0VtJgmHM= + dependencies: + ansi-wrap "0.1.0" + +ansi-dim@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-dim/-/ansi-dim-0.1.1.tgz#40de4c603aa8086d8e7a86b8ff998d5c36eefd6c" + integrity sha1-QN5MYDqoCG2Oeoa4/5mNXDbu/Ww= + dependencies: + ansi-wrap "0.1.0" + +ansi-gray@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-gray/-/ansi-gray-0.1.1.tgz#2962cf54ec9792c48510a3deb524436861ef7251" + integrity sha1-KWLPVOyXksSFEKPetSRDaGHvclE= + dependencies: + ansi-wrap "0.1.0" + +ansi-green@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-green/-/ansi-green-0.1.1.tgz#8a5d9a979e458d57c40e33580b37390b8e10d0f7" + integrity sha1-il2al55FjVfEDjNYCzc5C44Q0Pc= + dependencies: + ansi-wrap "0.1.0" + +ansi-grey@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-grey/-/ansi-grey-0.1.1.tgz#59d98b6ac2ba19f8a51798e9853fba78339a33c1" + integrity sha1-WdmLasK6GfilF5jphT+6eDOaM8E= + dependencies: + ansi-wrap "0.1.0" + +ansi-hidden@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-hidden/-/ansi-hidden-0.1.1.tgz#ed6a4c498d2bb7cbb289dbf2a8d1dcc8567fae0f" + integrity sha1-7WpMSY0rt8uyidvyqNHcyFZ/rg8= + dependencies: + ansi-wrap "0.1.0" + +ansi-inverse@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-inverse/-/ansi-inverse-0.1.1.tgz#b6af45826fe826bfb528a6c79885794355ccd269" + integrity sha1-tq9Fgm/oJr+1KKbHmIV5Q1XM0mk= + dependencies: + ansi-wrap "0.1.0" + +ansi-italic@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-italic/-/ansi-italic-0.1.1.tgz#104743463f625c142a036739cf85eda688986f23" + integrity sha1-EEdDRj9iXBQqA2c5z4XtpoiYbyM= + dependencies: + ansi-wrap "0.1.0" + +ansi-magenta@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-magenta/-/ansi-magenta-0.1.1.tgz#063b5ba16fb3f23e1cfda2b07c0a89de11e430ae" + integrity sha1-BjtboW+z8j4c/aKwfAqJ3hHkMK4= + dependencies: + ansi-wrap "0.1.0" + +ansi-red@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-red/-/ansi-red-0.1.1.tgz#8c638f9d1080800a353c9c28c8a81ca4705d946c" + integrity sha1-jGOPnRCAgAo1PJwoyKgcpHBdlGw= + dependencies: + ansi-wrap "0.1.0" + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +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@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-5.0.0.tgz#388539f55179bf39339c81af30a654d69f87cb75" + integrity sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg== + +ansi-reset@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-reset/-/ansi-reset-0.1.1.tgz#e7e71292c3c7ddcd4d62ef4a6c7c05980911c3b7" + integrity sha1-5+cSksPH3c1NYu9KbHwFmAkRw7c= + dependencies: + ansi-wrap "0.1.0" + +ansi-strikethrough@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-strikethrough/-/ansi-strikethrough-0.1.1.tgz#d84877140b2cff07d1c93ebce69904f68885e568" + integrity sha1-2Eh3FAss/wfRyT685pkE9oiF5Wg= + dependencies: + ansi-wrap "0.1.0" + +ansi-styles@^2.0.1, ansi-styles@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe" + integrity sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4= + +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" + +ansi-styles@^4.0.0, ansi-styles@^4.1.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== + dependencies: + color-convert "^2.0.1" + +ansi-underline@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-underline/-/ansi-underline-0.1.1.tgz#dfc920f4c97b5977ea162df8ffb988308aaa71a4" + integrity sha1-38kg9Ml7WXfqFi34/7mIMIqqcaQ= + dependencies: + ansi-wrap "0.1.0" + +ansi-white@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-white/-/ansi-white-0.1.1.tgz#9c77b7c193c5ee992e6011d36ec4c921b4578944" + integrity sha1-nHe3wZPF7pkuYBHTbsTJIbRXiUQ= + dependencies: + ansi-wrap "0.1.0" + +ansi-wrap@0.1.0, ansi-wrap@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ansi-wrap/-/ansi-wrap-0.1.0.tgz#a82250ddb0015e9a27ca82e82ea603bbfa45efaf" + integrity sha1-qCJQ3bABXponyoLoLqYDu/pF768= + +ansi-yellow@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/ansi-yellow/-/ansi-yellow-0.1.1.tgz#cb9356f2f46c732f0e3199e6102955a77da83c1d" + integrity sha1-y5NW8vRscy8OMZnmEClVp32oPB0= + dependencies: + ansi-wrap "0.1.0" + +any@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/any/-/any-1.0.0.tgz#0a7b348c589faf6ba708d4a2241069ea51628b5e" + integrity sha1-Cns0jFifr2unCNSiJBBp6lFii14= + dependencies: + for-own "^0.1.2" + make-iterator "^0.1.0" + +anymatch@^1.3.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a" + integrity sha512-0XNayC8lTHQ2OI8aljNCN3sSx6hsr/1+rlcDAotXJR7C1oZZHCNsfpbKwMjRA3Uqb5tF1Rae2oloTr4xpq+WjA== + dependencies: + micromatch "^2.1.5" + normalize-path "^2.0.0" + +anymatch@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-2.0.0.tgz#bcb24b4f37934d9aa7ac17b4adaf89e7c76ef2eb" + integrity sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw== + dependencies: + micromatch "^3.1.4" + normalize-path "^2.1.1" + +anymatch@~3.1.2: + version "3.1.3" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.3.tgz#790c58b19ba1720a84205b57c618d5ad8524973e" + integrity sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw== + dependencies: + normalize-path "^3.0.0" + picomatch "^2.0.4" + +api-toc@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/api-toc/-/api-toc-0.3.2.tgz#5e73e7aa4b8dac74a79d9e616be914a91de047fa" + integrity sha1-XnPnqkuNrHSnnZ5ha+kUqR3gR/o= + dependencies: + code-context "^0.5.2" + filter-object "^2.0.0" + markdown-utils "^0.7.0" + mixin-deep "^1.1.1" + relative "^3.0.1" + +append-buffer@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/append-buffer/-/append-buffer-1.0.2.tgz#d8220cf466081525efea50614f3de6514dfa58f1" + integrity sha1-2CIM9GYIFSXv6lBhTz3mUU36WPE= + dependencies: + buffer-equal "^1.0.0" + +archy@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" + integrity sha1-+cjBN1fMHde8N5rHeyxipcKGjEA= + +argparse@^1.0.10, 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" + +argparse@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" + integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q== + +arr-diff@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-1.1.0.tgz#687c32758163588fef7de7b36fabe495eb1a399a" + integrity sha1-aHwydYFjWI/vfeezb6vklesaOZo= + dependencies: + arr-flatten "^1.0.1" + array-slice "^0.2.3" + +arr-diff@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf" + integrity sha1-jzuCf5Vai9ZpaX5KQlasPOrjVs8= + dependencies: + arr-flatten "^1.0.1" + +arr-diff@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520" + integrity sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA= + +arr-filter@^1.1.0, arr-filter@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/arr-filter/-/arr-filter-1.1.2.tgz#43fdddd091e8ef11aa4c45d9cdc18e2dff1711ee" + integrity sha1-Q/3d0JHo7xGqTEXZzcGOLf8XEe4= + dependencies: + make-iterator "^1.0.0" + +arr-flatten@^1.0.0, arr-flatten@^1.0.1, arr-flatten@^1.0.3, arr-flatten@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1" + integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg== + +arr-map@^2.0.0, arr-map@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/arr-map/-/arr-map-2.0.2.tgz#3a77345ffc1cf35e2a91825601f9e58f2e24cac4" + integrity sha1-Onc0X/wc814qkYJWAfnljy4kysQ= + dependencies: + make-iterator "^1.0.0" + +arr-pluck@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/arr-pluck/-/arr-pluck-0.1.0.tgz#f8ad6d708f87900881e23afd830d52290a766775" + integrity sha1-+K1tcI+HkAiB4jr9gw1SKQp2Z3U= + dependencies: + arr-map "^2.0.0" + +arr-union@^2.0.1: + version "2.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-2.1.0.tgz#20f9eab5ec70f5c7d215b1077b1c39161d292c7d" + integrity sha1-IPnqtexw9cfSFbEHexw5Fh0pLH0= + +arr-union@^3.0.0, arr-union@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" + integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= + +array-differ@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-differ/-/array-differ-1.0.0.tgz#eff52e3758249d33be402b8bb8e564bb2b5d4031" + integrity sha1-7/UuN1gknTO+QCuLuOVkuytdQDE= + +array-each@^1.0.0, array-each@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/array-each/-/array-each-1.0.1.tgz#a794af0c05ab1752846ee753a1f211a05ba0c44f" + integrity sha1-p5SvDAWrF1KEbudTofIRoFugxE8= + +array-flatten@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/array-flatten/-/array-flatten-2.1.2.tgz#24ef80a28c1a893617e2149b0c6d0d788293b099" + integrity sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ== + +array-initial@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-initial/-/array-initial-1.1.0.tgz#2fa74b26739371c3947bd7a7adc73be334b3d795" + integrity sha1-L6dLJnOTccOUe9enrcc74zSz15U= + dependencies: + array-slice "^1.0.0" + is-number "^4.0.0" + +array-last@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/array-last/-/array-last-1.3.0.tgz#7aa77073fec565ddab2493f5f88185f404a9d336" + integrity sha512-eOCut5rXlI6aCOS7Z7kCplKRKyiFQ6dHFBem4PwlwKeNFk2/XxTrhRh5T9PyaEWGy/NHTZWbY+nsZlNFJu9rYg== + dependencies: + is-number "^4.0.0" + +array-rest@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/array-rest/-/array-rest-0.1.1.tgz#99e0dfcb0aed633f4b72cd4399b053e1054f6fb5" + integrity sha1-meDfywrtYz9Lcs1DmbBT4QVPb7U= + dependencies: + array-slice "^0.2.2" + is-number "^0.1.1" + should "^4.3.1" + +array-slice@^0.2.2, array-slice@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-0.2.3.tgz#dd3cfb80ed7973a75117cdac69b0b99ec86186f5" + integrity sha1-3Tz7gO15c6dRF82sabC5nshhhvU= + +array-slice@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/array-slice/-/array-slice-1.1.0.tgz#e368ea15f89bc7069f7ffb89aec3a6c7d4ac22d4" + integrity sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w== + +array-sort@^0.1.2: + version "0.1.4" + resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-0.1.4.tgz#662855eaeb671b4188df4451b2f24a0753992b23" + integrity sha512-BNcM+RXxndPxiZ2rd76k6nyQLRZr2/B/sdi8pQ+Joafr5AH279L40dfokSUTp8O+AaqYjXWhblBWa2st2nc4fQ== + dependencies: + default-compare "^1.0.0" + get-value "^2.0.6" + kind-of "^5.0.2" + +array-sort@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/array-sort/-/array-sort-1.0.0.tgz#e4c05356453f56f53512a7d1d6123f2c54c0a88a" + integrity sha512-ihLeJkonmdiAsD7vpgN3CRcx2J2S0TiYW+IS/5zHBI7mKUq3ySvBdzzBfD236ubDBQFiiyG3SWCPc+msQ9KoYg== + dependencies: + default-compare "^1.0.0" + get-value "^2.0.6" + kind-of "^5.0.2" + +array-union@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/array-union/-/array-union-1.0.2.tgz#9a34410e4f4e3da23dea375be5be70f24778ec39" + integrity sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk= + dependencies: + array-uniq "^1.0.1" + +array-uniq@^1.0.1, array-uniq@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/array-uniq/-/array-uniq-1.0.3.tgz#af6ac877a25cc7f74e058894753858dfdb24fdb6" + integrity sha1-r2rId6Jcx/dOBYiUdThY39sk/bY= + +array-unique@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.1.1.tgz#b2dc8ec765d306537d7291e0e621e849d2573cf9" + integrity sha1-styOx2XTBlN9cpHg5iHoSdJXPPk= + +array-unique@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53" + integrity sha1-odl8yvy8JiXMcPrc6zalDFiwGlM= + +array-unique@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428" + integrity sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg= + +arrayify-compact@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/arrayify-compact/-/arrayify-compact-0.1.1.tgz#64f0214073dd8b8cfc9113b77558c633c801ff78" + integrity sha512-3R2V/8ixAhDXxyeWZ9aVzncUscrASg1TPrVsUgkxaMb0/WJLo5u769wYYf916OKqRCF+GKXaosouk1ixIfX89g== + dependencies: + array-flatten "^2.1.2" + +assemble-handle@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/assemble-handle/-/assemble-handle-0.1.4.tgz#e837b5bb23e75c9b05257d807e162f692cce216e" + integrity sha1-6De1uyPnXJsFJX2AfhYvaSzOIW4= + dependencies: + through2 "^2.0.3" + +assign-deep@^0.4.3: + version "0.4.8" + resolved "https://registry.yarnpkg.com/assign-deep/-/assign-deep-0.4.8.tgz#92089f55f7b55872b1828d9c51f860427f08bae6" + integrity sha512-uxqXJCnNZDEjPnsaLKVzmh/ST5+Pqoz0wi06HDfHKx1ASNpSbbvz2qW2Gl8ZyHwr5jnm11X2S5eMQaP1lMZmCg== + dependencies: + assign-symbols "^0.1.1" + is-primitive "^2.0.0" + kind-of "^5.0.2" + +assign-symbols@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-0.1.1.tgz#cb025944ef4ec8a3693f086e9e112c74e3a0fed9" + integrity sha1-ywJZRO9OyKNpPwhunhEsdOOg/tk= + +assign-symbols@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" + integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= + +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== + +async-array-reduce@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/async-array-reduce/-/async-array-reduce-0.1.0.tgz#c74b88651d5c7f46ce5203d150c3cc7eedca57f2" + integrity sha1-x0uIZR1cf0bOUgPRUMPMfu3KV/I= + +async-array-reduce@^0.2.0, async-array-reduce@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/async-array-reduce/-/async-array-reduce-0.2.1.tgz#c8be010a2b5cd00dea96c81116034693dfdd82d1" + integrity sha1-yL4BCitc0A3qlsgRFgNGk9/dgtE= + +async-done@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/async-done/-/async-done-0.4.0.tgz#ab8053f5f62290f8bfc58f37cd9b73070b3307b9" + integrity sha1-q4BT9fYikPi/xY83zZtzBwszB7k= + dependencies: + end-of-stream "^0.1.4" + next-tick "^0.2.2" + once "^1.3.0" + stream-exhaust "^1.0.0" + +async-done@^1.1.1, async-done@^1.2.0, async-done@^1.2.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/async-done/-/async-done-1.3.2.tgz#5e15aa729962a4b07414f528a88cdf18e0b290a2" + integrity sha512-uYkTP8dw2og1tu1nmza1n1CMW0qb8gWWlwqMmLb7MhBVs4BXrFziT6HXUd+/RlRA/i4H9AkofYloUbs1fwMqlw== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.2" + process-nextick-args "^2.0.0" + stream-exhaust "^1.0.1" + +async-each@^1.0.0, async-each@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.3.tgz#b727dbf87d7651602f06f4d4ac387f47d91b0cbf" + integrity sha512-z/WhQ5FPySLdvREByI2vZiTWwCnF0moMJ1hK9YQwDTHKh6I7/uSckMetoRGb5UBZPC1z0jlw+n/XCgjeH7y1AQ== + +async-helper-base@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/async-helper-base/-/async-helper-base-0.2.0.tgz#9e83399836977d894451ad41b9d855be18823933" + integrity sha1-noM5mDaXfYlEUa1BudhVvhiCOTM= + dependencies: + chalk "^1.0.0" + lodash "^3.5.0" + +async-helpers@^0.2.2: + version "0.2.5" + resolved "https://registry.yarnpkg.com/async-helpers/-/async-helpers-0.2.5.tgz#ac453b0559b43705492e82f97e6c06d0bb9ecfe3" + integrity sha1-rEU7BVm0NwVJLoL5fmwG0Luez+M= + dependencies: + async "^0.9.0" + +async-helpers@^0.3.9: + version "0.3.17" + resolved "https://registry.yarnpkg.com/async-helpers/-/async-helpers-0.3.17.tgz#3d91af1ff853d62e9809b0f31c4bdac79baa6ba4" + integrity sha512-LfgCyvmK6ZiC7pyqOgli2zfkWL4HYbEb+HXvGgdmqVBgsOOtQz5rSF8Ii/H/1cNNtrfj1KsdZE/lUMeIY3Qcwg== + dependencies: + co "^4.6.0" + kind-of "^6.0.0" + +async-listener@^0.6.0: + version "0.6.10" + resolved "https://registry.yarnpkg.com/async-listener/-/async-listener-0.6.10.tgz#a7c97abe570ba602d782273c0de60a51e3e17cbc" + integrity sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw== + dependencies: + semver "^5.3.0" + shimmer "^1.1.0" + +async-settle@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-0.2.1.tgz#767462d5738008dc75eac4246223528f21371396" + integrity sha1-dnRi1XOACNx16sQkYiNSjyE3E5Y= + dependencies: + async-done "^0.4.0" + +async-settle@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/async-settle/-/async-settle-1.0.0.tgz#1d0a914bb02575bec8a8f3a74e5080f72b2c0c6b" + integrity sha1-HQqRS7Aldb7IqPOnTlCA9yssDGs= + dependencies: + async-done "^1.2.2" + +async@^0.9.0: + version "0.9.2" + resolved "https://registry.yarnpkg.com/async/-/async-0.9.2.tgz#aea74d5e61c1f899613bf64bda66d4c78f2fd17d" + integrity sha1-rqdNXmHB+JlhO/ZL2mbUx48v0X0= + +async@^1.1.0, async@^1.2.1, async@^1.5.0: + version "1.5.2" + resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" + integrity sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo= + +atob@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9" + integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg== + +author-regex@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/author-regex/-/author-regex-0.2.1.tgz#8bdefaac6065a931799bec07eeef51b940e08f3c" + integrity sha1-i976rGBlqTF5m+wH7u9RuUDgjzw= + +autolinker@~0.28.0: + version "0.28.1" + resolved "https://registry.yarnpkg.com/autolinker/-/autolinker-0.28.1.tgz#0652b491881879f0775dace0cdca3233942a4e47" + integrity sha1-BlK0kYgYefB3XazgzcoyM5QqTkc= + dependencies: + gulp-header "^1.7.1" + +axios@^0.18.0: + version "0.18.1" + resolved "https://registry.yarnpkg.com/axios/-/axios-0.18.1.tgz#ff3f0de2e7b5d180e757ad98000f1081b87bcea3" + integrity sha512-0BfJq4NSfQXd+SkFdrvFbG7addhYSBA2mQwISr46pD6E5iqkWg02RAs8vyTT/j0RTnoYmeXauBuSv1qKwR179g== + dependencies: + follow-redirects "1.5.10" + is-buffer "^2.0.2" + +bach@^0.4.1: + version "0.4.2" + resolved "https://registry.yarnpkg.com/bach/-/bach-0.4.2.tgz#4dec04b401a50e336c122acd7d3a39c9efce39d9" + integrity sha1-TewEtAGlDjNsEirNfTo5ye/OOdk= + dependencies: + async-done "^1.1.1" + async-settle "^0.2.1" + lodash "^3.10.1" + now-and-later "0.0.6" + +bach@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/bach/-/bach-1.2.0.tgz#4b3ce96bf27134f79a1b414a51c14e34c3bd9880" + integrity sha1-Szzpa/JxNPeaG0FKUcFONMO9mIA= + dependencies: + arr-filter "^1.1.1" + arr-flatten "^1.0.1" + arr-map "^2.0.0" + array-each "^1.0.0" + array-initial "^1.0.0" + array-last "^1.1.1" + async-done "^1.2.2" + async-settle "^1.0.0" + now-and-later "^2.0.0" + +balanced-match@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" + integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== + +base-data@^0.6.0: + version "0.6.2" + resolved "https://registry.yarnpkg.com/base-data/-/base-data-0.6.2.tgz#019d71cf2c6691d85fae9d7c88a5e54ac68ae5fb" + integrity sha512-wH2ViG6CUO2AaeHSEt6fJTyQAk5gl0oY456DoSC5h8mnHrWUbvdctMCuF53CXgBmi0oalZQppKNH0iamG5+uqw== + dependencies: + arr-flatten "^1.1.0" + cache-base "^1.0.0" + extend-shallow "^2.0.1" + get-value "^2.0.6" + has-glob "^1.0.0" + has-value "^1.0.0" + is-registered "^0.1.5" + is-valid-app "^0.3.0" + kind-of "^5.0.0" + lazy-cache "^2.0.2" + merge-value "^1.0.0" + mixin-deep "^1.2.0" + read-file "^0.2.0" + resolve-glob "^1.0.0" + set-value "^2.0.0" + union-value "^1.0.0" + +base-engines@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/base-engines/-/base-engines-0.2.1.tgz#697800ca8ab888a33789738dbfaccb818a2a5a7b" + integrity sha1-aXgAyoq4iKM3iXONv6zLgYoqWns= + dependencies: + debug "^2.2.0" + define-property "^0.2.5" + engine-cache "^0.19.0" + is-valid-app "^0.1.2" + lazy-cache "^2.0.1" + +base-helpers@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/base-helpers/-/base-helpers-0.2.0.tgz#75a9494bb8c059ff3d7943829cf755047bfe10d7" + integrity sha1-dalJS7jAWf89eUOCnPdVBHv+ENc= + dependencies: + debug "^2.6.0" + define-property "^0.2.5" + is-valid-app "^0.2.1" + isobject "^3.0.0" + lazy-cache "^2.0.2" + load-helpers "^0.3.1" + +base-loader@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/base-loader/-/base-loader-0.1.0.tgz#d9237e506582bb5e475db7536580741d3c7e537c" + integrity sha1-2SN+UGWCu15HXbdTZYB0HTx+U3w= + dependencies: + map-files "^0.7.4" + relative "^3.0.0" + +base-option@^0.8.4: + version "0.8.4" + resolved "https://registry.yarnpkg.com/base-option/-/base-option-0.8.4.tgz#11417fa9244f227a4d537b4d291723462787d5c7" + integrity sha1-EUF/qSRPInpNU3tNKRcjRieH1cc= + dependencies: + define-property "^0.2.5" + get-value "^2.0.6" + is-valid-app "^0.2.0" + isobject "^2.1.0" + lazy-cache "^2.0.1" + mixin-deep "^1.1.3" + option-cache "^3.4.0" + set-value "^0.3.3" + +base-plugins@^0.4.13: + version "0.4.13" + resolved "https://registry.yarnpkg.com/base-plugins/-/base-plugins-0.4.13.tgz#91df178dc37f86842dea286d79e48fb86b5aac3d" + integrity sha1-kd8XjcN/hoQt6ihteeSPuGtarD0= + dependencies: + define-property "^0.2.5" + is-registered "^0.1.5" + isobject "^2.1.0" + +base-routes@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/base-routes/-/base-routes-0.2.2.tgz#0a614d172d49045d8c9387713f860df3c405341e" + integrity sha1-CmFNFy1JBF2Mk4dxP4YN88QFNB4= + dependencies: + debug "^2.2.0" + en-route "^0.7.5" + is-valid-app "^0.2.0" + lazy-cache "^2.0.1" + template-error "^0.1.2" + +base@^0.11.1: + version "0.11.2" + resolved "https://registry.yarnpkg.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f" + integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg== + dependencies: + cache-base "^1.0.1" + class-utils "^0.3.5" + component-emitter "^1.2.1" + define-property "^1.0.0" + isobject "^3.0.1" + mixin-deep "^1.2.0" + pascalcase "^0.1.1" + +beeper@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/beeper/-/beeper-1.1.1.tgz#e6d5ea8c5dad001304a70b22638447f69cb2f809" + integrity sha1-5tXqjF2tABMEpwsiY4RH9pyy+Ak= + +binary-extensions@^1.0.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.13.1.tgz#598afe54755b2868a5330d2aff9d4ebb53209b65" + integrity sha512-Un7MIEDdUC5gNpcGDV97op1Ywk748MpHcFTHoYs6qnj1Z3j7I53VG3nwZhKzoBZmbdRNnb6WRdFlwl7tSDuZGw== + +binary-extensions@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.2.0.tgz#75f502eeaf9ffde42fc98829645be4ea76bd9e2d" + integrity sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA== + +bindings@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/bindings/-/bindings-1.5.0.tgz#10353c9e945334bc0511a6d90b38fbc7c9c504df" + integrity sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ== + dependencies: + file-uri-to-path "1.0.0" + +bluebird@^2.3.11: + version "2.11.0" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" + integrity sha1-U0uQM8AiyVecVro7Plpcqvu2UOE= + +brace-expansion@^1.0.0, 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" + +brace-expansion@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-2.0.1.tgz#1edc459e0f0c548486ecf9fc99f2221364b9a0ae" + integrity sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA== + dependencies: + balanced-match "^1.0.0" + +braces@^1.8.2: + version "1.8.5" + resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7" + integrity sha1-uneWLhLf+WnWt2cR6RS3N4V79qc= + dependencies: + expand-range "^1.8.1" + preserve "^0.2.0" + repeat-element "^1.1.2" + +braces@^2.3.1, braces@^2.3.2: + version "2.3.2" + resolved "https://registry.yarnpkg.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729" + integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w== + dependencies: + arr-flatten "^1.1.0" + array-unique "^0.3.2" + extend-shallow "^2.0.1" + fill-range "^4.0.0" + isobject "^3.0.1" + repeat-element "^1.1.2" + snapdragon "^0.8.1" + snapdragon-node "^2.0.1" + split-string "^3.0.2" + to-regex "^3.0.1" + +braces@^3.0.2, 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== + +buffer-alloc-unsafe@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz#bd7dc26ae2972d0eda253be061dba992349c19f0" + integrity sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg== + +buffer-alloc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/buffer-alloc/-/buffer-alloc-1.2.0.tgz#890dd90d923a873e08e10e5fd51a57e5b7cce0ec" + integrity sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow== + dependencies: + buffer-alloc-unsafe "^1.1.0" + buffer-fill "^1.0.0" + +buffer-equal@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-1.0.0.tgz#59616b498304d556abd466966b22eeda3eca5fbe" + integrity sha1-WWFrSYME1Var1GaWayLu2j7KX74= + +buffer-fill@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/buffer-fill/-/buffer-fill-1.0.0.tgz#f8f78b76789888ef39f205cd637f68e702122b2c" + integrity sha1-+PeLdniYiO858gXNY39o5wISKyw= + +buffer-from@^1.0.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/buffer-from/-/buffer-from-1.1.1.tgz#32713bc028f75c02fdb710d7c7bcec1f2c6070ef" + integrity sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A== + +builtins@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" + integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= + +cache-base@^1.0.0, cache-base@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2" + integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ== + dependencies: + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^1.0.0" + isobject "^3.0.1" + set-value "^2.0.0" + to-object-path "^0.3.0" + union-value "^1.0.0" + unset-value "^1.0.0" + +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + +callsites@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" + integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== + +camel-case@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" + integrity sha1-yjw2iKTpzzpM2nd9xNy8cTJJz3M= + dependencies: + no-case "^2.2.0" + upper-case "^1.1.1" + +camelcase@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" + integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= + +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + +center-align@^0.1.1, center-align@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-0.1.3.tgz#aa0d32629b6ee972200411cbd4461c907bc2b7ad" + integrity sha1-qg0yYptu6XIgBBHL1EYckHvCt60= + dependencies: + align-text "^0.1.3" + lazy-cache "^1.0.3" + +center-align@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/center-align/-/center-align-1.0.1.tgz#2a1fdfdb6cd0dd2d25fbfcf6751e746b313e50a4" + integrity sha1-Kh/f22zQ3S0l+/z2dR50azE+UKQ= + dependencies: + align-text "^1.0.0" + repeat-string "^1.6.1" + +chalk@^1.0.0, chalk@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98" + integrity sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg= + dependencies: + ansi-styles "^2.2.1" + escape-string-regexp "^1.0.2" + has-ansi "^2.0.0" + strip-ansi "^3.0.0" + supports-color "^2.0.0" + +chalk@^2.0.0, chalk@^2.0.1, chalk@^2.3.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" + +chalk@^4.0.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.1.tgz#c80b3fab28bf6371e6863325eee67e618b77e6ad" + integrity sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chalk@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" + integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA== + dependencies: + ansi-styles "^4.1.0" + supports-color "^7.1.0" + +chokidar@^1.1.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" + integrity sha1-eY5ol3gVHIB2tLNg5e3SjNortGg= + dependencies: + anymatch "^1.3.0" + async-each "^1.0.0" + glob-parent "^2.0.0" + inherits "^2.0.1" + is-binary-path "^1.0.0" + is-glob "^2.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.0.0" + optionalDependencies: + fsevents "^1.0.0" + +chokidar@^2.0.0: + version "2.1.8" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.8.tgz#804b3a7b6a99358c3c5c61e71d8728f041cff917" + integrity sha512-ZmZUazfOzf0Nve7duiCKD23PFSCs4JPoYyccjUFF3aQkQadqBhfzhjkwBH2mNOG9cTBwhamM37EIsIkZw3nRgg== + dependencies: + anymatch "^2.0.0" + async-each "^1.0.1" + braces "^2.3.2" + glob-parent "^3.1.0" + inherits "^2.0.3" + is-binary-path "^1.0.0" + is-glob "^4.0.0" + normalize-path "^3.0.0" + path-is-absolute "^1.0.0" + readdirp "^2.2.1" + upath "^1.1.1" + optionalDependencies: + fsevents "^1.2.7" + +chokidar@^3.5.3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.6.0.tgz#197c6cc669ef2a8dc5e7b4d97ee4e092c3eb0d5b" + integrity sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw== + dependencies: + anymatch "~3.1.2" + braces "~3.0.2" + glob-parent "~5.1.2" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.6.0" + optionalDependencies: + fsevents "~2.3.2" + +class-extend@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/class-extend/-/class-extend-0.1.2.tgz#8057a82b00f53f82a5d62c50ef8cffdec6fabc34" + integrity sha1-gFeoKwD1P4Kl1ixQ74z/3sb6vDQ= + dependencies: + object-assign "^2.0.0" + +class-utils@^0.3.5: + version "0.3.6" + resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" + integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg== + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + isobject "^3.0.0" + static-extend "^0.1.1" + +cli-cursor@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" + integrity sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU= + dependencies: + restore-cursor "^2.0.0" + +cli-spinners@^1.1.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-1.3.1.tgz#002c1990912d0d59580c93bd36c056de99e4259a" + integrity sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg== + +cliui@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^7.0.2: + version "7.0.4" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" + integrity sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^7.0.0" + +clone-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-buffer/-/clone-buffer-1.0.0.tgz#e3e25b207ac4e701af721e2cb5a16792cac3dc58" + integrity sha1-4+JbIHrE5wGvch4staFnksrD3Fg= + +clone-deep@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.1.1.tgz#df1d5ff47582788e8b8629a4ca8a7fc4f34fa8cc" + integrity sha1-3x1f9HWCeI6Lhimkyop/xPNPqMw= + dependencies: + for-own "^0.1.1" + is-plain-object "^0.1.0" + kind-of "^0.1.0" + mixin-object "^0.1.1" + +clone-deep@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/clone-deep/-/clone-deep-0.2.4.tgz#4e73dd09e9fb971cc38670c5dced9c1896481cc6" + integrity sha1-TnPdCen7lxzDhnDF3O2cGJZIHMY= + dependencies: + for-own "^0.1.3" + is-plain-object "^2.0.1" + kind-of "^3.0.2" + lazy-cache "^1.0.3" + shallow-clone "^0.1.2" + +clone-stats@^0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-0.0.1.tgz#b88f94a82cf38b8791d58046ea4029ad88ca99d1" + integrity sha1-uI+UqCzzi4eR1YBG6kAprYjKmdE= + +clone-stats@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/clone-stats/-/clone-stats-1.0.0.tgz#b3782dff8bb5474e18b9b6bf0fdfe782f8777680" + integrity sha1-s3gt/4u1R04Yuba/D9/ngvh3doA= + +clone@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/clone/-/clone-0.2.0.tgz#c6126a90ad4f72dbf5acdb243cc37724fe93fc1f" + integrity sha1-xhJqkK1Pctv1rNskPMN3JP6T/B8= + +clone@^1.0.0, clone@^1.0.2: + version "1.0.4" + resolved "https://registry.yarnpkg.com/clone/-/clone-1.0.4.tgz#da309cc263df15994c688ca902179ca3c7cd7c7e" + integrity sha1-2jCcwmPfFZlMaIypAheco8fNfH4= + +clone@^2.1.0, clone@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f" + integrity sha1-G39Ln1kfHo+DZwQBYANFoCiHQ18= + +cloneable-readable@^1.0.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/cloneable-readable/-/cloneable-readable-1.1.3.tgz#120a00cb053bfb63a222e709f9683ea2e11d8cec" + integrity sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ== + dependencies: + inherits "^2.0.1" + process-nextick-args "^2.0.0" + readable-stream "^2.3.5" + +co@^4.6.0: + version "4.6.0" + resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184" + integrity sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ= + +code-context@^0.5.2: + version "0.5.3" + resolved "https://registry.yarnpkg.com/code-context/-/code-context-0.5.3.tgz#e368c7bd247d3ac71100d91b5fd02e4e66fa9022" + integrity sha1-42jHvSR9OscRANkbX9AuTmb6kCI= + dependencies: + parse-code-context "^0.1.3" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +coffee-script@^1.12.4: + version "1.12.7" + resolved "https://registry.yarnpkg.com/coffee-script/-/coffee-script-1.12.7.tgz#c05dae0cb79591d05b3070a8433a98c9a89ccc53" + integrity sha512-fLeEhqwymYat/MpTPUjSKHVYYl0ec2mOyALEMLmzr5i1isuG+6jfI2j2d5oBO3VIzgUXgBVIcOT9uH1TFxBckw== + +collection-map@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-map/-/collection-map-1.0.0.tgz#aea0f06f8d26c780c2b75494385544b2255af18c" + integrity sha1-rqDwb40mx4DCt1SUOFVEsiVa8Yw= + dependencies: + arr-map "^2.0.2" + for-own "^1.0.0" + make-iterator "^1.0.0" + +collection-visit@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-0.1.1.tgz#ea6f937e340748725c28107a674554df759e070c" + integrity sha1-6m+TfjQHSHJcKBB6Z0VU33WeBww= + dependencies: + map-visit "^0.1.0" + object-visit "^0.1.0" + +collection-visit@^0.2.0, collection-visit@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-0.2.3.tgz#2f62483caecc95f083b9a454a3ee9e6139ad7957" + integrity sha1-L2JIPK7MlfCDuaRUo+6eYTmteVc= + dependencies: + lazy-cache "^2.0.1" + map-visit "^0.1.5" + object-visit "^0.3.4" + +collection-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0" + integrity sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA= + dependencies: + map-visit "^1.0.0" + object-visit "^1.0.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-convert@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3" + integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ== + dependencies: + color-name "~1.1.4" + +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= + +color-name@~1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2" + integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA== + +color-support@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/color-support/-/color-support-1.1.3.tgz#93834379a1cc9a0c61f82f52f0d04322251bd5a2" + integrity sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg== + +columnify@^1.5.4: + version "1.5.4" + resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" + integrity sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs= + dependencies: + strip-ansi "^3.0.0" + wcwidth "^1.0.0" + +common-middleware@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/common-middleware/-/common-middleware-0.4.1.tgz#52b963eb80f049853cb3feaf36f1fc6feee8d990" + integrity sha1-Urlj64DwSYU8s/6vNvH8b+7o2ZA= + dependencies: + debug "^2.2.0" + define-property "^0.2.5" + is-valid-app "^0.2.0" + isbinaryfile "^3.0.0" + isobject "^2.1.0" + lazy-cache "^2.0.1" + middleware-rename-file "^0.1.0" + middleware-utils "^0.3.0" + mixin-deep "^1.1.3" + parser-front-matter "^1.5.0" + +component-emitter@^1.2.0, component-emitter@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" + integrity sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg== + +composer@^0.4.0: + version "0.4.2" + resolved "https://registry.yarnpkg.com/composer/-/composer-0.4.2.tgz#c63461b5e7a119948c4cf576b307b9f56b312370" + integrity sha1-xjRhteehGZSMTPV2swe59WsxI3A= + dependencies: + bach "^0.4.1" + chokidar "^1.1.0" + component-emitter "^1.2.0" + extend-shallow "^2.0.1" + isobject "^2.0.0" + lazy-cache "^0.2.3" + session-cache "^0.2.0" + +computed-property@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/computed-property/-/computed-property-0.1.3.tgz#552c30b0c10ea93666d2a24641239d0eae3a59d6" + integrity sha512-ep+qu1T9PCwoGyZna2km59N4QqAuAB8+7m6whca42Idz3tmWkANHI3pGcE6qsxWLV27iWS1U3H+BSq0PpQMcnw== + dependencies: + get-value "^0.3.2" + lodash.clonedeep "3.0.1" + set-object "^0.1.0" + +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= + +concat-stream@^1.5.1, concat-stream@^1.5.2, concat-stream@^1.6.0: + version "1.6.2" + resolved "https://registry.yarnpkg.com/concat-stream/-/concat-stream-1.6.2.tgz#904bdf194cd3122fc675c77fc4ac3d4ff0fd1a34" + integrity sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw== + dependencies: + buffer-from "^1.0.0" + inherits "^2.0.3" + readable-stream "^2.2.2" + typedarray "^0.0.6" + +concat-with-sourcemaps@*: + version "1.1.0" + resolved "https://registry.yarnpkg.com/concat-with-sourcemaps/-/concat-with-sourcemaps-1.1.0.tgz#d4ea93f05ae25790951b99e7b3b09e3908a4082e" + integrity sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg== + dependencies: + source-map "^0.6.1" + +config-cache@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/config-cache/-/config-cache-4.0.0.tgz#a0ccdede44ebe1f3fe23df716eed1cfd897de79e" + integrity sha1-oMze3kTr4fP+I99xbu0c/Yl9554= + dependencies: + arr-flatten "^1.0.1" + arr-union "^2.0.1" + array-rest "^0.1.1" + class-extend "^0.1.1" + clone-deep "^0.1.1" + component-emitter "^1.2.0" + expander "^0.3.3" + extend-shallow "^1.1.2" + for-in "^0.1.4" + get-value "^1.1.4" + has-own-deep "^0.1.4" + has-value "^0.2.0" + kind-of "^1.1.0" + object.omit "^1.1.0" + plasma "^0.8.2" + set-value "^0.1.6" + +continuation-local-storage@^3.1.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz#11f613f74e914fe9b34c92ad2d28fe6ae1db7ffb" + integrity sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA== + dependencies: + async-listener "^0.6.0" + emitter-listener "^1.1.1" + +convert-source-map@^1.5.0: + version "1.8.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.8.0.tgz#f3373c32d21b4d780dd8004514684fb791ca4369" + integrity sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA== + dependencies: + safe-buffer "~5.1.1" + +copy-descriptor@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d" + integrity sha1-Z29us8OZl8LuGsOpJP1hJHSPV40= + +copy-props@^2.0.1: + version "2.0.5" + resolved "https://registry.yarnpkg.com/copy-props/-/copy-props-2.0.5.tgz#03cf9ae328d4ebb36f8f1d804448a6af9ee3f2d2" + integrity sha512-XBlx8HSqrT0ObQwmSzM7WE5k8FxTV75h1DX1Z3n6NhQ/UYYAvInWYmG06vFt7hQZArE2fuO62aihiWIVQwh1sw== + dependencies: + each-props "^1.3.2" + is-plain-object "^5.0.0" + +copyright-regex@^1.1.4, copyright-regex@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/copyright-regex/-/copyright-regex-1.1.6.tgz#0660d60fb9333368bb8b01e3fb0f4f165e5f43a9" + integrity sha1-BmDWD7kzM2i7iwHj+w9PFl5fQ6k= + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== + dependencies: + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" + +cwd@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/cwd/-/cwd-0.7.0.tgz#d813b6719d6e7d78e0645d2774f02b62c24d66a4" + integrity sha1-2BO2cZ1ufXjgZF0ndPArYsJNZqQ= + dependencies: + look-up "^0.7.1" + +cwd@^0.8.0: + version "0.8.4" + resolved "https://registry.yarnpkg.com/cwd/-/cwd-0.8.4.tgz#b79eb54a78f2d75ac600fbe00fd8d1c7e9e3dbf5" + integrity sha1-t561Snjy11rGAPvgD9jRx+nj2/U= + dependencies: + lazy-cache "^0.2.3" + look-up "^0.8.1" + +cwd@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/cwd/-/cwd-0.9.1.tgz#41e10a7e1ab833dc59c2eca83814c7de77b5a4fd" + integrity sha1-QeEKfhq4M9xZwuyoOBTH3ne1pP0= + dependencies: + find-pkg "^0.1.0" + +d@1, d@^1.0.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" + +dashify@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/dashify/-/dashify-0.1.0.tgz#107daf9cca5e326e30a8b39ffa5048b6684922ea" + integrity sha1-EH2vnMpeMm4wqLOf+lBItmhJIuo= + +data-store@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/data-store/-/data-store-0.8.2.tgz#8c39c872520d07e8954d4ff0cf2d73b6299c5dfb" + integrity sha1-jDnIclINB+iVTU/wzy1ztimcXfs= + dependencies: + collection-visit "^0.1.1" + component-emitter "^1.2.0" + extend-shallow "^2.0.1" + get-value "^1.1.5" + graceful-fs "^4.1.2" + has-own-deep "^0.1.4" + has-value "^0.2.0" + kind-of "^2.0.0" + lazy-cache "^0.2.2" + mkdirp "^0.5.1" + object.omit "^2.0.0" + rimraf "^2.4.2" + set-value "^0.2.0" + union-value "^0.1.1" + +data-store@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/data-store/-/data-store-3.1.0.tgz#9464f2c8ac8cad5cd0ebb6992eaf354d7ea8c35c" + integrity sha512-MjbLiqz5IJFD/NZLztrrxc2LZ8KMc42kHWAUSxD/kp2ekzHE8EZfkYP4nQy15aPMwV5vac2dW21Ni72okNAwTQ== + +date-store@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/date-store/-/date-store-0.1.2.tgz#f08355fcc0dc0c86d0ca3399e1e1230c027b8873" + integrity sha1-8INV/MDcDIbQyjOZ4eEjDAJ7iHM= + dependencies: + date.js "github:matthewmueller/date" + graceful-fs "^4.1.3" + kind-of "^3.0.2" + lazy-cache "^1.0.3" + map-cache "^0.2.1" + os-homedir "^1.0.1" + write-json "^0.2.2" + +date.js@^0.3.1: + version "0.3.3" + resolved "https://registry.yarnpkg.com/date.js/-/date.js-0.3.3.tgz#ef1e92332f507a638795dbb985e951882e50bbda" + integrity sha512-HgigOS3h3k6HnW011nAb43c5xx5rBXk8P2v/WIT9Zv4koIaVXiH2BURguI78VVp+5Qc076T7OR378JViCnZtBw== + dependencies: + debug "~3.1.0" + +"date.js@github:matthewmueller/date": + version "0.3.3" + resolved "https://codeload.github.com/matthewmueller/date/tar.gz/3a918292765e511de5a714cca871002b19e14812" + dependencies: + debug "~3.1.0" + +dateformat@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" + integrity sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI= + +debug@=3.1.0, debug@~3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" + integrity sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g== + dependencies: + ms "2.0.0" + +debug@^2.1.1, debug@^2.1.3, debug@^2.2.0, debug@^2.3.3, debug@^2.4.1, debug@^2.6.0, debug@^2.6.3: + version "2.6.9" + resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f" + integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA== + dependencies: + ms "2.0.0" + +debug@^3.1.0: + version "3.2.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.7.tgz#72580b7e9145fb39b6676f9c5e5fb100b934179a" + integrity sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ== + dependencies: + ms "^2.1.1" + +debug@^4.0.1, debug@^4.1.1: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== + dependencies: + ms "2.1.2" + +debug@^4.3.5: + version "4.3.7" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.7.tgz#87945b4151a011d76d95a198d7111c865c360a52" + integrity sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ== + dependencies: + ms "^2.1.3" + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +decamelize@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-4.0.0.tgz#aa472d7bf660eb15f3494efd531cab7f2a709837" + integrity sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ== + +decode-uri-component@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" + integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= + +decompress-response@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" + integrity sha1-gKTdMjdIOEv6JICDYirt7Jgq3/M= + dependencies: + mimic-response "^1.0.0" + +deep-bind@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/deep-bind/-/deep-bind-0.3.0.tgz#95c31dd84a1cd1b381119a2c42edb90db485bc33" + integrity sha1-lcMd2Eoc0bOBEZosQu25DbSFvDM= + dependencies: + mixin-deep "^1.1.3" + +deep-equal@^1.0.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-1.1.1.tgz#b5c98c942ceffaf7cb051e24e1434a25a2e6076a" + integrity sha512-yd9c5AdiqVcR+JjcwUQb9DkhJc8ngNr0MahEBGvDiJw8puWab2yZlh+nkasOnZP+EGTAP6rRp2JzJhJZzvNF8g== + dependencies: + is-arguments "^1.0.4" + is-date-object "^1.0.1" + is-regex "^1.0.4" + object-is "^1.0.1" + object-keys "^1.1.1" + regexp.prototype.flags "^1.2.0" + +deep-is@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.3.tgz#b369d6fb5dbc13eecf524f91b070feedc357cf34" + integrity sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ= + +default-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/default-compare/-/default-compare-1.0.0.tgz#cb61131844ad84d84788fb68fd01681ca7781a2f" + integrity sha512-QWfXlM0EkAbqOCbD/6HjdwT19j7WCkMyiRhWilc4H9/5h/RzTF9gv5LYh1+CmDV5d1rki6KAWLtQale0xt20eQ== + dependencies: + kind-of "^5.0.2" + +default-resolution@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" + integrity sha1-vLgrqnKtebQmp2cy8aga1t8m1oQ= + +defaults-deep@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/defaults-deep/-/defaults-deep-0.2.4.tgz#a479cfeafce025810fb93aa8d2dde0ee2d677cc6" + integrity sha512-V6BtqzcMvn0EPOy7f+SfMhfmTawq+7UQdt9yZH0EBK89+IHo5f+Hse/qzTorAXOBrQpxpwb6cB/8OgtaMrT+Fg== + dependencies: + for-own "^0.1.3" + is-extendable "^0.1.1" + lazy-cache "^0.2.3" + +defaults@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/defaults/-/defaults-1.0.3.tgz#c656051e9817d9ff08ed881477f3fe4019f3ef7d" + integrity sha1-xlYFHpgX2f8I7YgUd/P+QBnz730= + dependencies: + clone "^1.0.2" + +define-properties@^1.1.3: + 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" + +define-property@^0.2.5: + version "0.2.5" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" + integrity sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY= + dependencies: + is-descriptor "^0.1.0" + +define-property@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6" + integrity sha1-dp66rz9KY6rTr56NMEybvnm/sOY= + dependencies: + is-descriptor "^1.0.0" + +define-property@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d" + integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ== + dependencies: + is-descriptor "^1.0.2" + isobject "^3.0.1" + +delete@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/delete/-/delete-1.1.0.tgz#931eb819cb6a0833d4ac4686621241cdca202e7c" + integrity sha512-bdhJatRNYsJnOhSRx9Eej3ABBtxQQw/uz2RprpYL5R3jCC2XMYVBcQWwvQLl+iNDk4LCLEKhdIP3uZSqRWi/tw== + dependencies: + async-each "^1.0.1" + extend-shallow "^2.0.1" + matched "^1.0.2" + rimraf "^2.6.1" + +delimiter-regex@^1.3.0, delimiter-regex@^1.3.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/delimiter-regex/-/delimiter-regex-1.3.1.tgz#6385cae14004dbc0c1cd8dffffeb863d51999eff" + integrity sha1-Y4XK4UAE28DBzY3//+uGPVGZnv8= + dependencies: + extend-shallow "^1.1.2" + +delimiter-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/delimiter-regex/-/delimiter-regex-2.0.0.tgz#0d0f6f61d9915591fd43087a8e9585d3e2115a75" + integrity sha1-DQ9vYdmRVZH9Qwh6jpWF0+IRWnU= + dependencies: + extend-shallow "^1.1.2" + isobject "^2.1.0" + +detect-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detect-file/-/detect-file-1.0.0.tgz#f0d66d03672a825cb1b73bdb3fe62310c8e552b7" + integrity sha1-8NZtA2cqglyxtzvbP+YjEMjlUrc= + +diacritics-map@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/diacritics-map/-/diacritics-map-0.1.0.tgz#6dfc0ff9d01000a2edf2865371cac316e94977af" + integrity sha1-bfwP+dAQAKLt8oZTccrDFulJd68= + +diff@^2.0.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/diff/-/diff-2.2.3.tgz#60eafd0d28ee906e4e8ff0a52c1229521033bf99" + integrity sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k= + +diff@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.1.0.tgz#bc52d298c5ea8df9194800224445ed43ffc87e40" + integrity sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw== + +diff@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.2.0.tgz#26ded047cd1179b78b9537d5ef725503ce1ae531" + integrity sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A== + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== + dependencies: + esutils "^2.0.2" + +duplexer2@0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.0.2.tgz#c614dcf67e2fb14995a91711e5a617e8a60a31db" + integrity sha1-xhTc9n4vsUmVqRcR5aYX6KYKMds= + dependencies: + readable-stream "~1.1.9" + +duplexer@^0.1.1, duplexer@~0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" + integrity sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg== + +duplexify@^3.2.0, duplexify@^3.6.0: + version "3.7.1" + resolved "https://registry.yarnpkg.com/duplexify/-/duplexify-3.7.1.tgz#2a4df5317f6ccfd91f86d6fd25d8d8a103b88309" + integrity sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g== + dependencies: + end-of-stream "^1.0.0" + inherits "^2.0.1" + readable-stream "^2.0.0" + stream-shift "^1.0.0" + +each-props@^1.3.2: + version "1.3.2" + resolved "https://registry.yarnpkg.com/each-props/-/each-props-1.3.2.tgz#ea45a414d16dd5cfa419b1a81720d5ca06892333" + integrity sha512-vV0Hem3zAGkJAyU7JSjixeU66rwdynTAa1vofCrSA5fEln+m67Az9CcnkVD776/fsN/UjIWmBDoNRS6t6G9RfA== + dependencies: + is-plain-object "^2.0.1" + object.defaults "^1.1.0" + +emitter-listener@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" + integrity sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ== + dependencies: + shimmer "^1.2.0" + +emoji-regex@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" + integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A== + +en-route@^0.5.0: + version "0.5.0" + resolved "https://registry.yarnpkg.com/en-route/-/en-route-0.5.0.tgz#2a4c07d0b5eef10c802eefd6e5c94bb28a4b5cd3" + integrity sha1-KkwH0LXu8QyALu/W5clLsopLXNM= + dependencies: + arr-flatten "^1.0.0" + array-slice "^0.2.2" + debug "^2.1.1" + kind-of "^1.1.0" + path-to-regexp "^1.0.3" + utils-merge "^1.0.0" + +en-route@^0.7.5: + version "0.7.5" + resolved "https://registry.yarnpkg.com/en-route/-/en-route-0.7.5.tgz#e8230e73836c5e95c6757e0442d3c113124bdd98" + integrity sha1-6CMOc4NsXpXGdX4EQtPBExJL3Zg= + dependencies: + arr-flatten "^1.0.1" + debug "^2.2.0" + extend-shallow "^2.0.1" + kind-of "^3.0.2" + lazy-cache "^1.0.3" + path-to-regexp "^1.2.1" + +end-of-stream@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-0.1.5.tgz#8e177206c3c80837d85632e8b9359dfe8b2f6eaf" + integrity sha1-jhdyBsPICDfYVjLouTWd/osvbq8= + dependencies: + once "~1.3.0" + +end-of-stream@^1.0.0, end-of-stream@^1.1.0: + version "1.4.4" + resolved "https://registry.yarnpkg.com/end-of-stream/-/end-of-stream-1.4.4.tgz#5ae64a5f45057baf3626ec14da0ca5e4b2431eb0" + integrity sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q== + dependencies: + once "^1.4.0" + +ends-with@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/ends-with/-/ends-with-0.2.0.tgz#2f9da98d57a50cfda4571ce4339000500f4e6b8a" + integrity sha1-L52pjVelDP2kVxzkM5AAUA9Oa4o= + +ends-with@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ends-with/-/ends-with-1.0.1.tgz#5265697706c6ac5150d6649a89ec2d019c25af90" + integrity sha1-UmVpdwbGrFFQ1mSaiewtAZwlr5A= + +engine-base@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/engine-base/-/engine-base-0.1.3.tgz#d59c9cc52e7dd6dd2b49ae7bf5fb44994f7016a5" + integrity sha1-1ZycxS591t0rSa579ftEmU9wFqU= + dependencies: + component-emitter "^1.2.1" + delimiter-regex "^2.0.0" + engine "^0.1.12" + engine-utils "^0.1.1" + lazy-cache "^2.0.2" + mixin-deep "^1.1.3" + object.omit "^2.0.1" + object.pick "^1.2.0" + +engine-cache@^0.12.1: + version "0.12.2" + resolved "https://registry.yarnpkg.com/engine-cache/-/engine-cache-0.12.2.tgz#3cf769409cca823c52d5d73dba806982ee7019b3" + integrity sha1-PPdpQJzKgjxS1dc9uoBpgu5wGbM= + dependencies: + async "^1.1.0" + async-helpers "^0.2.2" + extend-shallow "^1.1.4" + helper-cache "^0.7.1" + +engine-cache@^0.19.0: + version "0.19.4" + resolved "https://registry.yarnpkg.com/engine-cache/-/engine-cache-0.19.4.tgz#8224966fbdf6a65e780ec79df87b6b2cb82395b2" + integrity sha1-giSWb732pl54Dsed+HtrLLgjlbI= + dependencies: + async-helpers "^0.3.9" + extend-shallow "^2.0.1" + helper-cache "^0.7.2" + isobject "^3.0.0" + lazy-cache "^2.0.2" + mixin-deep "^1.1.3" + +engine-handlebars@^0.8.2: + version "0.8.2" + resolved "https://registry.yarnpkg.com/engine-handlebars/-/engine-handlebars-0.8.2.tgz#aa709d86949d35331a15d650023d9cbe4215a9f9" + integrity sha1-qnCdhpSdNTMaFdZQAj2cvkIVqfk= + dependencies: + engine-utils "^0.1.1" + extend-shallow "^2.0.1" + handlebars "^4.0.6" + +engine-lodash@^0.8.0: + version "0.8.2" + resolved "https://registry.yarnpkg.com/engine-lodash/-/engine-lodash-0.8.2.tgz#11427fe7c84af484d69fafbdb5d3df880a7be4e4" + integrity sha1-EUJ/58hK9ITWn6+9tdPfiAp75OQ= + dependencies: + ansi-red "^0.1.1" + delimiter-regex "^1.3.1" + engine-utils "^0.1.1" + lazy-cache "^0.2.3" + lodash "^3.10.1" + +engine-utils@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/engine-utils/-/engine-utils-0.1.1.tgz#addf4708dd85a05a3217a97797eab8a013c4f80e" + integrity sha1-rd9HCN2FoFoyF6l3l+q4oBPE+A4= + +engine@^0.1.10, engine@^0.1.11, engine@^0.1.12, engine@^0.1.5: + version "0.1.12" + resolved "https://registry.yarnpkg.com/engine/-/engine-0.1.12.tgz#f87e8c90bb80cd3f58597ac569593ee46da2742d" + integrity sha1-+H6MkLuAzT9YWXrFaVk+5G2idC0= + dependencies: + assign-deep "^0.4.3" + collection-visit "^0.2.0" + get-value "^1.2.1" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + object.omit "^2.0.0" + set-value "^0.2.0" + +enquirer@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +error-ex@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +error-symbol@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/error-symbol/-/error-symbol-0.1.0.tgz#0a4dae37d600d15a29ba453d8ef920f1844333f6" + integrity sha1-Ck2uN9YA0VopukU9jvkg8YRDM/Y= + +es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: + version "0.10.53" + resolved "https://registry.yarnpkg.com/es5-ext/-/es5-ext-0.10.53.tgz#93c5a3acfdbef275220ad72644ad02ee18368de1" + integrity sha512-Xs2Stw6NiNHWypzRTY1MtaG/uJlwCk8kH81920ma8mvN8Xq1gsfhZvpkImLQArw8AHnv8MT2I45J3c0R8slE+Q== + dependencies: + es6-iterator "~2.0.3" + es6-symbol "~3.1.3" + next-tick "~1.0.0" + +es6-iterator@^2.0.1, es6-iterator@^2.0.3, 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.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/es6-symbol/-/es6-symbol-3.1.3.tgz#bad5d3c1bcdac28269f4cb331e431c78ac705d18" + integrity sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA== + dependencies: + d "^1.0.1" + ext "^1.1.2" + +es6-weak-map@^2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/es6-weak-map/-/es6-weak-map-2.0.3.tgz#b6da1f16cc2cc0d9be43e6bdbfc5e7dfcdf31d53" + integrity sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA== + dependencies: + d "1" + es5-ext "^0.10.46" + es6-iterator "^2.0.3" + es6-symbol "^3.1.1" + +escalade@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" + integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== + +escape-string-regexp@^1.0.2, 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@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz#14ba83a5d373e3d311e5afca29cf5bfad965bf34" + integrity sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA== + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz#f65328259305927392c938ed44eb0a5c9b2bd303" + integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== + +eslint@^7.26.0: + version "7.29.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.29.0.tgz#ee2a7648f2e729485e4d0bd6383ec1deabc8b3c0" + integrity sha512-82G/JToB9qIy/ArBzIWG9xvvwL3R86AlCjtGw+A29OMZDqhTybz/MByORSukGxeI+YPCR4coYyITKk8BFH9nDA== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.2" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + escape-string-regexp "^4.0.0" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.4.0" + esutils "^2.0.2" + fast-deep-equal "^3.1.3" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.1.2" + globals "^13.6.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash.merge "^4.6.2" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.9" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + +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== + +esquery@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.4.0.tgz#2148ffc38b82e8c7057dfed48425b3e61f0f24a5" + integrity sha512-cCDispWt5vHHtwMY2YrAQ4ibFkAL8RbH5YGBnZBc90MolvvfkkQcJro/aZiAQUlQ3qgrYS6D6v8Gc5G5CQsc9w== + dependencies: + estraverse "^5.1.0" + +esrecurse@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1: + version "4.3.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" + integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== + +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + +esutils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" + integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== + +event-stream@^3.1.7, event-stream@^3.3.1: + version "3.3.5" + resolved "https://registry.yarnpkg.com/event-stream/-/event-stream-3.3.5.tgz#e5dd8989543630d94c6cf4d657120341fa31636b" + integrity sha512-vyibDcu5JL20Me1fP734QBH/kenBGLZap2n0+XXM7mvuUPzJ20Ydqj1aKcIeMdri1p+PU+4yAKugjN8KCVst+g== + dependencies: + duplexer "^0.1.1" + from "^0.1.7" + map-stream "0.0.7" + pause-stream "^0.0.11" + split "^1.0.1" + stream-combiner "^0.2.2" + through "^2.3.8" + +expand-brackets@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b" + integrity sha1-3wcoTjQqgHzXM6xa9yQR5YHRF3s= + dependencies: + is-posix-bracket "^0.1.0" + +expand-brackets@^2.1.4: + version "2.1.4" + resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622" + integrity sha1-t3c14xXOMPa27/D4OwQVGiJEliI= + dependencies: + debug "^2.3.3" + define-property "^0.2.5" + extend-shallow "^2.0.1" + posix-character-classes "^0.1.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-pkg@^0.1.8: + version "0.1.9" + resolved "https://registry.yarnpkg.com/expand-pkg/-/expand-pkg-0.1.9.tgz#7d58a809a70e3956f08e372fee005da964fb4fb4" + integrity sha512-Qqtqzx/e8tODrDr0H8HtO7+nftN0wH9bsk3948KpKBZLrc86Cm3/8mRKJmDfNSDWWcuKsilMmFlKPhYx5gHYuA== + dependencies: + component-emitter "^1.2.1" + debug "^2.4.1" + defaults-deep "^0.2.4" + export-files "^2.1.1" + get-value "^2.0.6" + kind-of "^3.1.0" + lazy-cache "^2.0.2" + load-pkg "^3.0.1" + mixin-deep "^1.1.3" + normalize-pkg "^0.3.20" + omit-empty "^0.4.1" + parse-author "^1.0.0" + parse-git-config "^1.1.1" + repo-utils "^0.3.7" + +expand-range@^1.8.1: + version "1.8.2" + resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337" + integrity sha1-opnv/TNf4nIeuujiV+x5ZE/IUzc= + dependencies: + fill-range "^2.1.0" + +expand-reflinks@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/expand-reflinks/-/expand-reflinks-0.2.1.tgz#6d5e2199eb0ee3e6474e8edebe9a5c6c05a02a30" + integrity sha1-bV4hmesO4+ZHTo7evppcbAWgKjA= + dependencies: + define-property "^0.2.5" + extend-shallow "^2.0.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +expand-tilde@^1.2.0, expand-tilde@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-1.2.2.tgz#0b81eba897e5a3d31d1c3d102f8f01441e559449" + integrity sha1-C4HrqJflo9MdHD0QL48BRB5VlEk= + dependencies: + os-homedir "^1.0.1" + +expand-tilde@^2.0.0, expand-tilde@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/expand-tilde/-/expand-tilde-2.0.2.tgz#97e801aa052df02454de46b02bf621642cdc8502" + integrity sha1-l+gBqgUt8CRU3kawK/YhZCzchQI= + dependencies: + homedir-polyfill "^1.0.1" + +expander@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/expander/-/expander-0.3.3.tgz#a2c7b9ce047db2097e2b7cd4315c1e701027fb11" + integrity sha1-ose5zgR9sgl+K3zUMVwecBAn+xE= + dependencies: + getobject "0.1.0" + lodash "~2.2.1" + +export-dirs@^0.2.4: + version "0.2.4" + resolved "https://registry.yarnpkg.com/export-dirs/-/export-dirs-0.2.4.tgz#2e16b9b46ebc2c07acb657ccdfbe3845393fe742" + integrity sha1-Lha5tG68LAestlfM3744RTk/50I= + +export-files@^2.0.1, export-files@^2.1.0, export-files@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/export-files/-/export-files-2.1.1.tgz#bbf64574053a09e4eb98e5f43501d572b2c3ce7f" + integrity sha1-u/ZFdAU6CeTrmOX0NQHVcrLDzn8= + dependencies: + lazy-cache "^1.0.3" + +ext@^1.1.2: + version "1.4.0" + resolved "https://registry.yarnpkg.com/ext/-/ext-1.4.0.tgz#89ae7a07158f79d35517882904324077e4379244" + integrity sha512-Key5NIsUxdqKg3vIsdw9dSuXpPCQ297y6wBjL30edxwPgt2E44WcWBZey/ZvUc6sERLTxKdyCu4gZFmUbk1Q7A== + dependencies: + type "^2.0.0" + +extend-shallow@^1.1.2, extend-shallow@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-1.1.4.tgz#19d6bf94dfc09d76ba711f39b872d21ff4dd9071" + integrity sha1-Gda/lN/AnXa6cR85uHLSH/TdkHE= + dependencies: + kind-of "^1.1.0" + +extend-shallow@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f" + integrity sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8= + dependencies: + is-extendable "^0.1.0" + +extend-shallow@^3.0.0, extend-shallow@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8" + integrity sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg= + dependencies: + assign-symbols "^1.0.0" + is-extendable "^1.0.1" + +extend@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" + integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== + +extglob@^0.3.1: + version "0.3.2" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1" + integrity sha1-Lhj/PS9JqydlzskCPwEdqo2DSaE= + dependencies: + is-extglob "^1.0.0" + +extglob@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543" + integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw== + dependencies: + array-unique "^0.3.2" + define-property "^1.0.0" + expand-brackets "^2.1.4" + extend-shallow "^2.0.1" + fragment-cache "^0.2.1" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +extract-comments@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/extract-comments/-/extract-comments-0.7.3.tgz#1c5dec1730072c5b0cdfa5557e5f57f69277fc34" + integrity sha1-HF3sFzAHLFsM36VVfl9X9pJ3/DQ= + dependencies: + is-whitespace "^0.3.0" + +extract-gfm@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/extract-gfm/-/extract-gfm-0.1.0.tgz#6cdaeb14eb46e3bd3ba464d98171d05a83acff6b" + integrity sha1-bNrrFOtG4707pGTZgXHQWoOs/2s= + dependencies: + gfm-code-block-regex "^0.2.1" + gfm-code-blocks "^0.2.0" + +"falsey@^0.2.1": + version "0.2.1" + resolved "https://registry.yarnpkg.com/falsey/-/falsey-0.2.1.tgz#5efbce280cd1b6d42f9055e5301053ad682439b4" + integrity sha1-XvvOKAzRttQvkFXlMBBTrWgkObQ= + dependencies: + kind-of "^1.1.0" + +"falsey@^0.3.0": + version "0.3.2" + resolved "https://registry.yarnpkg.com/falsey/-/falsey-0.3.2.tgz#b21c90c5c34660fc192bf909575db95b6880d597" + integrity sha512-lxEuefF5MBIVDmE6XeqCdM4BWk1+vYmGZtkbKZ/VFcg6uBBw6fXNEbWmxCjDdQlFc9hy450nkiWwM3VAW6G1qg== + dependencies: + kind-of "^5.0.2" + +fancy-log@^1.1.0, fancy-log@^1.3.2: + version "1.3.3" + resolved "https://registry.yarnpkg.com/fancy-log/-/fancy-log-1.3.3.tgz#dbc19154f558690150a23953a0adbd035be45fc7" + integrity sha512-k9oEhlyc0FrVh25qYuSELjr8oxsCoc4/LEZfg2iJJrfEk/tZL9bCoJE47gqAvI2m/AUjluCS4+3I0eTx8n3AEw== + dependencies: + ansi-gray "^0.1.1" + color-support "^1.1.3" + parse-node-version "^1.0.0" + time-stamp "^1.0.0" + +fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: + version "3.1.3" + resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" + integrity sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q== + +fast-json-stable-stringify@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" + integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== + +fast-levenshtein@^1.0.0: + version "1.1.4" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-1.1.4.tgz#e6a754cc8f15e58987aa9cbd27af66fd6f4e5af9" + integrity sha1-5qdUzI8V5YmHqpy9J69m/W9OWvk= + +fast-levenshtein@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" + integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= + +file-entry-cache@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.1.tgz#211b2dd9659cb0394b073e7323ac3c933d522027" + integrity sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg== + dependencies: + flat-cache "^3.0.4" + +file-is-binary@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-is-binary/-/file-is-binary-1.0.0.tgz#5e41806d1bcae458c8fec32fe3ce122dbbbc4356" + integrity sha1-XkGAbRvK5FjI/sMv484SLbu8Q1Y= + dependencies: + is-binary-buffer "^1.0.0" + isobject "^3.0.0" + +file-name@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/file-name/-/file-name-0.1.0.tgz#12b122f120f9c34dbc176c1ab81a548aced6def7" + integrity sha1-ErEi8SD5w028F2wauBpUis7W3vc= + +file-uri-to-path@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd" + integrity sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw== + +filename-regex@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26" + integrity sha1-wcS5vuPglyXdsQa3XB4wH+LxiyY= + +fill-range@^2.1.0: + version "2.2.4" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" + integrity sha512-cnrcCbj01+j2gTG921VZPnHbjmdAf8oQV/iGeV2kZxGSyfYjjTyY79ErsK1WJWMpw6DaApEX72binqJE+/d+5Q== + dependencies: + is-number "^2.1.0" + isobject "^2.0.0" + randomatic "^3.0.0" + repeat-element "^1.1.2" + repeat-string "^1.5.2" + +fill-range@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" + integrity sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc= + dependencies: + extend-shallow "^2.0.1" + is-number "^3.0.0" + repeat-string "^1.6.1" + to-regex-range "^2.1.0" + +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" + +filter-keys@^1.0.2: + version "1.1.0" + resolved "https://registry.yarnpkg.com/filter-keys/-/filter-keys-1.1.0.tgz#e3851541c924695646f8c1fc4dcac91193b2e77b" + integrity sha1-44UVQckkaVZG+MH8TcrJEZOy53s= + dependencies: + micromatch "^2.2.0" + +filter-object@^2.0.0, filter-object@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/filter-object/-/filter-object-2.1.0.tgz#af9c0ad0bb40a006946b84b4db33c3ae5e93df86" + integrity sha1-r5wK0LtAoAaUa4S02zPDrl6T34Y= + dependencies: + extend-shallow "^2.0.1" + filter-keys "^1.0.2" + filter-values "^0.4.0" + kind-of "^2.0.1" + object.pick "^1.1.1" + +filter-values@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/filter-values/-/filter-values-0.4.1.tgz#59e6dbd5d3fd6302bd2db15c28e71bc1610ee84b" + integrity sha1-Webb1dP9YwK9LbFcKOcbwWEO6Es= + dependencies: + for-own "^0.1.3" + is-match "^0.4.0" + +find-file-up@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/find-file-up/-/find-file-up-0.1.3.tgz#cf68091bcf9f300a40da411b37da5cce5a2fbea0" + integrity sha1-z2gJG8+fMApA2kEbN9pczlovvqA= + dependencies: + fs-exists-sync "^0.1.0" + resolve-dir "^0.1.0" + +find-index@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/find-index/-/find-index-0.1.1.tgz#675d358b2ca3892d795a1ab47232f8b6e2e0dde4" + integrity sha1-Z101iyyjiS15Whq0cjL4tuLg3eQ= + +find-pkg@^0.1.0, find-pkg@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/find-pkg/-/find-pkg-0.1.2.tgz#1bdc22c06e36365532e2a248046854b9788da557" + integrity sha1-G9wiwG42NlUy4qJIBGhUuXiNpVc= + dependencies: + find-file-up "^0.1.2" + +find-up@^1.0.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" + integrity sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8= + dependencies: + path-exists "^2.0.0" + pinkie-promise "^2.0.0" + +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +findup-sync@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-2.0.0.tgz#9326b1488c22d1a6088650a86901b2d9a90a2cbc" + integrity sha1-kyaxSIwi0aYIhlCoaQGy2akKLLw= + dependencies: + detect-file "^1.0.0" + is-glob "^3.1.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +findup-sync@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" + integrity sha512-YbffarhcicEhOrm4CtrwdKBdCuz576RLdhJDsIfvNtxUuhdRet1qZcsMjqbePtAseKdAnDyM/IyXbu7PRPRLYg== + dependencies: + detect-file "^1.0.0" + is-glob "^4.0.0" + micromatch "^3.0.4" + resolve-dir "^1.0.1" + +fined@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fined/-/fined-1.2.0.tgz#d00beccf1aa2b475d16d423b0238b713a2c4a37b" + integrity sha512-ZYDqPLGxDkDhDZBjZBb+oD1+j0rA4E0pXY50eplAAOPg2N/gUBSSk5IM1/QhPfyVo19lJ+CvXpqfvk+b2p/8Ng== + dependencies: + expand-tilde "^2.0.2" + is-plain-object "^2.0.3" + object.defaults "^1.1.0" + object.pick "^1.2.0" + parse-filepath "^1.0.1" + +first-chunk-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/first-chunk-stream/-/first-chunk-stream-1.0.0.tgz#59bfb50cd905f60d7c394cd3d9acaab4e6ad934e" + integrity sha1-Wb+1DNkF9g18OUzT2ayqtOatk04= + +flagged-respawn@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/flagged-respawn/-/flagged-respawn-1.0.1.tgz#e7de6f1279ddd9ca9aac8a5971d618606b3aab41" + integrity sha512-lNaHNVymajmk0OJMBn8fVUAU1BtDeKIqKoVhk4xAALB57aALg6b4W0MfJ/cUE0g9YBXy5XhSlPIpYIJ7HaY/3Q== + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flat@^5.0.2: + version "5.0.2" + resolved "https://registry.yarnpkg.com/flat/-/flat-5.0.2.tgz#8ca6fe332069ffa9d324c327198c598259ceb241" + integrity sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ== + +flatted@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + +flush-write-stream@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/flush-write-stream/-/flush-write-stream-1.1.1.tgz#8dd7d873a1babc207d94ead0c2e0e44276ebf2e8" + integrity sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w== + dependencies: + inherits "^2.0.3" + readable-stream "^2.3.6" + +follow-redirects@1.5.10: + version "1.5.10" + resolved "https://registry.yarnpkg.com/follow-redirects/-/follow-redirects-1.5.10.tgz#7b7a9f9aea2fdff36786a94ff643ed07f4ff5e2a" + integrity sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ== + dependencies: + debug "=3.1.0" + +for-in@^0.1.3, for-in@^0.1.4: + version "0.1.8" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-0.1.8.tgz#d8773908e31256109952b1fdb9b3fa867d2775e1" + integrity sha1-2Hc5COMSVhCZUrH9ubP6hn0ndeE= + +for-in@^1.0.1, for-in@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" + integrity sha1-gQaNKVqBQuwKxybG4iAMMPttXoA= + +for-own@^0.1.1, for-own@^0.1.2, for-own@^0.1.3, for-own@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce" + integrity sha1-UmXGgaTylNq78XyVCbZ2OqhFEM4= + dependencies: + for-in "^1.0.1" + +for-own@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/for-own/-/for-own-1.0.0.tgz#c63332f415cedc4b04dbfe70cf836494c53cb44b" + integrity sha1-xjMy9BXO3EsE2/5wz4NklMU8tEs= + dependencies: + for-in "^1.0.1" + +format-people@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/format-people/-/format-people-0.1.4.tgz#b1da1aad853e967426cceaf9f6a635a8eeaad97d" + integrity sha1-sdoarYU+lnQmzOr59qY1qO6q2X0= + dependencies: + extend-shallow "^2.0.1" + markdown-utils "^0.7.3" + right-pad-values "^0.3.1" + +fragment-cache@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19" + integrity sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk= + dependencies: + map-cache "^0.2.2" + +from@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" + integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= + +fs-exists-sync@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/fs-exists-sync/-/fs-exists-sync-0.1.0.tgz#982d6893af918e72d08dec9e8673ff2b5a8d6add" + integrity sha1-mC1ok6+RjnLQjeyehnP/K1qNat0= + +fs-mkdirp-stream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz#0b7815fc3201c6a69e14db98ce098c16935259eb" + integrity sha1-C3gV/DIBxqaeFNuYzgmMFpNSWes= + dependencies: + graceful-fs "^4.1.11" + through2 "^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@^1.0.0, fsevents@^1.2.7: + version "1.2.13" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.2.13.tgz#f325cb0455592428bcf11b383370ef70e3bfcc38" + integrity sha512-oWb1Z6mkHIskLzEJ/XWX0srkpkTQ7vaopMQkyaEIoq0fmtFVxOthb8cCxeT+p3ynTdkk/RZwbgG4brR5BeWECw== + dependencies: + bindings "^1.5.0" + nan "^2.12.1" + +fsevents@~2.3.2: + version "2.3.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" + integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== + +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== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= + +gaze@^0.5.1: + version "0.5.2" + resolved "https://registry.yarnpkg.com/gaze/-/gaze-0.5.2.tgz#40b709537d24d1d45767db5a908689dfe69ac44f" + integrity sha1-QLcJU30k0dRXZ9takIaJ3+aaxE8= + dependencies: + globule "~0.1.0" + +generate-collections@^0.3.7: + version "0.3.9" + resolved "https://registry.yarnpkg.com/generate-collections/-/generate-collections-0.3.9.tgz#98ae16a49cea90dff603c0a29c96bd2e88f5c956" + integrity sha1-mK4WpJzqkN/2A8CinJa9Loj1yVY= + dependencies: + extend-shallow "^2.0.1" + "falsey" "^0.3.0" + is-valid-app "^0.3.0" + isobject "^3.0.0" + lazy-cache "^2.0.2" + parser-front-matter "^1.6.3" + +generate-data@^0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/generate-data/-/generate-data-0.1.8.tgz#473f8e5c552eedc968dbf627b61d51266cb1fc6f" + integrity sha1-Rz+OXFUu7clo2/Ynth1RJmyx/G8= + dependencies: + base-data "^0.6.0" + camel-case "^3.0.0" + clone-deep "^0.2.4" + expand-pkg "^0.1.8" + is-valid-app "^0.2.1" + lazy-cache "^2.0.2" + namify "^0.1.3" + repo-utils "^0.3.7" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-caller-file@^2.0.5: + 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-first@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/get-first/-/get-first-0.1.2.tgz#3bc3ce77d7ab9cd1ae8f904c38c3f22402e95794" + integrity sha1-O8POd9ernNGuj5BMOMPyJALpV5Q= + dependencies: + get-value "^2.0.2" + +get-intrinsic@^1.0.2: + version "1.1.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.1.1.tgz#15f59f376f855c446963948f0d24cd3637b4abc6" + integrity sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-object@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/get-object/-/get-object-0.2.0.tgz#d92ff7d5190c64530cda0543dac63a3d47fe8c0c" + integrity sha1-2S/31RkMZFMM2gVD2sY6PUf+jAw= + dependencies: + is-number "^2.0.2" + isobject "^0.2.0" + +get-pkg@^1.0.0, get-pkg@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/get-pkg/-/get-pkg-1.1.0.tgz#f16ba46de95c9a6296c1774e78031b4eadb795c1" + integrity sha512-ZMZoL7L2HpYQE+9RDjjloJYhrqqzC23ExvMFREXavY+71ltJBHf3UOSiuV1WAD58m9Bh0Um0GOrFvmL2lakO8Q== + dependencies: + axios "^0.18.0" + +get-pkgs@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/get-pkgs/-/get-pkgs-0.2.3.tgz#91557657eff1da964ae205aa70f3d42a07767e78" + integrity sha1-kVV2V+/x2pZK4gWqcPPUKgd2fng= + dependencies: + ansi-bold "^0.1.1" + ansi-red "^0.1.1" + async "^1.5.0" + filter-object "^2.1.0" + lazy-cache "^0.2.4" + min-request "^1.4.1" + +get-stdin@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/get-stdin/-/get-stdin-4.0.1.tgz#b968c6b0a04384324902e8bf1a5df32579a450fe" + integrity sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4= + +get-value@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-0.3.2.tgz#d52e793355ee75e4b8b04decbe2a330942ccc845" + integrity sha1-1S55M1XudeS4sE3sviozCULMyEU= + dependencies: + isobject "^0.2.0" + +get-value@^1.0.4, get-value@^1.1.4, get-value@^1.1.5, get-value@^1.2.1: + version "1.3.1" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-1.3.1.tgz#8ac7ef4f20382392b2646548f9b9ad2dc6c89642" + integrity sha1-isfvTyA4I5KyZGVI+bmtLcbIlkI= + dependencies: + arr-flatten "^1.0.1" + is-extendable "^0.1.1" + lazy-cache "^0.2.4" + noncharacters "^1.1.0" + +get-value@^2.0.0, get-value@^2.0.2, get-value@^2.0.3, get-value@^2.0.6: + version "2.0.6" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28" + integrity sha1-3BXKHGcjh8p2vTesCjlbogQqLCg= + +get-value@^3.0.0, get-value@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/get-value/-/get-value-3.0.1.tgz#5efd2a157f1d6a516d7524e124ac52d0a39ef5a8" + integrity sha512-mKZj9JLQrwMBtj5wxi6MH8Z5eSKaERpAwjg43dPtlGI1ZVEgH/qC7T8/6R2OBSUA+zzHBZgICsVJaEIV2tKTDA== + dependencies: + isobject "^3.0.1" + +get-view@^0.1.1, get-view@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/get-view/-/get-view-0.1.3.tgz#3660ac058ba13df9749cabcaa6bcb96d41aa0ea0" + integrity sha1-NmCsBYuhPfl0nKvKpry5bUGqDqA= + dependencies: + isobject "^3.0.0" + match-file "^0.2.1" + +getobject@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/getobject/-/getobject-0.1.0.tgz#047a449789fa160d018f5486ed91320b6ec7885c" + integrity sha1-BHpEl4n6Fg0Bj1SG7ZEyC27HiFw= + +gfm-code-block-regex@^0.2.1: + version "0.2.3" + resolved "https://registry.yarnpkg.com/gfm-code-block-regex/-/gfm-code-block-regex-0.2.3.tgz#0b9fe68acf2c5a5022fd6d2d418a634f6e97c110" + integrity sha1-C5/mis8sWlAi/W0tQYpjT26XwRA= + +gfm-code-block-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gfm-code-block-regex/-/gfm-code-block-regex-1.0.0.tgz#bb83c7d6284e6b5b72fa02198a58ac0d256215d2" + integrity sha1-u4PH1ihOa1ty+gIZilisDSViFdI= + +gfm-code-blocks@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/gfm-code-blocks/-/gfm-code-blocks-0.2.2.tgz#2999d8148c451b86632c71fa6debe115ee071ffe" + integrity sha1-KZnYFIxFG4ZjLHH6bevhFe4HH/4= + dependencies: + gfm-code-block-regex "^0.2.1" + +gfm-code-blocks@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/gfm-code-blocks/-/gfm-code-blocks-0.3.0.tgz#111c18ccbb2029b846115090caa07d2fd90fc66f" + integrity sha1-ERwYzLsgKbhGEVCQyqB9L9kPxm8= + dependencies: + gfm-code-block-regex "^0.2.1" + +gfm-code-blocks@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gfm-code-blocks/-/gfm-code-blocks-1.0.0.tgz#614d21059b844c6bbc9d588c089b25c4e8bccf0d" + integrity sha1-YU0hBZuETGu8nViMCJslxOi8zw0= + dependencies: + gfm-code-block-regex "^1.0.0" + +git-branch@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/git-branch/-/git-branch-2.0.1.tgz#442724a97574c66ede4290ded75b7430785da08f" + integrity sha512-jMCT1kjXvsUdZKQd2p8E1uZhKsIuR1pnHgcDYQpQiXBtzE9cmYGvOcCSGqqi58x0B9CPS0lUSu/yti866est8g== + dependencies: + findup-sync "^2.0.0" + +git-config-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/git-config-path/-/git-config-path-0.1.0.tgz#a34f7dd77f61b84b0c6ea9b21d88a35908cd2951" + integrity sha1-o099139huEsMbqmyHYijWQjNKVE= + +git-config-path@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/git-config-path/-/git-config-path-1.0.1.tgz#6d33f7ed63db0d0e118131503bab3aca47d54664" + integrity sha1-bTP37WPbDQ4RgTFQO6s6ykfVRmQ= + dependencies: + extend-shallow "^2.0.1" + fs-exists-sync "^0.1.0" + homedir-polyfill "^1.0.0" + +git-repo-name@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/git-repo-name/-/git-repo-name-0.6.0.tgz#af09884656aa537ec625c7087008175cd61228ff" + integrity sha1-rwmIRlaqU37GJccIcAgXXNYSKP8= + dependencies: + cwd "^0.9.1" + file-name "^0.1.0" + lazy-cache "^1.0.4" + remote-origin-url "^0.5.1" + +git-user-name@^1.1.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/git-user-name/-/git-user-name-1.2.1.tgz#78a76a4239c29cbe09805d8a0711abec25755e5d" + integrity sha512-t4IfqsTJdXWFVur0P9VCqhMpwmI6XnMR7haKikObCPytyabVfhyR6NthNa6ximq4nQjBF31h0qBCyvpT6gObEQ== + dependencies: + extend-shallow "^2.0.1" + git-config-path "^0.1.0" + isobject "^2.0.0" + lazy-cache "^1.0.3" + parse-git-config "^1.0.0" + +github-base@^0.5.1: + version "0.5.4" + resolved "https://registry.yarnpkg.com/github-base/-/github-base-0.5.4.tgz#90bcaa96175ad32202195c337e18fb69de349b41" + integrity sha1-kLyqlhda0yICGVwzfhj7ad40m0E= + dependencies: + define-property "^0.2.5" + extend-shallow "^2.0.1" + is-buffer "^1.1.5" + mixin-deep "^1.2.0" + object.omit "^2.0.1" + parse-link-header "^0.4.1" + simple-get "^2.5.1" + static-extend "^0.1.2" + use "^3.0.0" + +github-contributors@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/github-contributors/-/github-contributors-0.4.1.tgz#2dd11977fef313617418fdd122e4a160ddcd91cd" + integrity sha1-LdEZd/7zE2F0GP3RIuShYN3Nkc0= + dependencies: + format-people "^0.1.4" + github-base "^0.5.1" + +glob-base@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4" + integrity sha1-27Fk9iIbHAscz4Kuoyi0l98Oo8Q= + dependencies: + glob-parent "^2.0.0" + is-glob "^2.0.0" + +glob-parent@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28" + integrity sha1-gTg9ctsFT8zPUzbaqQLxgvbtuyg= + dependencies: + is-glob "^2.0.0" + +glob-parent@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-3.1.0.tgz#9e6af6299d8d3bd2bd40430832bd113df906c5ae" + integrity sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4= + dependencies: + is-glob "^3.1.0" + path-dirname "^1.0.0" + +glob-parent@^5.1.2, glob-parent@~5.1.2: + 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-stream@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-4.1.1.tgz#b842df10d688c7eb6bcfcebd846f3852296b3200" + integrity sha1-uELfENaIx+trz869hG84UilrMgA= + dependencies: + glob "^4.3.1" + glob2base "^0.0.12" + minimatch "^2.0.1" + ordered-read-streams "^0.1.0" + through2 "^0.6.1" + unique-stream "^2.0.2" + +glob-stream@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/glob-stream/-/glob-stream-6.1.0.tgz#7045c99413b3eb94888d83ab46d0b404cc7bdde4" + integrity sha1-cEXJlBOz65SIjYOrRtC0BMx73eQ= + dependencies: + extend "^3.0.0" + glob "^7.1.1" + glob-parent "^3.1.0" + is-negated-glob "^1.0.0" + ordered-read-streams "^1.0.0" + pumpify "^1.3.5" + readable-stream "^2.1.5" + remove-trailing-separator "^1.0.1" + to-absolute-glob "^2.0.0" + unique-stream "^2.0.2" + +glob-toc@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/glob-toc/-/glob-toc-0.1.2.tgz#4e299fdd876121f51516a96425c7eb6c1850b746" + integrity sha1-Timf3YdhIfUVFqlkJcfrbBhQt0Y= + dependencies: + globby "^2.0.0" + markdown-utils "^0.6.1" + pad-left "^1.0.2" + +glob-watcher@^0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-0.0.8.tgz#68aeb661e7e2ce8d3634381b2ec415f00c6bc2a4" + integrity sha1-aK62Yefizo02NDgbLsQV8AxrwqQ= + dependencies: + gaze "^0.5.1" + +glob-watcher@^5.0.3: + version "5.0.5" + resolved "https://registry.yarnpkg.com/glob-watcher/-/glob-watcher-5.0.5.tgz#aa6bce648332924d9a8489be41e3e5c52d4186dc" + integrity sha512-zOZgGGEHPklZNjZQaZ9f41i7F2YwE+tS5ZHrDhbBCk3stwahn5vQxnFmBJZHoYdusR6R1bLSXeGUy/BhctwKzw== + dependencies: + anymatch "^2.0.0" + async-done "^1.2.0" + chokidar "^2.0.0" + is-negated-glob "^1.0.0" + just-debounce "^1.0.0" + normalize-path "^3.0.0" + object.defaults "^1.1.0" + +glob2base@^0.0.12: + version "0.0.12" + resolved "https://registry.yarnpkg.com/glob2base/-/glob2base-0.0.12.tgz#9d419b3e28f12e83a362164a277055922c9c0d56" + integrity sha1-nUGbPijxLoOjYhZKJ3BVkiycDVY= + dependencies: + find-index "^0.1.1" + +glob@^4.3.1: + version "4.5.3" + resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" + integrity sha1-xstz0yJsHv7wTePFbQEvAzd+4V8= + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "^2.0.1" + once "^1.3.0" + +glob@^5.0.3: + version "5.0.15" + resolved "https://registry.yarnpkg.com/glob/-/glob-5.0.15.tgz#1bc936b9e02f4a603fcc222ecf7633d30b8b93b1" + integrity sha1-G8k2ueAvSmA/zCIuz3Yz0wuLk7E= + dependencies: + inflight "^1.0.4" + inherits "2" + minimatch "2 || 3" + once "^1.3.0" + path-is-absolute "^1.0.0" + +glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: + version "7.1.7" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.7.tgz#3b193e9233f01d42d0b3f78294bbeeb418f94a90" + integrity sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ== + 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@^8.1.0: + version "8.1.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-8.1.0.tgz#d388f656593ef708ee3e34640fdfb99a9fd1c33e" + integrity sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ== + dependencies: + fs.realpath "^1.0.0" + inflight "^1.0.4" + inherits "2" + minimatch "^5.0.1" + once "^1.3.0" + +glob@~3.1.21: + version "3.1.21" + resolved "https://registry.yarnpkg.com/glob/-/glob-3.1.21.tgz#d29e0a055dea5138f4d07ed40e8982e83c2066cd" + integrity sha1-0p4KBV3qUTj00H7UDomC6DwgZs0= + dependencies: + graceful-fs "~1.2.0" + inherits "1" + minimatch "~0.2.11" + +global-modules@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-0.2.3.tgz#ea5a3bed42c6d6ce995a4f8a1269b5dae223828d" + integrity sha1-6lo77ULG1s6ZWk+KEmm12uIjgo0= + dependencies: + global-prefix "^0.1.4" + is-windows "^0.2.0" + +global-modules@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-1.0.0.tgz#6d770f0eb523ac78164d72b5e71a8877265cc3ea" + integrity sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg== + dependencies: + global-prefix "^1.0.1" + is-windows "^1.0.1" + resolve-dir "^1.0.0" + +global-modules@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/global-modules/-/global-modules-2.0.0.tgz#997605ad2345f27f51539bea26574421215c7780" + integrity sha512-NGbfmJBp9x8IxyJSd1P+otYK8vonoJactOogrVfFRIAEY1ukil8RSKDz2Yo7wh1oihl51l/r6W4epkeKJHqL8A== + dependencies: + global-prefix "^3.0.0" + +global-prefix@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-0.1.5.tgz#8d3bc6b8da3ca8112a160d8d496ff0462bfef78f" + integrity sha1-jTvGuNo8qBEqFg2NSW/wRiv+948= + dependencies: + homedir-polyfill "^1.0.0" + ini "^1.3.4" + is-windows "^0.2.0" + which "^1.2.12" + +global-prefix@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-1.0.2.tgz#dbf743c6c14992593c655568cb66ed32c0122ebe" + integrity sha1-2/dDxsFJklk8ZVVoy2btMsASLr4= + dependencies: + expand-tilde "^2.0.2" + homedir-polyfill "^1.0.1" + ini "^1.3.4" + is-windows "^1.0.1" + which "^1.2.14" + +global-prefix@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/global-prefix/-/global-prefix-3.0.0.tgz#fc85f73064df69f50421f47f883fe5b913ba9b97" + integrity sha512-awConJSVCHVGND6x3tmMaKcQvwXLhjdkmomy2W+Goaui8YPgYgXJZewhg3fWC+DlfqqQuWg8AwqjGTD2nAPVWg== + dependencies: + ini "^1.3.5" + kind-of "^6.0.2" + which "^1.3.1" + +globals@^13.6.0, globals@^13.9.0: + version "13.9.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" + integrity sha512-74/FduwI/JaIrr1H8e71UbDE+5x7pIPs1C2rrwC52SszOo043CsWOZEMW7o2Y58xwm9b+0RBKDxY5n2sUpEFxA== + dependencies: + type-fest "^0.20.2" + +globby@^2.0.0, globby@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/globby/-/globby-2.1.0.tgz#9e9192bcd33f4ab6a4f894e5e7ea8b713213c482" + integrity sha1-npGSvNM/Srak+JTl5+qLcTITxII= + dependencies: + array-union "^1.0.1" + async "^1.2.1" + glob "^5.0.3" + object-assign "^3.0.0" + +globule@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/globule/-/globule-0.1.0.tgz#d9c8edde1da79d125a151b79533b978676346ae5" + integrity sha1-2cjt3h2nnRJaFRt5UzuXhnY0auU= + dependencies: + glob "~3.1.21" + lodash "~1.0.1" + minimatch "~0.2.11" + +glogg@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/glogg/-/glogg-1.0.2.tgz#2d7dd702beda22eb3bffadf880696da6d846313f" + integrity sha512-5mwUoSuBk44Y4EshyiqcH95ZntbDdTQqA3QYSrxmzj28Ai0vXBGMH1ApSANH14j2sIRtqCEyg6PfsuP7ElOEDA== + dependencies: + sparkles "^1.0.0" + +graceful-fs@^3.0.0: + version "3.0.12" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-3.0.12.tgz#0034947ce9ed695ec8ab0b854bc919e82b1ffaef" + integrity sha512-J55gaCS4iTTJfTXIxSVw3EMQckcqkpdRv3IR7gu6sq0+tbC363Zx6KH/SEwXASK9JRbhyZmVjJEVJIOxYsB3Qg== + dependencies: + natives "^1.1.3" + +graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6: + version "4.2.6" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.6.tgz#ff040b2b0853b23c3d31027523706f1885d76bee" + integrity sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ== + +graceful-fs@~1.2.0: + version "1.2.3" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-1.2.3.tgz#15a4806a57547cb2d2dbf27f42e89a8c3451b364" + integrity sha1-FaSAaldUfLLS2/J/QuiajDRRs2Q= + +gray-matter@^2.0.2, gray-matter@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-2.1.1.tgz#3042d9adec2a1ded6a7707a9ed2380f8a17a430e" + integrity sha1-MELZrewqHe1qdwep7SOA+KF6Qw4= + dependencies: + ansi-red "^0.1.1" + coffee-script "^1.12.4" + extend-shallow "^2.0.1" + js-yaml "^3.8.1" + toml "^2.3.2" + +gray-matter@^3.0.2: + version "3.1.1" + resolved "https://registry.yarnpkg.com/gray-matter/-/gray-matter-3.1.1.tgz#101f80d9e69eeca6765cdce437705b18f40876ac" + integrity sha512-nZ1qjLmayEv0/wt3sHig7I0s3/sJO0dkAaKYQ5YAOApUtYEOonXSFdWvL1khvnZMTvov4UufkqlFsilPnejEXA== + dependencies: + extend-shallow "^2.0.1" + js-yaml "^3.10.0" + kind-of "^5.0.2" + strip-bom-string "^1.0.0" + +group-array@^0.3.1: + version "0.3.4" + resolved "https://registry.yarnpkg.com/group-array/-/group-array-0.3.4.tgz#7ce02db67169ef2db472f1323c255ea5661b3748" + integrity sha512-YAmNsgsi1uQ7Ai3T4FFkMoskqbLEUPRajAmrn8FclwZQQnV98NLrNWjQ3n2+i1pANxdO3n6wsNEkKq5XrYy0Ow== + dependencies: + arr-flatten "^1.0.1" + for-own "^0.1.4" + get-value "^2.0.6" + kind-of "^3.1.0" + split-string "^1.0.1" + union-value "^1.0.1" + +gulp-cli@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.3.0.tgz#ec0d380e29e52aa45e47977f0d32e18fd161122f" + integrity sha512-zzGBl5fHo0EKSXsHzjspp3y5CONegCm8ErO5Qh0UzFzk2y4tMvzLWhoDokADbarfZRL2pGpRp7yt6gfJX4ph7A== + dependencies: + ansi-colors "^1.0.1" + archy "^1.0.0" + array-sort "^1.0.0" + color-support "^1.1.3" + concat-stream "^1.6.0" + copy-props "^2.0.1" + fancy-log "^1.3.2" + gulplog "^1.0.0" + interpret "^1.4.0" + isobject "^3.0.1" + liftoff "^3.1.0" + matchdep "^2.0.0" + mute-stdout "^1.0.0" + pretty-hrtime "^1.0.0" + replace-homedir "^1.0.0" + semver-greatest-satisfied-range "^1.1.0" + v8flags "^3.2.0" + yargs "^7.1.0" + +gulp-drafts@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/gulp-drafts/-/gulp-drafts-0.2.0.tgz#861118b5a6eee812349516ee4e24a0f66867aa21" + integrity sha1-hhEYtabu6BI0lRbuTiSg9mhnqiE= + dependencies: + get-first "^0.1.1" + kind-of "^1.1.0" + micromatch "^2.1.0" + through2 "^0.6.3" + +gulp-header@^1.7.1: + version "1.8.12" + resolved "https://registry.yarnpkg.com/gulp-header/-/gulp-header-1.8.12.tgz#ad306be0066599127281c4f8786660e705080a84" + integrity sha512-lh9HLdb53sC7XIZOYzTXM4lFuXElv3EVkSDhsd7DoJBj7hm+Ni7D3qYbb+Rr8DuM8nRanBvkVO9d7askreXGnQ== + dependencies: + concat-with-sourcemaps "*" + lodash.template "^4.4.0" + through2 "^2.0.0" + +gulp-reflinks@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulp-reflinks/-/gulp-reflinks-1.0.0.tgz#cfa306e363bdabc87aac2b710a51816a109ea865" + integrity sha512-xt9XKo4eASQs1p3GbuFKM9YFob3swTUe2Gkhf1afA5oifbJ2FRK8kffwV634Nnu6aRod7XD2K66UyhECPctITw== + dependencies: + through2 "^2.0.3" + verb-reflinks "^1.0.0" + +gulp-unused@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/gulp-unused/-/gulp-unused-0.2.1.tgz#cc8084abaf08c1a225f566a5c790d7b096d3ada7" + integrity sha1-zICEq68IwaIl9Walx5DXsJbTrac= + dependencies: + arr-union "^3.1.0" + extend-shallow "^2.0.1" + log-utils "^0.2.1" + longest "^1.0.1" + matched "^0.4.4" + repeat-string "^1.6.1" + through2 "^2.0.3" + vinyl "^2.0.1" + +gulp-util@^3.0.4, gulp-util@^3.0.6: + version "3.0.8" + resolved "https://registry.yarnpkg.com/gulp-util/-/gulp-util-3.0.8.tgz#0054e1e744502e27c04c187c3ecc505dd54bbb4f" + integrity sha1-AFTh50RQLifATBh8PsxQXdVLu08= + dependencies: + array-differ "^1.0.0" + array-uniq "^1.0.2" + beeper "^1.0.0" + chalk "^1.0.0" + dateformat "^2.0.0" + fancy-log "^1.1.0" + gulplog "^1.0.0" + has-gulplog "^0.1.0" + lodash._reescape "^3.0.0" + lodash._reevaluate "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.template "^3.0.0" + minimist "^1.1.0" + multipipe "^0.1.2" + object-assign "^3.0.0" + replace-ext "0.0.1" + through2 "^2.0.0" + vinyl "^0.5.0" + +gulp@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/gulp/-/gulp-4.0.2.tgz#543651070fd0f6ab0a0650c6a3e6ff5a7cb09caa" + integrity sha512-dvEs27SCZt2ibF29xYgmnwwCYZxdxhQ/+LFWlbAW8y7jt68L/65402Lz3+CKy0Ov4rOs+NERmDq7YlZaDqUIfA== + dependencies: + glob-watcher "^5.0.3" + gulp-cli "^2.2.0" + undertaker "^1.2.1" + vinyl-fs "^3.0.0" + +gulplog@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/gulplog/-/gulplog-1.0.0.tgz#e28c4d45d05ecbbed818363ce8f9c5926229ffe5" + integrity sha1-4oxNRdBey77YGDY86PnFkmIp/+U= + dependencies: + glogg "^1.0.0" + +handlebars-utils@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/handlebars-utils/-/handlebars-utils-1.0.6.tgz#cb9db43362479054782d86ffe10f47abc76357f9" + integrity sha512-d5mmoQXdeEqSKMtQQZ9WkiUcO1E3tPbWxluCK9hVgIDPzQa9WsKo3Lbe/sGflTe7TomHEeZaOgwIkyIr1kfzkw== + dependencies: + kind-of "^6.0.0" + typeof-article "^0.1.1" + +handlebars@^4.0.6, handlebars@^4.7.7: + version "4.7.7" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.7.7.tgz#9ce33416aad02dbd6c8fafa8240d5d98004945a1" + integrity sha512-aAcXm5OAfE/8IXkcZvCepKU3VzW1/39Fb5ZuqMtgI/hT8X2YgoMvBY5dLhq/cpOvw7Lk1nK/UF71aLG/ZnVYRA== + dependencies: + minimist "^1.2.5" + neo-async "^2.6.0" + source-map "^0.6.1" + wordwrap "^1.0.0" + optionalDependencies: + uglify-js "^3.1.4" + +has-ansi@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91" + integrity sha1-NPUEnOHs3ysGSa8+8k5F7TVBbZE= + dependencies: + ansi-regex "^2.0.0" + +has-any-deep@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/has-any-deep/-/has-any-deep-0.3.2.tgz#0dd6c26f138d49271e69942e39a1fe5a1effd249" + integrity sha1-DdbCbxONSSceaZQuOaH+Wh7/0kk= + dependencies: + has-any "^0.1.1" + has-values "^0.1.2" + is-plain-object "^1.0.0" + reduce-object "^0.1.3" + +has-any@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/has-any/-/has-any-0.1.2.tgz#a377d6555ff0f574ea7850d78dd023d91f574c20" + integrity sha1-o3fWVV/w9XTqeFDXjdAj2R9XTCA= + dependencies: + isobject "^2.0.0" + +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-glob@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/has-glob/-/has-glob-0.1.1.tgz#a261c4c2a6c667e0c77b700a7f297c39ef3aa589" + integrity sha1-omHEwqbGZ+DHe3AKfyl8Oe86pYk= + dependencies: + is-glob "^2.0.1" + +has-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-glob/-/has-glob-1.0.0.tgz#9aaa9eedbffb1ba3990a7b0010fb678ee0081207" + integrity sha1-mqqe7b/7G6OZCnsAEPtnjuAIEgc= + dependencies: + is-glob "^3.0.0" + +has-gulplog@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/has-gulplog/-/has-gulplog-0.1.0.tgz#6414c82913697da51590397dafb12f22967811ce" + integrity sha1-ZBTIKRNpfaUVkDl9r7EvIpZ4Ec4= + dependencies: + sparkles "^1.0.0" + +has-own-deep@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-own-deep/-/has-own-deep-0.1.4.tgz#91eb0cda278083158f8042a28316434e9afe7876" + integrity sha1-kesM2ieAgxWPgEKigxZDTpr+eHY= + +has-symbols@^1.0.1, has-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.2.tgz#165d3070c00309752a1236a479331e3ac56f1423" + integrity sha512-chXa79rL/UC2KlX17jo3vRGz0azaWEx5tGqZg5pO3NUyEJVB17dMruQlzCCOfUvElghKcm5194+BCRvi2Rv/Gw== + +has-value@^0.2.0: + version "0.2.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.2.1.tgz#dbb14da140d429a8bcd4f089bc190f7db30bef70" + integrity sha1-27FNoUDUKai81PCJvBkPfbML73A= + dependencies: + get-value "^2.0.0" + has-values "^0.1.3" + +has-value@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f" + integrity sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8= + dependencies: + get-value "^2.0.3" + has-values "^0.1.4" + isobject "^2.0.0" + +has-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177" + integrity sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc= + dependencies: + get-value "^2.0.6" + has-values "^1.0.0" + isobject "^3.0.0" + +has-value@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/has-value/-/has-value-2.0.2.tgz#d0f12e8780ba8e90e66ad1a21c707fdb67c25658" + integrity sha512-ybKOlcRsK2MqrM3Hmz/lQxXHZ6ejzSPzpNabKB45jb5qDgJvKPa3SdapTsTLwEb9WltgWpOmNax7i+DzNOk4TA== + dependencies: + get-value "^3.0.0" + has-values "^2.0.1" + +has-values@^0.1.2, has-values@^0.1.3, has-values@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771" + integrity sha1-bWHeldkd/Km5oCCJrThL/49it3E= + +has-values@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f" + integrity sha1-lbC2P+whRmGab+V/51Yo1aOe/k8= + dependencies: + is-number "^3.0.0" + kind-of "^4.0.0" + +has-values@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-values/-/has-values-2.0.1.tgz#3876200ff86d8a8546a9264a952c17d5fc17579d" + integrity sha512-+QdH3jOmq9P8GfdjFg0eJudqx1FqU62NQJ4P16rOEHeRdl7ckgwn6uqQjzYE0ZoHVV/e5E2esuJ5Gl5+HUW19w== + dependencies: + kind-of "^6.0.2" + +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== + +helper-apidocs@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/helper-apidocs/-/helper-apidocs-0.5.1.tgz#8edd3c801ce61a20dc0ba36f113cb8fd2853a2e8" + integrity sha1-jt08gBzmGiDcC6NvETy4/ShToug= + dependencies: + is-glob "^2.0.1" + js-comments "^0.5.4" + lazy-cache "^1.0.3" + matched "^0.4.1" + mixin-deep "^1.1.3" + relative "^3.0.2" + template-bind-helpers "^0.2.0" + +helper-cache@^0.7.0, helper-cache@^0.7.1, helper-cache@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/helper-cache/-/helper-cache-0.7.2.tgz#024562c4b4b8b2ab2ab531d00be16ec496518b90" + integrity sha1-AkVixLS4sqsqtTHQC+FuxJZRi5A= + dependencies: + extend-shallow "^2.0.1" + lazy-cache "^0.2.3" + lodash.bind "^3.1.0" + +helper-changelog@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/helper-changelog/-/helper-changelog-0.1.0.tgz#1c952d96d89f62615e39d7ccdfdce1b0ca3a2dd5" + integrity sha1-HJUtltifYmFeOdfM39zhsMo6LdU= + dependencies: + mixin-deep "^1.0.1" + stringify-changelog "^0.1.0" + +helper-codelinks@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/helper-codelinks/-/helper-codelinks-0.1.2.tgz#8bfecb5af2e0373ae040aa2b700e89c0fa9d456f" + integrity sha1-i/7LWvLgNzrgQKorcA6JwPqdRW8= + dependencies: + api-toc "^0.3.1" + mixin-deep "^1.0.1" + +helper-copyright@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/helper-copyright/-/helper-copyright-1.4.0.tgz#5893c929c143fb42fc677b7c5f4f9e8f00109359" + integrity sha1-WJPJKcFD+0L8Z3t8X0+ejwAQk1k= + dependencies: + markdown-utils "^0.6.0" + merge-deep "^1.0.1" + +helper-copyright@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/helper-copyright/-/helper-copyright-2.1.2.tgz#3791e593e94ec042d50ab04e4a19818330d583ea" + integrity sha1-N5Hlk+lOwELVCrBOShmBgzDVg+o= + dependencies: + lazy-cache "^2.0.1" + markdown-link "^0.1.1" + mixin-deep "^1.1.3" + parse-author "^1.0.0" + update-copyright "^0.2.3" + year "^0.2.1" + +helper-coverage@^0.1.2: + version "0.1.3" + resolved "https://registry.yarnpkg.com/helper-coverage/-/helper-coverage-0.1.3.tgz#9fb7b1acca68ef951e9bfa8a7b0f6dd12b128a4d" + integrity sha1-n7exrMpo75Uem/qKew9t0SsSik0= + dependencies: + strip-color "^0.1.0" + try-open "^0.1.0" + +helper-date@^0.2.2: + version "0.2.3" + resolved "https://registry.yarnpkg.com/helper-date/-/helper-date-0.2.3.tgz#d870cabba041d329cc856db20bb8c49674e3ef28" + integrity sha1-2HDKu6BB0ynMhW2yC7jElnTj7yg= + dependencies: + date.js "^0.3.1" + extend-shallow "^2.0.1" + kind-of "^3.1.0" + moment "^2.17.1" + +helper-date@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/helper-date/-/helper-date-1.0.1.tgz#12fedea3ad8e44a7ca4c4efb0ff4104a5120cffb" + integrity sha512-wU3VOwwTJvGr/w5rZr3cprPHO+hIhlblTJHD6aFBrKLuNbf4lAmkawd2iK3c6NbJEvY7HAmDpqjOFSI5/+Ey2w== + dependencies: + date.js "^0.3.1" + handlebars-utils "^1.0.4" + moment "^2.18.1" + +helper-issue@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/helper-issue/-/helper-issue-0.3.0.tgz#7d26ba7ea8d94ed70c669e417ec300197145397e" + integrity sha1-fSa6fqjZTtcMZp5BfsMAGXFFOX4= + dependencies: + parse-github-url "^0.2.1" + +helper-license@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/helper-license/-/helper-license-0.2.1.tgz#7867672555608f0900d9b02b69921a9bc4d492f1" + integrity sha1-eGdnJVVgjwkA2bAraZIam8TUkvE= + dependencies: + arr-pluck "^0.1.0" + markdown-utils "^0.6.0" + mixin-deep "^1.0.1" + +helper-reflinks@^1.4.1: + version "1.4.2" + resolved "https://registry.yarnpkg.com/helper-reflinks/-/helper-reflinks-1.4.2.tgz#75927c81561c44aabaf44a457f4fd54eff4a50d8" + integrity sha1-dZJ8gVYcRKq69EpFf0/VTv9KUNg= + dependencies: + ansi-gray "^0.1.1" + ansi-green "^0.1.1" + ansi-red "^0.1.1" + async-array-reduce "^0.1.0" + get-pkgs "^0.2.2" + lazy-cache "^0.2.3" + load-pkg "^1.3.0" + markdown-utils "^0.7.1" + parse-github-url "^0.2.1" + stringify-github-url "^0.1.0" + success-symbol "^0.1.0" + +helper-reflinks@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/helper-reflinks/-/helper-reflinks-4.0.0.tgz#0604d46143eb351f65de837834fb36cb91cb4b74" + integrity sha512-ZEnDjQfatPNFEZ+vjWQ2Gp+vImI5Nl7cUKOT05CamQeti0KDOZRrVwrA7XHQDZubOWWv8c1IfcOO9uaGv91J+g== + dependencies: + arr-union "^3.1.0" + reflinks "^0.3.6" + +helper-related@^0.10.0: + version "0.10.0" + resolved "https://registry.yarnpkg.com/helper-related/-/helper-related-0.10.0.tgz#6e6bf1cb926ecded0f4c44199c70ae747deaea65" + integrity sha1-bmvxy5Juze0PTEQZnHCudH3q6mU= + dependencies: + ansi-gray "^0.1.1" + ansi-green "^0.1.1" + ansi-red "^0.1.1" + arr-filter "^1.1.1" + async-array-reduce "^0.1.0" + extend-shallow "^2.0.1" + get-pkgs "^0.2.2" + get-value "^1.1.5" + success-symbol "^0.1.0" + +helper-related@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/helper-related/-/helper-related-1.0.0.tgz#5fe1c5507a6e9e5930cd6b819b11f4080f6c96f6" + integrity sha512-PxuUsUo9oSu4xjiEdF53PzuvuixkdRCcp1wsz3YSpHFdUHsYQUxHqdkf6AHsOswfl5yXZ8GQM82gC3v1EnNqFg== + dependencies: + arr-union "^3.1.0" + engine "^0.1.12" + markdown-utils "^0.7.3" + reflinks "^1.0.0" + +helper-resolve@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/helper-resolve/-/helper-resolve-0.3.1.tgz#6906c806c48b593afcd1b2248d7a55d9c42f9d70" + integrity sha1-aQbIBsSLWTr80bIkjXpV2cQvnXA= + dependencies: + chalk "^1.0.0" + clone-deep "^0.1.1" + relative "^3.0.0" + +helper-slugify@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/helper-slugify/-/helper-slugify-0.2.0.tgz#ae8ecd22a69fdec31e2480473b5ca8e18c62c2eb" + integrity sha1-ro7NIqaf3sMeJIBHO1yo4Yxiwus= + dependencies: + strip-color "^0.1.0" + +helper-toc@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/helper-toc/-/helper-toc-0.2.0.tgz#3469e5ec45515df79629a196744b8480c0f11798" + integrity sha1-NGnl7EVRXfeWKaGWdEuEgMDxF5g= + dependencies: + glob-toc "^0.1.2" + globby "^2.0.0" + markdown-toc "^0.11.3" + markdown-utils "^0.6.1" + mixin-deep "^1.1.0" + relative "^3.0.0" + +homedir-polyfill@^1.0.0, homedir-polyfill@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz#743298cef4e5af3e194161fbadcc2151d3a058e8" + integrity sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA== + dependencies: + parse-passwd "^1.0.0" + +hosted-git-info@^2.1.4: + version "2.8.9" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" + integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== + +html-tag@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/html-tag/-/html-tag-2.0.0.tgz#36c3bc8d816fd30b570d5764a497a641640c2fed" + integrity sha512-XxzooSo6oBoxBEUazgjdXj7VwTn/iSTSZzTYKzYY6I916tkaYzypHxy+pbVU1h+0UQ9JlVf5XkNQyxOAiiQO1g== + dependencies: + is-self-closing "^1.0.1" + kind-of "^6.0.0" + +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + +imurmurhash@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" + integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= + +inflection@^1.12.0, inflection@^1.7.0: + version "1.13.1" + resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.13.1.tgz#c5cadd80888a90cf84c2e96e340d7edc85d5f0cb" + integrity sha512-dldYtl2WlN0QDkIDtg8+xFwOS2Tbmp12t1cHa5/YClU6ZQjTFm7B66UcVbh9NQB+HvT5BAd2t5+yKsBkw5pcqA== + +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" + +info-symbol@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/info-symbol/-/info-symbol-0.1.0.tgz#27841d72867ddb4242cd612d79c10633881c6a78" + integrity sha1-J4QdcoZ920JCzWEtecEGM4gcang= + +inherits@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-1.0.2.tgz#ca4309dadee6b54cc0b8d247e8d7c7a0975bdc9b" + integrity sha1-ykMJ2t7mtUzAuNJH6NfHoJdb3Js= + +inherits@2, inherits@^2.0.1, inherits@^2.0.3, inherits@~2.0.1, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@^1.3.4, ini@^1.3.5: + version "1.3.8" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c" + integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew== + +init-file-loader@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/init-file-loader/-/init-file-loader-0.1.1.tgz#4598a3b4d9c5bb2004250d5aa36c21f29ff65cbb" + integrity sha1-RZijtNnFuyAEJQ1ao2wh8p/2XLs= + +interpret@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/interpret/-/interpret-1.4.0.tgz#665ab8bc4da27a774a40584e812e3e0fa45b1a1e" + integrity sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA== + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +is-absolute@^0.2.2, is-absolute@^0.2.5, is-absolute@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-0.2.6.tgz#20de69f3db942ef2d87b9c2da36f172235b1b5eb" + integrity sha1-IN5p89uULvLYe5wto28XIjWxtes= + dependencies: + is-relative "^0.2.1" + is-windows "^0.2.0" + +is-absolute@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-absolute/-/is-absolute-1.0.0.tgz#395e1ae84b11f26ad1795e73c17378e48a301576" + integrity sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA== + dependencies: + is-relative "^1.0.0" + is-windows "^1.0.1" + +is-accessor-descriptor@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz#a9e12cb3ae8d876727eeef3843f8a0897b5c98d6" + integrity sha1-qeEss66Nh2cn7u84Q/igiXtcmNY= + dependencies: + kind-of "^3.0.2" + +is-accessor-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz#169c2f6d3df1f992618072365c9b0ea1f6878656" + integrity sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ== + dependencies: + kind-of "^6.0.0" + +is-arguments@^1.0.2, is-arguments@^1.0.4: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.1.0.tgz#62353031dfbee07ceb34656a6bde59efecae8dd9" + integrity sha512-1Ij4lOMPl/xB5kBDn7I+b2ttPMKa8szhEIrXDuXQD/oe3HJLTLhqhgGspwgyGd6MOywBUqVvYicF72lkgDnIHg== + dependencies: + call-bind "^1.0.0" + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-binary-buffer@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-binary-buffer/-/is-binary-buffer-1.0.0.tgz#bc6031290b65cbf799b9d9502b50fd5375524007" + integrity sha1-vGAxKQtly/eZudlQK1D9U3VSQAc= + dependencies: + is-buffer "^1.1.5" + +is-binary-path@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898" + integrity sha1-dfFmQrSA8YenEcgUFh/TpKdlWJg= + dependencies: + binary-extensions "^1.0.0" + +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@^1.0.2, is-buffer@^1.1.5: + version "1.1.6" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be" + integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w== + +is-buffer@^2.0.2: + version "2.0.5" + resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-2.0.5.tgz#ebc252e400d22ff8d77fa09888821a24a658c191" + integrity sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ== + +is-core-module@^2.2.0: + version "2.4.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.4.0.tgz#8e9fc8e15027b011418026e98f0e6f4d86305cc1" + integrity sha512-6A2fkfq1rfeQZjxrZJGerpLCTHRNEBiSgnu0+obeJpEPZRUooHgsizvzv0ZjJwOz3iWIHdJtVWJ/tmPr3D21/A== + dependencies: + has "^1.0.3" + +is-data-descriptor@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" + integrity sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y= + dependencies: + kind-of "^3.0.2" + +is-data-descriptor@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz#d84876321d0e7add03990406abbbbd36ba9268c7" + integrity sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ== + dependencies: + kind-of "^6.0.0" + +is-date-object@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.4.tgz#550cfcc03afada05eea3dd30981c7b09551f73e5" + integrity sha512-/b4ZVsG7Z5XVtIxs/h9W8nvfLgSAyKYdtGWQLbqy6jA1icmgjf8WCoTKgeS4wy5tYaPePouzFMANbnj94c2Z+A== + +is-descriptor@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-0.1.6.tgz#366d8240dde487ca51823b1ab9f07a10a78251ca" + integrity sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg== + dependencies: + is-accessor-descriptor "^0.1.6" + is-data-descriptor "^0.1.4" + kind-of "^5.0.0" + +is-descriptor@^1.0.0, is-descriptor@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-descriptor/-/is-descriptor-1.0.2.tgz#3b159746a66604b04f8c81524ba365c5f14d86ec" + integrity sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg== + dependencies: + is-accessor-descriptor "^1.0.0" + is-data-descriptor "^1.0.0" + kind-of "^6.0.2" + +is-dotfile@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1" + integrity sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE= + +is-equal-shallow@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534" + integrity sha1-IjgJj8Ih3gvPpdnqxMRdY4qhxTQ= + dependencies: + is-primitive "^2.0.0" + +is-extendable@^0.1.0, is-extendable@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89" + integrity sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik= + +is-extendable@^1.0.0, is-extendable@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4" + integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA== + dependencies: + is-plain-object "^2.0.4" + +is-extglob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0" + integrity sha1-rEaBd8SUNAWgkvyPKXYMb/xiBsA= + +is-extglob@^2.1.0, 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@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" + integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg== + +is-glob@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-1.1.3.tgz#b4c64b8303d39114492a460d364ccfb0d3c0a045" + integrity sha1-tMZLgwPTkRRJKkYNNkzPsNPAoEU= + +is-glob@^2.0.0, is-glob@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" + integrity sha1-0Jb5JqPe1WAPP9/ZEZjLCIjC2GM= + dependencies: + is-extglob "^1.0.0" + +is-glob@^3.0.0, is-glob@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-3.1.0.tgz#7ba5ae24217804ac70707b96922567486cc3e84a" + integrity sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo= + dependencies: + is-extglob "^2.1.0" + +is-glob@^4.0.0, 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-match@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/is-match/-/is-match-0.4.1.tgz#fb5f6c6709a1543b7c7efa7d9530e5b776f61f83" + integrity sha1-+19sZwmhVDt8fvp9lTDlt3b2H4M= + dependencies: + deep-equal "^1.0.1" + is-extendable "^0.1.1" + is-glob "^2.0.1" + micromatch "^2.3.7" + +is-negated-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-negated-glob/-/is-negated-glob-1.0.0.tgz#6910bca5da8c95e784b5751b976cf5a10fee36d2" + integrity sha1-aRC8pdqMleeEtXUbl2z1oQ/uNtI= + +is-number@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-0.1.1.tgz#69a7af116963d47206ec9bd9b48a14216f1e3806" + integrity sha1-aaevEWlj1HIG7JvZtIoUIW8eOAY= + +is-number@^1.1.0: + version "1.1.2" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-1.1.2.tgz#9d82409f3a8a8beecf249b1bc7dada49829966e4" + integrity sha1-nYJAnzqKi+7PJJsbx9raSYKZZuQ= + +is-number@^2.0.2, is-number@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f" + integrity sha1-Afy7s5NGOlSPL0ZszhbezknbkI8= + dependencies: + kind-of "^3.0.2" + +is-number@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" + integrity sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU= + dependencies: + kind-of "^3.0.2" + +is-number@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-4.0.0.tgz#0026e37f5454d73e356dfe6564699867c6a7f0ff" + integrity sha512-rSklcAIlf1OmFdyAqbnWTLVelsQ58uvZ66S/ZyawjWqIviTWCjg2PzVGw8WUA+nNuPTqb4wgA+NszrJ+08LlgQ== + +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-plain-obj@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/is-plain-obj/-/is-plain-obj-2.1.0.tgz#45e42e37fccf1f40da8e5f76ee21515840c09287" + integrity sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA== + +is-plain-object@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-0.1.0.tgz#3ca7db022de72fd12007f1957beb59ea596b979c" + integrity sha1-PKfbAi3nL9EgB/GVe+tZ6llrl5w= + +is-plain-object@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-1.0.0.tgz#ff5f752db71c3328afd5e685eb6adddd3eaffab7" + integrity sha1-/191LbccMyiv1eaF62rd3T6v+rc= + dependencies: + isobject "^0.2.0" + +is-plain-object@^2.0.0, is-plain-object@^2.0.1, is-plain-object@^2.0.3, is-plain-object@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677" + integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og== + dependencies: + isobject "^3.0.1" + +is-plain-object@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/is-plain-object/-/is-plain-object-5.0.0.tgz#4427f50ab3429e9025ea7d52e9043a9ef4159344" + integrity sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q== + +is-posix-bracket@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4" + integrity sha1-MzTceXdDaOkvAW5vvAqI9c1ua8Q= + +is-primitive@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" + integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= + +is-regex@^1.0.4: + version "1.1.3" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.3.tgz#d029f9aff6448b93ebbe3f33dac71511fdcbef9f" + integrity sha512-qSVXFz28HM7y+IWX6vLCsexdlvzT1PJNFSBuaQLQ5o0IEw8UDYW6/2+eCMVyIsbM8CNLX2a/QWmSpyxYEHY7CQ== + dependencies: + call-bind "^1.0.2" + has-symbols "^1.0.2" + +is-registered@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/is-registered/-/is-registered-0.1.5.tgz#1d346977419d665e2ac6c84013535685e6f76f7f" + integrity sha1-HTRpd0GdZl4qxshAE1NWheb3b38= + dependencies: + define-property "^0.2.5" + isobject "^2.1.0" + +is-relative@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-0.2.1.tgz#d27f4c7d516d175fb610db84bbeef23c3bc97aa5" + integrity sha1-0n9MfVFtF1+2ENuEu+7yPDvJeqU= + dependencies: + is-unc-path "^0.1.1" + +is-relative@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" + integrity sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA== + dependencies: + is-unc-path "^1.0.0" + +is-self-closing@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-self-closing/-/is-self-closing-1.0.1.tgz#5f406b527c7b12610176320338af0fa3896416e4" + integrity sha512-E+60FomW7Blv5GXTlYee2KDrnG6srxF7Xt1SjrhWUGUEsTFIqY/nq2y3DaftCsgUMdh89V07IVfhY9KIJhLezg== + dependencies: + self-closing-tags "^1.0.1" + +is-stream@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +is-true@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/is-true/-/is-true-0.1.1.tgz#db863da8968928bb86a4da4a9c6e6564b573dbcd" + integrity sha1-24Y9qJaJKLuGpNpKnG5lZLVz280= + dependencies: + isobject "^2.0.0" + +is-unc-path@^0.1.1: + version "0.1.2" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-0.1.2.tgz#6ab053a72573c10250ff416a3814c35178af39b9" + integrity sha1-arBTpyVzwQJQ/0FqOBTDUXivObk= + dependencies: + unc-path-regex "^0.1.0" + +is-unc-path@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-unc-path/-/is-unc-path-1.0.0.tgz#d731e8898ed090a12c352ad2eaed5095ad322c9d" + integrity sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ== + dependencies: + unc-path-regex "^0.1.2" + +is-unicode-supported@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz#3f26c76a809593b52bfa2ecb5710ed2779b522a7" + integrity sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw== + +is-utf8@^0.2.0, is-utf8@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" + integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= + +is-valid-app@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/is-valid-app/-/is-valid-app-0.1.2.tgz#2f67cbb3baf64d659c70d043fc91139b5a8b9590" + integrity sha1-L2fLs7r2TWWccNBD/JETm1qLlZA= + dependencies: + debug "^2.2.0" + is-registered "^0.1.5" + is-valid-instance "^0.1.0" + lazy-cache "^2.0.1" + +is-valid-app@^0.2.0, is-valid-app@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-valid-app/-/is-valid-app-0.2.1.tgz#65cf195bbd71bd776cb161991c684248d65dff89" + integrity sha1-Zc8ZW71xvXdssWGZHGhCSNZd/4k= + dependencies: + debug "^2.2.0" + is-registered "^0.1.5" + is-valid-instance "^0.2.0" + lazy-cache "^2.0.1" + +is-valid-app@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-valid-app/-/is-valid-app-0.3.0.tgz#78106b751f3ca32385fb45492bf29417b5993c80" + integrity sha1-eBBrdR88oyOF+0VJK/KUF7WZPIA= + dependencies: + debug "^2.6.3" + is-registered "^0.1.5" + is-valid-instance "^0.3.0" + lazy-cache "^2.0.2" + +is-valid-glob@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-0.3.0.tgz#d4b55c69f51886f9b65c70d6c2622d37e29f48fe" + integrity sha1-1LVcafUYhvm2XHDWwmItN+KfSP4= + +is-valid-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-valid-glob/-/is-valid-glob-1.0.0.tgz#29bf3eff701be2d4d315dbacc39bc39fe8f601aa" + integrity sha1-Kb8+/3Ab4tTTFdusw5vDn+j2Aao= + +is-valid-instance@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/is-valid-instance/-/is-valid-instance-0.1.0.tgz#7ad5c6a3886dfdf7d9cc78049ceff2171a9907b3" + integrity sha1-etXGo4ht/ffZzHgEnO/yFxqZB7M= + dependencies: + isobject "^2.1.0" + pascalcase "^0.1.1" + +is-valid-instance@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-valid-instance/-/is-valid-instance-0.2.0.tgz#e1a9ff1106b8cbae0007ea6a20f89d546a2a5a0f" + integrity sha1-4an/EQa4y64AB+pqIPidVGoqWg8= + dependencies: + isobject "^2.1.0" + pascalcase "^0.1.1" + +is-valid-instance@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-valid-instance/-/is-valid-instance-0.3.0.tgz#f4ac73023c4d4d8b9bc3b3ec3e66630516e28e9e" + integrity sha1-9KxzAjxNTYubw7PsPmZjBRbijp4= + dependencies: + isobject "^3.0.0" + pascalcase "^0.1.1" + +is-whitespace@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/is-whitespace/-/is-whitespace-0.3.0.tgz#1639ecb1be036aec69a54cbb401cfbed7114ab7f" + integrity sha1-Fjnssb4DauxppUy7QBz77XEUq38= + +is-windows@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-0.2.0.tgz#de1aa6d63ea29dd248737b69f1ff8b8002d2108c" + integrity sha1-3hqm1j6indJIc3tp8f+LgALSEIw= + +is-windows@^1.0.1, is-windows@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" + integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== + +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= + +isarray@1.0.0, isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isbinaryfile@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/isbinaryfile/-/isbinaryfile-3.0.3.tgz#5d6def3edebf6e8ca8cae9c30183a804b5f8be80" + integrity sha512-8cJBL5tTd2OS0dM4jz07wQd5g0dCCqIhUxPIGtZfa5L6hWlvV5MHTITy/DBAsF+Oe2LS1X3krBUhNwaGUWpWxw== + dependencies: + buffer-alloc "^1.2.0" + +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= + +isobject@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-0.2.0.tgz#a3432192f39b910b5f02cc989487836ec70aa85e" + integrity sha1-o0MhkvObkQtfAsyYlIeDbscKqF4= + +isobject@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-1.0.2.tgz#f0f9b8ce92dd540fa0740882e3835a2e022ec78a" + integrity sha1-8Pm4zpLdVA+gdAiC44NaLgIux4o= + +isobject@^2.0.0, isobject@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89" + integrity sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk= + dependencies: + isarray "1.0.0" + +isobject@^3.0.0, isobject@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" + integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= + +js-comments-template@^0.7.0: + version "0.7.4" + resolved "https://registry.yarnpkg.com/js-comments-template/-/js-comments-template-0.7.4.tgz#c9d8bb60de275baf30384c76a188617821018f1f" + integrity sha1-ydi7YN4nW68wOEx2oYhheCEBjx8= + +js-comments@^0.5.2, js-comments@^0.5.4: + version "0.5.4" + resolved "https://registry.yarnpkg.com/js-comments/-/js-comments-0.5.4.tgz#e8dee14b72039fe8710d5b166a6c8f2581a09437" + integrity sha1-6N7hS3IDn+hxDVsWamyPJYGglDc= + dependencies: + arr-union "^2.0.1" + js-comments-template "^0.7.0" + lodash "^3.7.0" + logging-helpers "^0.4.0" + parse-comments "^0.4.1" + relative "^3.0.0" + write "^0.2.0" + +js-tokens@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" + integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== + +js-yaml-lite@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/js-yaml-lite/-/js-yaml-lite-0.1.1.tgz#9a813e305de40789c1a64a462ff8c145ddef737c" + integrity sha1-moE+MF3kB4nBpkpGL/jBRd3vc3w= + +js-yaml@^3.10.0, js-yaml@^3.13.1, js-yaml@^3.8.1: + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== + dependencies: + argparse "^1.0.7" + esprima "^4.0.0" + +js-yaml@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.1.0.tgz#c1fb65f8f5017901cdd2c951864ba18458a10602" + integrity sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA== + dependencies: + argparse "^2.0.1" + +json-schema-traverse@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" + integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== + +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + +just-debounce@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.1.0.tgz#2f81a3ad4121a76bc7cb45dbf704c0d76a8e5ddf" + integrity sha512-qpcRocdkUmf+UTNBYx5w6dexX5J31AKK1OmPwH630a83DdVVUIngk55RSAiIGpQyoH0dlr872VHfPjnQnK1qDQ== + +just-extend@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/just-extend/-/just-extend-6.2.0.tgz#b816abfb3d67ee860482e7401564672558163947" + integrity sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw== + +kind-of@^0.1.0, kind-of@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-0.1.2.tgz#07bd601cc9433f5d79bd5edd2031ed155f0604a4" + integrity sha1-B71gHMlDP115vV7dIDHtFV8GBKQ= + +kind-of@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-1.1.0.tgz#140a3d2d41a36d2efcfa9377b62c24f8495a5c44" + integrity sha1-FAo9LUGjbS78+pN3tiwk+ElaXEQ= + +kind-of@^2.0.0, kind-of@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-2.0.1.tgz#018ec7a4ce7e3a86cb9141be519d24c8faa981b5" + integrity sha1-AY7HpM5+OobLkUG+UZ0kyPqpgbU= + dependencies: + is-buffer "^1.0.2" + +kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.0.4, kind-of@^3.1.0, kind-of@^3.2.0, kind-of@^3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64" + integrity sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ= + dependencies: + is-buffer "^1.1.5" + +kind-of@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57" + integrity sha1-IIE989cSkosgc3hpGkUGb65y3Vc= + dependencies: + is-buffer "^1.1.5" + +kind-of@^5.0.0, kind-of@^5.0.2: + version "5.1.0" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d" + integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw== + +kind-of@^6.0.0, kind-of@^6.0.2, kind-of@^6.0.3: + version "6.0.3" + resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd" + integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw== + +last-run@^1.1.0: + version "1.1.1" + resolved "https://registry.yarnpkg.com/last-run/-/last-run-1.1.1.tgz#45b96942c17b1c79c772198259ba943bebf8ca5b" + integrity sha1-RblpQsF7HHnHchmCWbqUO+v4yls= + dependencies: + default-resolution "^2.0.0" + es6-weak-map "^2.0.1" + +layouts@^0.12.1: + version "0.12.1" + resolved "https://registry.yarnpkg.com/layouts/-/layouts-0.12.1.tgz#6b99b3f1aa53e5e78c90ec75d4f491a6e0f57043" + integrity sha1-a5mz8apT5eeMkOx11PSRpuD1cEM= + dependencies: + delimiter-regex "^1.3.1" + "falsey" "^0.3.0" + get-view "^0.1.1" + lazy-cache "^2.0.1" + +layouts@^0.9.0: + version "0.9.0" + resolved "https://registry.yarnpkg.com/layouts/-/layouts-0.9.0.tgz#29ced985f16a0131581ea10ddff1aa019453ae09" + integrity sha1-Kc7ZhfFqATFYHqEN3/GqAZRTrgk= + dependencies: + delimiter-regex "^1.3.0" + "falsey" "^0.2.1" + get-value "^1.0.4" + +lazy-cache@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.1.0.tgz#d6cd450251d415b70103765f63130a0049a03795" + integrity sha1-1s1FAlHUFbcBA3ZfYxMKAEmgN5U= + dependencies: + ansi-yellow "^0.1.1" + +lazy-cache@^0.2.2, lazy-cache@^0.2.3, lazy-cache@^0.2.4: + version "0.2.7" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-0.2.7.tgz#7feddf2dcb6edb77d11ef1d117ab5ffdf0ab1b65" + integrity sha1-f+3fLctu23fRHvHRF6tf/fCrG2U= + +lazy-cache@^1.0.2, lazy-cache@^1.0.3, lazy-cache@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-1.0.4.tgz#a1d78fc3a50474cb80845d3b3b6e1da49a446e8e" + integrity sha1-odePw6UEdMuAhF07O24dpJpEbo4= + +lazy-cache@^2.0.1, lazy-cache@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/lazy-cache/-/lazy-cache-2.0.2.tgz#b9190a4f913354694840859f8a8f7084d8822264" + integrity sha1-uRkKT5EzVGlIQIWfio9whNiCImQ= + dependencies: + set-getter "^0.1.0" + +lazystream@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lazystream/-/lazystream-1.0.0.tgz#f6995fe0f820392f61396be89462407bb77168e4" + integrity sha1-9plf4PggOS9hOWvolGJAe7dxaOQ= + dependencies: + readable-stream "^2.0.5" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +lead@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lead/-/lead-1.0.0.tgz#6f14f99a37be3a9dd784f5495690e5903466ee42" + integrity sha1-bxT5mje+Op3XhPVJVpDlkDRm7kI= + dependencies: + flush-write-stream "^1.0.2" + +leven@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/leven/-/leven-2.1.0.tgz#c2e7a9f772094dee9d34202ae8acce4687875580" + integrity sha1-wuep93IJTe6dNCAq6KzORoeHVYA= + +levn@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" + integrity sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ== + dependencies: + prelude-ls "^1.2.1" + type-check "~0.4.0" + +liftoff@^2.1.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-2.5.0.tgz#2009291bb31cea861bbf10a7c15a28caf75c31ec" + integrity sha1-IAkpG7Mc6oYbvxCnwVooyvdcMew= + dependencies: + extend "^3.0.0" + findup-sync "^2.0.0" + fined "^1.0.1" + flagged-respawn "^1.0.0" + is-plain-object "^2.0.4" + object.map "^1.0.0" + rechoir "^0.6.2" + resolve "^1.1.7" + +liftoff@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/liftoff/-/liftoff-3.1.0.tgz#c9ba6081f908670607ee79062d700df062c52ed3" + integrity sha512-DlIPlJUkCV0Ips2zf2pJP0unEoT1kwYhiiPUGF3s/jtxTCjziNLoiVVh+jqWOWeFi6mmwQ5fNxvAUyPad4Dfog== + dependencies: + extend "^3.0.0" + findup-sync "^3.0.0" + fined "^1.0.1" + flagged-respawn "^1.0.0" + is-plain-object "^2.0.4" + object.map "^1.0.0" + rechoir "^0.6.2" + resolve "^1.1.7" + +lint-templates@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/lint-templates/-/lint-templates-0.1.2.tgz#29d9e8312b7f03d899fbad789f959256b0fdc8db" + integrity sha1-KdnoMSt/A9iZ+614n5WSVrD9yNs= + dependencies: + chalk "^1.0.0" + get-value "^1.1.4" + has-value "^0.2.0" + log-symbols "^1.0.2" + rethrow "^0.1.0" + set-value "^0.2.0" + +list-item@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/list-item/-/list-item-0.1.2.tgz#4c2dbacfdc4d2e7c22adec314ce506e8d4b3dcd3" + integrity sha1-TC26z9xNLnwirewxTOUG6NSz3NM= + dependencies: + expand-range "^1.8.1" + is-number "^1.1.0" + repeat-string "^1.5.0" + +list-item@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/list-item/-/list-item-1.1.1.tgz#0c65d00e287cb663ccb3cb3849a77e89ec268a56" + integrity sha1-DGXQDih8tmPMs8s4Sad+iewmilY= + dependencies: + expand-range "^1.8.1" + extend-shallow "^2.0.1" + is-number "^2.1.0" + repeat-string "^1.5.2" + +load-helpers@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/load-helpers/-/load-helpers-0.3.1.tgz#99a8ba07362901827c8e62c95b0b0b1fe9830549" + integrity sha1-mai6BzYpAYJ8jmLJWwsLH+mDBUk= + dependencies: + component-emitter "^1.2.1" + extend-shallow "^2.0.1" + is-valid-glob "^0.3.0" + lazy-cache "^2.0.1" + matched "^0.4.3" + resolve-dir "^0.1.0" + +load-json-file@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-1.1.0.tgz#956905708d58b4bab4c2261b04f59f31c99374c0" + integrity sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + pinkie-promise "^2.0.0" + strip-bom "^2.0.0" + +load-pkg@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/load-pkg/-/load-pkg-1.3.0.tgz#756dcfb4589b9167134ed9be70c23d28ad52853f" + integrity sha1-dW3PtFibkWcTTtm+cMI9KK1ShT8= + dependencies: + cwd "^0.7.0" + +load-pkg@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/load-pkg/-/load-pkg-3.0.1.tgz#9230b37ec04e569003060bc58951e3ed508d594f" + integrity sha1-kjCzfsBOVpADBgvFiVHj7VCNWU8= + dependencies: + find-pkg "^0.1.0" + +load-templates@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/load-templates/-/load-templates-0.7.3.tgz#0a6de07f1a7962556b9af6bf29845209da9bc4ef" + integrity sha1-Cm3gfxp5YlVrmva/KYRSCdqbxO8= + dependencies: + debug "^2.1.3" + has-any "^0.1.1" + has-any-deep "^0.3.2" + is-glob "^1.1.3" + kind-of "^1.1.0" + lodash "^3.7.0" + map-files "^0.7.4" + omit-empty "^0.3.1" + option-cache "^1.3.0" + relative "^3.0.0" + +loader-cache@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/loader-cache/-/loader-cache-0.4.0.tgz#744bf5c0e37f34fe4553eef428bc248926e20abb" + integrity sha1-dEv1wON/NP5FU+70KLwkiSbiCrs= + dependencies: + async "^0.9.0" + bluebird "^2.3.11" + event-stream "^3.1.7" + kind-of "^0.1.2" + +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + +lodash._arraycopy@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._arraycopy/-/lodash._arraycopy-3.0.0.tgz#76e7b7c1f1fb92547374878a562ed06a3e50f6e1" + integrity sha1-due3wfH7klRzdIeKVi7Qaj5Q9uE= + +lodash._arrayeach@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._arrayeach/-/lodash._arrayeach-3.0.0.tgz#bab156b2a90d3f1bbd5c653403349e5e5933ef9e" + integrity sha1-urFWsqkNPxu9XGU0AzSeXlkz754= + +lodash._baseassign@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._baseassign/-/lodash._baseassign-3.2.0.tgz#8c38a099500f215ad09e59f1722fd0c52bfe0a4e" + integrity sha1-jDigmVAPIVrQnlnxci/QxSv+Ck4= + dependencies: + lodash._basecopy "^3.0.0" + lodash.keys "^3.0.0" + +lodash._baseclone@^3.0.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/lodash._baseclone/-/lodash._baseclone-3.3.0.tgz#303519bf6393fe7e42f34d8b630ef7794e3542b7" + integrity sha1-MDUZv2OT/n5C802LYw73eU41Qrc= + dependencies: + lodash._arraycopy "^3.0.0" + lodash._arrayeach "^3.0.0" + lodash._baseassign "^3.0.0" + lodash._basefor "^3.0.0" + lodash.isarray "^3.0.0" + lodash.keys "^3.0.0" + +lodash._basecopy@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basecopy/-/lodash._basecopy-3.0.1.tgz#8da0e6a876cf344c0ad8a54882111dd3c5c7ca36" + integrity sha1-jaDmqHbPNEwK2KVIghEd08XHyjY= + +lodash._basefor@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/lodash._basefor/-/lodash._basefor-3.0.3.tgz#7550b4e9218ef09fad24343b612021c79b4c20c2" + integrity sha1-dVC06SGO8J+tJDQ7YSAhx5tMIMI= + +lodash._basetostring@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._basetostring/-/lodash._basetostring-3.0.1.tgz#d1861d877f824a52f669832dcaf3ee15566a07d5" + integrity sha1-0YYdh3+CSlL2aYMtyvPuFVZqB9U= + +lodash._basevalues@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._basevalues/-/lodash._basevalues-3.0.0.tgz#5b775762802bde3d3297503e26300820fdf661b7" + integrity sha1-W3dXYoAr3j0yl1A+JjAIIP32Ybc= + +lodash._bindcallback@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._bindcallback/-/lodash._bindcallback-3.0.1.tgz#e531c27644cf8b57a99e17ed95b35c748789392e" + integrity sha1-5THCdkTPi1epnhftlbNcdIeJOS4= + +lodash._createwrapper@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash._createwrapper/-/lodash._createwrapper-3.2.0.tgz#df453e664163217b895a454065af1c47a0ea3c4d" + integrity sha1-30U+ZkFjIXuJWkVAZa8cR6DqPE0= + dependencies: + lodash._root "^3.0.0" + +lodash._getnative@^3.0.0: + version "3.9.1" + resolved "https://registry.yarnpkg.com/lodash._getnative/-/lodash._getnative-3.9.1.tgz#570bc7dede46d61cdcde687d65d3eecbaa3aaff5" + integrity sha1-VwvH3t5G1hzc3mh9ZdPuy6o6r/U= + +lodash._isiterateecall@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/lodash._isiterateecall/-/lodash._isiterateecall-3.0.9.tgz#5203ad7ba425fae842460e696db9cf3e6aac057c" + integrity sha1-UgOte6Ql+uhCRg5pbbnPPmqsBXw= + +lodash._reescape@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reescape/-/lodash._reescape-3.0.0.tgz#2b1d6f5dfe07c8a355753e5f27fac7f1cde1616a" + integrity sha1-Kx1vXf4HyKNVdT5fJ/rH8c3hYWo= + +lodash._reevaluate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reevaluate/-/lodash._reevaluate-3.0.0.tgz#58bc74c40664953ae0b124d806996daca431e2ed" + integrity sha1-WLx0xAZklTrgsSTYBpltrKQx4u0= + +lodash._reinterpolate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz#0ccf2d89166af03b3663c796538b75ac6e114d9d" + integrity sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0= + +lodash._replaceholders@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/lodash._replaceholders/-/lodash._replaceholders-3.0.0.tgz#8abbb7126c431f7ed744f7baaf39f08bc9bd9d58" + integrity sha1-iru3EmxDH37XRPe6rznwi8m9nVg= + +lodash._root@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash._root/-/lodash._root-3.0.1.tgz#fba1c4524c19ee9a5f8136b4609f017cf4ded692" + integrity sha1-+6HEUkwZ7ppfgTa0YJ8BfPTe1pI= + +lodash.bind@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.bind/-/lodash.bind-3.1.0.tgz#f95f48638d7d8bbb5854f908266527999fbfa4bb" + integrity sha1-+V9IY419i7tYVPkIJmUnmZ+/pLs= + dependencies: + lodash._createwrapper "^3.0.0" + lodash._replaceholders "^3.0.0" + lodash.restparam "^3.0.0" + +lodash.clonedeep@3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-3.0.1.tgz#6261ef88110168eb842b0d9e4c22bb1d09bfad5b" + integrity sha1-YmHviBEBaOuEKw2eTCK7HQm/rVs= + dependencies: + lodash._baseclone "^3.0.0" + lodash._bindcallback "^3.0.0" + +lodash.clonedeep@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef" + integrity sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8= + +lodash.escape@^3.0.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/lodash.escape/-/lodash.escape-3.2.0.tgz#995ee0dc18c1b48cc92effae71a10aab5b487698" + integrity sha1-mV7g3BjBtIzJLv+ucaEKq1tIdpg= + dependencies: + lodash._root "^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 sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ== + +lodash.isarguments@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/lodash.isarguments/-/lodash.isarguments-3.1.0.tgz#2f573d85c6a24289ff00663b491c1d338ff3458a" + integrity sha1-L1c9hcaiQon/AGY7SRwdM4/zRYo= + +lodash.isarray@^3.0.0: + version "3.0.4" + resolved "https://registry.yarnpkg.com/lodash.isarray/-/lodash.isarray-3.0.4.tgz#79e4eb88c36a8122af86f844aa9bcd851b5fbb55" + integrity sha1-eeTriMNqgSKvhvhEqpvNhRtfu1U= + +lodash.keys@^3.0.0: + version "3.1.2" + resolved "https://registry.yarnpkg.com/lodash.keys/-/lodash.keys-3.1.2.tgz#4dbc0472b156be50a0b286855d1bd0b0c656098a" + integrity sha1-TbwEcrFWvlCgsoaFXRvQsMZWCYo= + dependencies: + lodash._getnative "^3.0.0" + lodash.isarguments "^3.0.0" + lodash.isarray "^3.0.0" + +lodash.merge@^4.6.2: + version "4.6.2" + resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" + integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== + +lodash.restparam@^3.0.0: + version "3.6.1" + resolved "https://registry.yarnpkg.com/lodash.restparam/-/lodash.restparam-3.6.1.tgz#936a4e309ef330a7645ed4145986c85ae5b20805" + integrity sha1-k2pOMJ7zMKdkXtQUWYbIWuWyCAU= + +lodash.template@^3.0.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-3.6.2.tgz#f8cdecc6169a255be9098ae8b0c53d378931d14f" + integrity sha1-+M3sxhaaJVvpCYrosMU9N4kx0U8= + dependencies: + lodash._basecopy "^3.0.0" + lodash._basetostring "^3.0.0" + lodash._basevalues "^3.0.0" + lodash._isiterateecall "^3.0.0" + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + lodash.keys "^3.0.0" + lodash.restparam "^3.0.0" + lodash.templatesettings "^3.0.0" + +lodash.template@^4.4.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.template/-/lodash.template-4.5.0.tgz#f976195cf3f347d0d5f52483569fe8031ccce8ab" + integrity sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A== + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.templatesettings "^4.0.0" + +lodash.templatesettings@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-3.1.1.tgz#fb307844753b66b9f1afa54e262c745307dba8e5" + integrity sha1-+zB4RHU7Zrnxr6VOJix0UwfbqOU= + dependencies: + lodash._reinterpolate "^3.0.0" + lodash.escape "^3.0.0" + +lodash.templatesettings@^4.0.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz#e481310f049d3cf6d47e912ad09313b154f0fb33" + integrity sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ== + dependencies: + lodash._reinterpolate "^3.0.0" + +lodash.truncate@^4.4.2: + version "4.4.2" + resolved "https://registry.yarnpkg.com/lodash.truncate/-/lodash.truncate-4.4.2.tgz#5a350da0b1113b837ecfffd5812cbe58d6eae193" + integrity sha1-WjUNoLERO4N+z//VgSy+WNbq4ZM= + +lodash@^3.10.1, lodash@^3.5.0, lodash@^3.6.0, lodash@^3.7.0: + version "3.10.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" + integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= + +lodash@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" + integrity sha1-j1dWDIO1n8JwvT1WG2kAQ0MOJVE= + +lodash@~2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-2.2.1.tgz#ca935fd14ab3c0c872abacf198b9cda501440867" + integrity sha1-ypNf0UqzwMhyq6zxmLnNpQFECGc= + +log-ok@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/log-ok/-/log-ok-0.1.1.tgz#bea3dd36acd0b8a7240d78736b5b97c65444a334" + integrity sha1-vqPdNqzQuKckDXhza1uXxlREozQ= + dependencies: + ansi-green "^0.1.1" + success-symbol "^0.1.0" + +log-symbols@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" + integrity sha1-N2/3tY6jCGoPCfrMdGF+ylAeGhg= + dependencies: + chalk "^1.0.0" + +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" + +log-symbols@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.1.0.tgz#3fbdbb95b4683ac9fc785111e792e558d4abd503" + integrity sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg== + dependencies: + chalk "^4.1.0" + is-unicode-supported "^0.1.0" + +log-utils@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/log-utils/-/log-utils-0.2.1.tgz#a4c217a0dd9a50515d9b920206091ab3d4e031cf" + integrity sha1-pMIXoN2aUFFdm5ICBgkas9TgMc8= + dependencies: + ansi-colors "^0.2.0" + error-symbol "^0.1.0" + info-symbol "^0.1.0" + log-ok "^0.1.1" + success-symbol "^0.1.0" + time-stamp "^1.0.1" + warning-symbol "^0.1.0" + +log-utils@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/log-utils/-/log-utils-0.3.0.tgz#3fc65086e3a96b8af112cf9d28cdf15ab59fe09f" + integrity sha512-/phCXtyt1ZfaEHYem4OlFc+zjmPedbmoMh26HmE/ypZHTYLfdXhJm7g3kNCt8xSFhyozUZaEYnbYDTCnZj83GA== + dependencies: + ansi-colors "^1.1.0" + error-symbol "^0.1.0" + info-symbol "^0.1.0" + log-ok "^0.1.1" + success-symbol "^0.1.0" + time-stamp "^1.0.1" + warning-symbol "^0.1.0" + +logging-helpers@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/logging-helpers/-/logging-helpers-0.4.0.tgz#00e6d5316c23767ec12e1200e4f12c5e033e7eb0" + integrity sha1-AObVMWwjdn7BLhIA5PEsXgM+frA= + dependencies: + chalk "^1.0.0" + +longest-value@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/longest-value/-/longest-value-0.2.0.tgz#b77832b0ea5fa5a2c4a1bea9e08d7d15be697b5b" + integrity sha1-t3gysOpfpaLEob6p4I19Fb5pe1s= + dependencies: + longest "^1.0.0" + +longest@^1.0.0, longest@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-1.0.1.tgz#30a0b2da38f73770e8294a0d22e6625ed77d0097" + integrity sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc= + +longest@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/longest/-/longest-2.0.1.tgz#781e183296aa94f6d4d916dc335d0d17aefa23f8" + integrity sha1-eB4YMpaqlPbU2RbcM10NF676I/g= + +look-up@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/look-up/-/look-up-0.7.2.tgz#d6242e85eb1cbd8a10f6ed0faf75cc51f4930f86" + integrity sha1-1iQuhescvYoQ9u0Pr3XMUfSTD4Y= + dependencies: + expand-tilde "^1.2.0" + is-glob "^2.0.0" + micromatch "^2.2.0" + +look-up@^0.8.1: + version "0.8.3" + resolved "https://registry.yarnpkg.com/look-up/-/look-up-0.8.3.tgz#04238dd4066f0cb6905967f4727c069a758de8d7" + integrity sha1-BCON1AZvDLaQWWf0cnwGmnWN6Nc= + dependencies: + is-glob "^2.0.1" + lazy-cache "^1.0.3" + micromatch "^2.3.7" + normalize-path "^2.0.1" + resolve-dir "^0.1.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= + +lru-cache@2: + version "2.7.3" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-2.7.3.tgz#6d4524e8b955f95d4f5b58851ce21dd72fb4e952" + integrity sha1-bUUk6LlV+V1PW1iFHOId1y+06VI= + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" + +make-iterator@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-0.1.1.tgz#873d27b8198a465a81483b6f5d16da4e863ecf5b" + integrity sha1-hz0nuBmKRlqBSDtvXRbaToY+z1s= + dependencies: + for-own "^0.1.1" + +make-iterator@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-0.3.1.tgz#e1c6a532b546a27f13948a06f82509b33db98112" + integrity sha1-4calMrVGon8TlIoG+CUJsz25gRI= + dependencies: + kind-of "^3.1.0" + +make-iterator@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/make-iterator/-/make-iterator-1.0.1.tgz#29b33f312aa8f547c4a5e490f56afcec99133ad6" + integrity sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw== + dependencies: + kind-of "^6.0.2" + +map-cache@^0.2.0, map-cache@^0.2.1, map-cache@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf" + integrity sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8= + +map-files@^0.7.4: + version "0.7.6" + resolved "https://registry.yarnpkg.com/map-files/-/map-files-0.7.6.tgz#8c4b9935a23aab0755eb0598a664796f23babd54" + integrity sha1-jEuZNaI6qwdV6wWYpmR5byO6vVQ= + dependencies: + lazy-cache "^1.0.4" + matched "^0.4.1" + micromatch "^2.3.8" + +map-schema@^0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/map-schema/-/map-schema-0.2.4.tgz#c19551834fc3c07a04597b7a5afb44a475af95b4" + integrity sha1-wZVRg0/DwHoEWXt6WvtEpHWvlbQ= + dependencies: + arr-union "^3.1.0" + collection-visit "^0.2.3" + component-emitter "^1.2.1" + debug "^2.6.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + get-value "^2.0.6" + is-primitive "^2.0.0" + kind-of "^3.1.0" + lazy-cache "^2.0.2" + log-utils "^0.2.1" + longest "^1.0.1" + mixin-deep "^1.1.3" + object.omit "^2.0.1" + object.pick "^1.2.0" + omit-empty "^0.4.1" + pad-right "^0.2.2" + set-value "^0.4.0" + sort-object-arrays "^0.1.1" + union-value "^0.2.3" + +map-stream@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/map-stream/-/map-stream-0.0.7.tgz#8a1f07896d82b10926bd3744a2420009f88974a8" + integrity sha1-ih8HiW2CsQkmvTdEokIACfiJdKg= + +map-visit@^0.1.0, map-visit@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-0.1.5.tgz#dbe43927ce5525b80dfc1573a44d68c51f26816b" + integrity sha1-2+Q5J85VJbgN/BVzpE1oxR8mgWs= + dependencies: + lazy-cache "^2.0.1" + object-visit "^0.3.4" + +map-visit@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f" + integrity sha1-7Nyo8TFE5mDxtb1B8S80edmN+48= + dependencies: + object-visit "^1.0.0" + +markdown-link@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/markdown-link/-/markdown-link-0.1.1.tgz#32c5c65199a6457316322d1e4229d13407c8c7cf" + integrity sha1-MsXGUZmmRXMWMi0eQinRNAfIx88= + +markdown-reference@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/markdown-reference/-/markdown-reference-0.1.0.tgz#17cc5ef955240759709f136ddd6ee322c0ccd4a7" + integrity sha1-F8xe+VUkB1lwnxNt3W7jIsDM1Kc= + +markdown-toc@^0.11.1, markdown-toc@^0.11.3, markdown-toc@^0.11.5: + version "0.11.9" + resolved "https://registry.yarnpkg.com/markdown-toc/-/markdown-toc-0.11.9.tgz#961f34c1b2c31d282188eeefd4f907c8c07a6d4c" + integrity sha1-lh80wbLDHSghiO7v1PkHyMB6bUw= + dependencies: + concat-stream "^1.5.1" + gray-matter "^2.0.2" + lazy-cache "^1.0.2" + markdown-link "^0.1.1" + minimist "^1.2.0" + mixin-deep "^1.1.3" + object.pick "^1.1.1" + remarkable "^1.6.1" + repeat-string "^1.5.2" + +markdown-toc@^1.0.3, markdown-toc@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/markdown-toc/-/markdown-toc-1.2.0.tgz#44a15606844490314afc0444483f9e7b1122c339" + integrity sha512-eOsq7EGd3asV0oBfmyqngeEIhrbkc7XVP63OwcJBIhH2EpG2PzFcbZdhy1jutXSlRBBVMNXHvMtSr5LAxSUvUg== + dependencies: + concat-stream "^1.5.2" + diacritics-map "^0.1.0" + gray-matter "^2.1.0" + lazy-cache "^2.0.2" + list-item "^1.1.1" + markdown-link "^0.1.1" + minimist "^1.2.0" + mixin-deep "^1.1.3" + object.pick "^1.2.0" + remarkable "^1.7.1" + repeat-string "^1.6.1" + strip-color "^0.1.0" + +markdown-utils@^0.6.0, markdown-utils@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/markdown-utils/-/markdown-utils-0.6.1.tgz#0a09e896a3987313518196362f45a5dfc30a68c4" + integrity sha1-CgnolqOYcxNRgZY2L0Wl38MKaMQ= + dependencies: + array-slice "^0.2.2" + is-number "^1.1.0" + list-item "^0.1.2" + +markdown-utils@^0.7.0, markdown-utils@^0.7.1, markdown-utils@^0.7.3: + version "0.7.3" + resolved "https://registry.yarnpkg.com/markdown-utils/-/markdown-utils-0.7.3.tgz#4c583a31e251d69b313aceb3802a4f5d1b0f1e76" + integrity sha1-TFg6MeJR1psxOs6zgCpPXRsPHnY= + dependencies: + array-slice "^0.2.3" + is-number "^2.1.0" + list-item "^1.1.1" + to-gfm-code-block "^0.1.1" + +match-file@^0.2.1: + version "0.2.2" + resolved "https://registry.yarnpkg.com/match-file/-/match-file-0.2.2.tgz#26e6bcf1b390a661f6126faf8ac501e33eccfae9" + integrity sha1-Jua88bOQpmH2Em+visUB4z7M+uk= + dependencies: + is-glob "^3.1.0" + isobject "^3.0.0" + micromatch "^2.3.11" + +match-file@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/match-file/-/match-file-1.0.0.tgz#3496169751607b22f91a0153f879ce6deae9a968" + integrity sha512-qNi54X82qWGA4xUmTrg1DJcYnFRoBpOEear3VT0OBgBM+NIj0yfrcFYV1GZAk7wb06TdnW1SUm8OMPT8yJTgCg== + dependencies: + is-glob "^4.0.0" + micromatch "^3.1.5" + path-ends-with "^1.1.0" + +matchdep@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/matchdep/-/matchdep-2.0.0.tgz#c6f34834a0d8dbc3b37c27ee8bbcb27c7775582e" + integrity sha1-xvNINKDY28OzfCfui7yyfHd1WC4= + dependencies: + findup-sync "^2.0.0" + micromatch "^3.0.4" + resolve "^1.4.0" + stack-trace "0.0.10" + +matched@^0.4.1, matched@^0.4.3, matched@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/matched/-/matched-0.4.4.tgz#56d7b7eb18033f0cf9bc52eb2090fac7dc1e89fa" + integrity sha1-Vte36xgDPwz5vFLrIJD6x9weifo= + dependencies: + arr-union "^3.1.0" + async-array-reduce "^0.2.0" + extend-shallow "^2.0.1" + fs-exists-sync "^0.1.0" + glob "^7.0.5" + has-glob "^0.1.1" + is-valid-glob "^0.3.0" + lazy-cache "^2.0.1" + resolve-dir "^0.1.0" + +matched@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/matched/-/matched-1.0.2.tgz#1d95d77dd5f1b5075a9e94acde5462ffd85f317a" + integrity sha512-7ivM1jFZVTOOS77QsR+TtYHH0ecdLclMkqbf5qiJdX2RorqfhsL65QHySPZgDE0ZjHoh+mQUNHTanNXIlzXd0Q== + dependencies: + arr-union "^3.1.0" + async-array-reduce "^0.2.1" + glob "^7.1.2" + has-glob "^1.0.0" + is-valid-glob "^1.0.0" + resolve-dir "^1.0.0" + +math-random@^1.0.1: + version "1.0.4" + resolved "https://registry.yarnpkg.com/math-random/-/math-random-1.0.4.tgz#5dd6943c938548267016d4e34f057583080c514c" + integrity sha512-rUxjysqif/BZQH2yhd5Aaq7vXMSx9NdEsQcyA07uEzIvxgI7zIr33gGsh+RU0/XjmQpCW7RsVof1vlkvQVCK5A== + +merge-deep@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/merge-deep/-/merge-deep-1.0.3.tgz#1d5be72ab56ede176a55c52158b94055851c9efa" + integrity sha1-HVvnKrVu3hdqVcUhWLlAVYUcnvo= + dependencies: + clone-deep "^0.1.1" + is-plain-object "^2.0.0" + +merge-stream@^0.1.7: + version "0.1.8" + resolved "https://registry.yarnpkg.com/merge-stream/-/merge-stream-0.1.8.tgz#48a07b3b4a121d74a3edbfdcdb4b08adbf0240b1" + integrity sha1-SKB7O0oSHXSj7b/c20sIrb8CQLE= + dependencies: + through2 "^0.6.1" + +merge-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/merge-value/-/merge-value-1.0.0.tgz#d28f8d41c0b37426e032d1059a0d0343302de502" + integrity sha512-fJMmvat4NeKz63Uv9iHWcPDjCWcCkoiRoajRTEO8hlhUC6rwaHg0QCF9hBOTjZmm4JuglPckPSTtcuJL5kp0TQ== + dependencies: + get-value "^2.0.6" + is-extendable "^1.0.0" + mixin-deep "^1.2.0" + set-value "^2.0.0" + +micromatch@^2.1.0, micromatch@^2.1.5, micromatch@^2.2.0, micromatch@^2.3.11, micromatch@^2.3.7, micromatch@^2.3.8: + version "2.3.11" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565" + integrity sha1-hmd8l9FyCzY0MdBNDRUpO9OMFWU= + dependencies: + arr-diff "^2.0.0" + array-unique "^0.2.1" + braces "^1.8.2" + expand-brackets "^0.1.4" + extglob "^0.3.1" + filename-regex "^2.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.1" + kind-of "^3.0.2" + normalize-path "^2.0.1" + object.omit "^2.0.0" + parse-glob "^3.0.4" + regex-cache "^0.4.2" + +micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.5: + version "3.1.10" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-3.1.10.tgz#70859bc95c9840952f359a068a3fc49f9ecfac23" + integrity sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + braces "^2.3.1" + define-property "^2.0.2" + extend-shallow "^3.0.2" + extglob "^2.0.4" + fragment-cache "^0.2.1" + kind-of "^6.0.2" + nanomatch "^1.2.9" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.2" + +micromatch@^4.0.5: + version "4.0.5" + resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" + integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== + dependencies: + braces "^3.0.2" + picomatch "^2.3.1" + +middleware-rename-file@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/middleware-rename-file/-/middleware-rename-file-0.1.1.tgz#4788a5212d496bd5db9da93d53e7d61e8806763f" + integrity sha1-R4ilIS1Ja9Xbnak9U+fWHogGdj8= + dependencies: + extend-shallow "^2.0.1" + is-valid-app "^0.2.0" + isobject "^2.1.0" + +middleware-utils@^0.1.2, middleware-utils@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/middleware-utils/-/middleware-utils-0.1.4.tgz#f57a2331369411f93b8a4232fb9e33d3b6336519" + integrity sha1-9XojMTaUEfk7ikIy+54z07YzZRk= + dependencies: + ansi-red "^0.1.1" + ansi-yellow "^0.1.1" + async "^0.9.0" + +middleware-utils@^0.3.0: + version "0.3.1" + resolved "https://registry.yarnpkg.com/middleware-utils/-/middleware-utils-0.3.1.tgz#463a0bacb199d47d20e314721683051f0e1f0316" + integrity sha1-RjoLrLGZ1H0g4xRyFoMFHw4fAxY= + dependencies: + async-array-reduce "^0.2.0" + async-each "^1.0.0" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +mimic-response@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mimic-response/-/mimic-response-1.0.1.tgz#4923538878eef42063cb8a3e3b0798781487ab1b" + integrity sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ== + +min-request@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/min-request/-/min-request-1.4.1.tgz#17634cfb433600d3db3800c697bb696eef8589d2" + integrity sha1-F2NM+0M2ANPbOADGl7tpbu+FidI= + +"minimatch@2 || 3", 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" + +minimatch@^2.0.1: + version "2.0.10" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-2.0.10.tgz#8d087c39c6b38c001b97fca7ce6d0e1e80afbac7" + integrity sha1-jQh8OcazjAAbl/ynzm0OHoCvusc= + dependencies: + brace-expansion "^1.0.0" + +minimatch@^5.0.1, minimatch@^5.1.6: + version "5.1.6" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-5.1.6.tgz#1cfcb8cf5522ea69952cd2af95ae09477f122a96" + integrity sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g== + dependencies: + brace-expansion "^2.0.1" + +minimatch@~0.2.11: + version "0.2.14" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-0.2.14.tgz#c74e780574f63c6f9a090e90efbe6ef53a6a756a" + integrity sha1-x054BXT2PG+aCQ6Q775u9TpqdWo= + dependencies: + lru-cache "2" + sigmund "~1.0.0" + +minimist@^1.1.0, minimist@^1.1.3, minimist@^1.2.0, minimist@^1.2.5: + version "1.2.5" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" + integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== + +mixin-deep@^1.0.1, mixin-deep@^1.1.0, mixin-deep@^1.1.1, mixin-deep@^1.1.3, mixin-deep@^1.2.0, mixin-deep@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566" + integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA== + dependencies: + for-in "^1.0.2" + is-extendable "^1.0.1" + +mixin-deep@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-deep/-/mixin-deep-2.0.1.tgz#9a6946bef4a368401b784970ae3caaaa6bab02fa" + integrity sha512-imbHQNRglyaplMmjBLL3V5R6Bfq5oM+ivds3SKgc6oRtzErEnBUUc5No11Z2pilkUvl42gJvi285xTNswcKCMA== + +mixin-object@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-0.1.1.tgz#18b48342c9094e8b5559b4fb225cfa0c0959f9f2" + integrity sha1-GLSDQskJTotVWbT7Ilz6DAlZ+fI= + dependencies: + for-own "^0.1.1" + +mixin-object@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/mixin-object/-/mixin-object-2.0.1.tgz#4fb949441dab182540f1fe035ba60e1947a5e57e" + integrity sha1-T7lJRB2rGCVA8f4DW6YOGUel5X4= + dependencies: + for-in "^0.1.3" + is-extendable "^0.1.1" + +mkdirp@^0.5.0, mkdirp@^0.5.1: + version "0.5.5" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.5.tgz#d91cefd62d1436ca0f41620e251288d420099def" + integrity sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ== + dependencies: + minimist "^1.2.5" + +mocha@^10.8.2: + version "10.8.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-10.8.2.tgz#8d8342d016ed411b12a429eb731b825f961afb96" + integrity sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg== + dependencies: + ansi-colors "^4.1.3" + browser-stdout "^1.3.1" + chokidar "^3.5.3" + debug "^4.3.5" + diff "^5.2.0" + escape-string-regexp "^4.0.0" + find-up "^5.0.0" + glob "^8.1.0" + he "^1.2.0" + js-yaml "^4.1.0" + log-symbols "^4.1.0" + minimatch "^5.1.6" + ms "^2.1.3" + serialize-javascript "^6.0.2" + strip-json-comments "^3.1.1" + supports-color "^8.1.1" + workerpool "^6.5.1" + yargs "^16.2.0" + yargs-parser "^20.2.9" + yargs-unparser "^2.0.0" + +moment@^2.14.1, moment@^2.17.1, moment@^2.18.1: + version "2.29.1" + resolved "https://registry.yarnpkg.com/moment/-/moment-2.29.1.tgz#b2be769fa31940be9eeea6469c075e35006fa3d3" + integrity sha512-kHmoybcPV8Sqy59DwNDY3Jefr64lK/by/da0ViFcuA4DH0vQg5Q6Ze5VimxkfQNSC+Mls/Kx53s7TjP1RhFEDQ== + +ms@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" + integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= + +ms@2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +ms@^2.1.1, ms@^2.1.3: + version "2.1.3" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2" + integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA== + +multipipe@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/multipipe/-/multipipe-0.1.2.tgz#2a8f2ddf70eed564dff2d57f1e1a137d9f05078b" + integrity sha1-Ko8t33Du1WTf8tV/HhoTfZ8FB4s= + dependencies: + duplexer2 "0.0.2" + +mute-stdout@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/mute-stdout/-/mute-stdout-1.0.1.tgz#acb0300eb4de23a7ddeec014e3e96044b3472331" + integrity sha512-kDcwXR4PS7caBpuRYYBUz9iVixUk3anO3f5OYFiIPwK/20vCzKCHyKoulbiDY1S53zD2bxUpxN/IJ+TnXjfvxg== + +namify@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/namify/-/namify-0.1.3.tgz#fa8bb14d5893443a83a697ead0c46864ff41bdfa" + integrity sha1-+ouxTViTRDqDppfq0MRoZP9Bvfo= + dependencies: + reserved "^0.1.0" + +nan@^2.12.1: + version "2.14.2" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" + integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== + +nanomatch@^1.2.9: + version "1.2.13" + resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" + integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA== + dependencies: + arr-diff "^4.0.0" + array-unique "^0.3.2" + define-property "^2.0.2" + extend-shallow "^3.0.2" + fragment-cache "^0.2.1" + is-windows "^1.0.2" + kind-of "^6.0.2" + object.pick "^1.3.0" + regex-not "^1.0.0" + snapdragon "^0.8.1" + to-regex "^3.0.1" + +natives@^1.1.3: + version "1.1.6" + resolved "https://registry.yarnpkg.com/natives/-/natives-1.1.6.tgz#a603b4a498ab77173612b9ea1acdec4d980f00bb" + integrity sha512-6+TDFewD4yxY14ptjKaS63GVdtKiES1pTPyxn9Jb0rBqPMZ7VcCiooEhPNsr+mqHtMGxa/5c/HhcC4uPEUw/nA== + +natural-compare@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" + integrity sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc= + +neo-async@^2.6.0: + version "2.6.2" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" + integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== + +next-tick@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/next-tick/-/next-tick-0.2.2.tgz#75da4a927ee5887e39065880065b7336413b310d" + integrity sha1-ddpKkn7liH45BliABltzNkE7MQ0= + +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@^5.1.5: + version "5.1.7" + resolved "https://registry.yarnpkg.com/nise/-/nise-5.1.7.tgz#03ca96539efb306612eb60a8c5d6beeb208e27e5" + integrity sha512-wWtNUhkT7k58uvWTB/Gy26eA/EJKtPZFVAhEilN5UYVmmGRYOURbejRUyKm0Uu9XVEW7K5nBOZfR8VMB4QR2RQ== + dependencies: + "@sinonjs/commons" "^3.0.0" + "@sinonjs/fake-timers" "^11.2.2" + "@sinonjs/text-encoding" "^0.7.2" + just-extend "^6.2.0" + path-to-regexp "^6.2.1" + +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" + +noncharacters@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/noncharacters/-/noncharacters-1.1.0.tgz#af33df30fd50ed3c53cd202258f25ada90b540d2" + integrity sha1-rzPfMP1Q7TxTzSAiWPJa2pC1QNI= + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +normalize-path@^2.0.0, normalize-path@^2.0.1, normalize-path@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9" + integrity sha1-GrKLVW4Zg2Oowab35vogE3/mrtk= + dependencies: + remove-trailing-separator "^1.0.1" + +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== + +normalize-pkg@^0.3.20: + version "0.3.20" + resolved "https://registry.yarnpkg.com/normalize-pkg/-/normalize-pkg-0.3.20.tgz#2ee737149517850d9ceff5a6234af5ef89c515a8" + integrity sha1-Luc3FJUXhQ2c7/WmI0r174nFFag= + dependencies: + arr-union "^3.1.0" + array-unique "^0.3.2" + component-emitter "^1.2.1" + export-files "^2.1.1" + extend-shallow "^2.0.1" + fs-exists-sync "^0.1.0" + get-value "^2.0.6" + kind-of "^3.0.4" + lazy-cache "^2.0.1" + map-schema "^0.2.3" + minimist "^1.2.0" + mixin-deep "^1.1.3" + omit-empty "^0.4.1" + parse-git-config "^1.0.2" + repo-utils "^0.3.6" + semver "^5.3.0" + stringify-author "^0.1.3" + write-json "^0.2.2" + +now-and-later@0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-0.0.6.tgz#18a14dc3fc495dc06cfbe028f00be16ddac4faea" + integrity sha1-GKFNw/xJXcBs++Ao8AvhbdrE+uo= + dependencies: + once "^1.3.0" + +now-and-later@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/now-and-later/-/now-and-later-2.0.1.tgz#8e579c8685764a7cc02cb680380e94f43ccb1f7c" + integrity sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ== + dependencies: + once "^1.3.2" + +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" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +object-assign@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" + integrity sha1-Q8NuXVaf+OSBbE76i+AtJpZ8GKo= + +object-assign@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-3.0.0.tgz#9bedd5ca0897949bca47e7ff408062d549f587f2" + integrity sha1-m+3VygiXlJvKR+f/QIBi1Un1h/I= + +object-copy@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c" + integrity sha1-fn2Fi3gb18mRpBupde04EnVOmYw= + dependencies: + copy-descriptor "^0.1.0" + define-property "^0.2.5" + kind-of "^3.0.3" + +object-is@^1.0.1: + version "1.1.5" + resolved "https://registry.yarnpkg.com/object-is/-/object-is-1.1.5.tgz#b9deeaa5fc7f1846a0faecdceec138e5778f53ac" + integrity sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + +object-visit@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-0.1.0.tgz#b1bb6749f228ee76e0c42f3851d28a14d233ce26" + integrity sha1-sbtnSfIo7nbgxC84UdKKFNIzziY= + dependencies: + isobject "^1.0.0" + +object-visit@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-0.3.4.tgz#ae15cf86f0b2fdd551771636448452c54c3da829" + integrity sha1-rhXPhvCy/dVRdxY2RIRSxUw9qCk= + dependencies: + isobject "^2.0.0" + +object-visit@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" + integrity sha1-95xEk68MU3e1n+OdOV5BBC3QRbs= + dependencies: + isobject "^3.0.0" + +object.assign@^4.0.4, object.assign@^4.1.0: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + +object.defaults@^1.0.0, object.defaults@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.defaults/-/object.defaults-1.1.0.tgz#3a7f868334b407dea06da16d88d5cd29e435fecf" + integrity sha1-On+GgzS0B96gbaFtiNXNKeQ1/s8= + dependencies: + array-each "^1.0.1" + array-slice "^1.0.0" + for-own "^1.0.0" + isobject "^3.0.0" + +object.map@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.map/-/object.map-1.0.1.tgz#cf83e59dc8fcc0ad5f4250e1f78b3b81bd801d37" + integrity sha1-z4Plncj8wK1fQlDh94s7gb2AHTc= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +object.omit@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-1.1.0.tgz#9d17ea16778e5057deba7752c6f55f1496829e94" + integrity sha1-nRfqFneOUFfeundSxvVfFJaCnpQ= + dependencies: + for-own "^0.1.3" + isobject "^1.0.0" + +object.omit@^2.0.0, object.omit@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa" + integrity sha1-Gpx0SCnznbuFjHbKNXmuKlTr0fo= + dependencies: + for-own "^0.1.4" + is-extendable "^0.1.1" + +object.pick@^1.1.0, object.pick@^1.1.1, object.pick@^1.2.0, object.pick@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" + integrity sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c= + dependencies: + isobject "^3.0.1" + +object.reduce@^0.1.7: + version "0.1.7" + resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-0.1.7.tgz#d180e84f72d218348af45352b55165246b95046d" + integrity sha1-0YDoT3LSGDSK9FNStVFlJGuVBG0= + dependencies: + for-own "^0.1.3" + +object.reduce@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/object.reduce/-/object.reduce-1.0.1.tgz#6fe348f2ac7fa0f95ca621226599096825bb03ad" + integrity sha1-b+NI8qx/oPlcpiEiZZkJaCW7A60= + dependencies: + for-own "^1.0.0" + make-iterator "^1.0.0" + +omit-empty@^0.3.1, omit-empty@^0.3.2, omit-empty@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/omit-empty/-/omit-empty-0.3.6.tgz#6d38405f2aa61c911eb504fe68805c566d85c316" + integrity sha1-bThAXyqmHJEetQT+aIBcVm2FwxY= + dependencies: + has-values "^0.1.4" + is-date-object "^1.0.1" + isobject "^2.0.0" + reduce-object "^0.1.3" + +omit-empty@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/omit-empty/-/omit-empty-0.4.1.tgz#294a3782f2cb20c7497c4122b6237c9dcc0c63ab" + integrity sha1-KUo3gvLLIMdJfEEitiN8ncwMY6s= + dependencies: + has-values "^0.1.4" + kind-of "^3.0.3" + reduce-object "^0.1.3" + +once@^1.3.0, once@^1.3.1, once@^1.3.2, once@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +once@~1.3.0: + version "1.3.3" + resolved "https://registry.yarnpkg.com/once/-/once-1.3.3.tgz#b2e261557ce4c314ec8304f3fa82663e4297ca20" + integrity sha1-suJhVXzkwxTsgwTz+oJmPkKXyiA= + dependencies: + wrappy "1" + +onetime@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-2.0.1.tgz#067428230fd67443b2794b22bba528b6867962d4" + integrity sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ= + dependencies: + mimic-fn "^1.0.0" + +option-cache@^1.3.0, option-cache@^1.4.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/option-cache/-/option-cache-1.5.0.tgz#965540165353ba5c5ba9459ea0a604ff7a1f4211" + integrity sha1-llVAFlNTulxbqUWeoKYE/3ofQhE= + dependencies: + component-emitter "^1.2.0" + get-value "^1.1.5" + has-value "^0.2.0" + kind-of "^2.0.0" + lazy-cache "^0.1.0" + mixin-deep "^1.1.1" + set-value "^0.2.0" + to-flags "^0.1.0" + +option-cache@^3.4.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/option-cache/-/option-cache-3.5.0.tgz#cb765155ba2a861c1109ff26e2a20eaa06612b2b" + integrity sha1-y3ZRVboqhhwRCf8m4qIOqgZhKys= + dependencies: + arr-flatten "^1.0.3" + collection-visit "^1.0.0" + component-emitter "^1.2.1" + get-value "^2.0.6" + has-value "^0.3.1" + kind-of "^3.2.2" + lazy-cache "^2.0.2" + set-value "^0.4.3" + to-object-path "^0.3.0" + +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + +ora@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/ora/-/ora-2.1.0.tgz#6caf2830eb924941861ec53a173799e008b51e5b" + integrity sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA== + dependencies: + chalk "^2.3.1" + cli-cursor "^2.1.0" + cli-spinners "^1.1.0" + log-symbols "^2.2.0" + strip-ansi "^4.0.0" + wcwidth "^1.0.1" + +ordered-read-streams@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.1.0.tgz#fd565a9af8eb4473ba69b6ed8a34352cb552f126" + integrity sha1-/VZamvjrRHO6abbtijQ1LLVS8SY= + +ordered-read-streams@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-1.0.1.tgz#77c0cb37c41525d64166d990ffad7ec6a0e1363e" + integrity sha1-d8DLN8QVJdZBZtmQ/61+xqDhNj4= + dependencies: + readable-stream "^2.0.1" + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +pad-left@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pad-left/-/pad-left-1.0.2.tgz#19e5735ea98395a26cedc6ab926ead10f3100d4c" + integrity sha1-GeVzXqmDlaJs7carkm6tEPMQDUw= + dependencies: + repeat-string "^1.3.0" + +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" + +paginationator@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/paginationator/-/paginationator-0.1.4.tgz#84786dd3850aae1f11bbb911b0c1e0851b538106" + integrity sha1-hHht04UKrh8Ru7kRsMHghRtTgQY= + +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-author@^0.2.0: + version "0.2.2" + resolved "https://registry.yarnpkg.com/parse-author/-/parse-author-0.2.2.tgz#302d1b8e4c66519d1c45dd95103d3328c4498efd" + integrity sha1-MC0bjkxmUZ0cRd2VED0zKMRJjv0= + dependencies: + author-regex "^0.2.1" + +parse-author@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-author/-/parse-author-1.0.0.tgz#5ec1590062977bd9cb3962e9173b87586437f5df" + integrity sha1-XsFZAGKXe9nLOWLpFzuHWGQ39d8= + +parse-code-context@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/parse-code-context/-/parse-code-context-0.1.3.tgz#b0cafe65c34b916434100033eb334e9d282cb461" + integrity sha1-sMr+ZcNLkWQ0EAAz6zNOnSgstGE= + +parse-comments@^0.4.1: + version "0.4.3" + resolved "https://registry.yarnpkg.com/parse-comments/-/parse-comments-0.4.3.tgz#68c955f1ec9b655a4f241b1124c79db1310d67bd" + integrity sha1-aMlV8eybZVpPJBsRJMedsTENZ70= + dependencies: + arrayify-compact "^0.1.0" + extract-comments "^0.7.3" + gfm-code-blocks "^0.2.0" + inflection "^1.7.0" + lodash "^3.6.0" + parse-code-context "^0.1.3" + +parse-copyright@^0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/parse-copyright/-/parse-copyright-0.4.0.tgz#e5a775c7423b0716b4c2742fb3fcf0546243032e" + integrity sha1-5ad1x0I7Bxa0wnQvs/zwVGJDAy4= + dependencies: + copyright-regex "^1.1.4" + +parse-filepath@^0.6.3: + version "0.6.3" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-0.6.3.tgz#38e17a73e5e4e6776bae9506fc3ccb14bc3a2b80" + integrity sha1-OOF6c+Xk5ndrrpUG/DzLFLw6K4A= + dependencies: + is-absolute "^0.2.2" + map-cache "^0.2.0" + +parse-filepath@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/parse-filepath/-/parse-filepath-1.0.2.tgz#a632127f53aaf3d15876f5872f3ffac763d6c891" + integrity sha1-pjISf1Oq89FYdvWHLz/6x2PWyJE= + dependencies: + is-absolute "^1.0.0" + map-cache "^0.2.0" + path-root "^0.1.1" + +parse-git-config@^1.0.0, parse-git-config@^1.0.2, parse-git-config@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/parse-git-config/-/parse-git-config-1.1.1.tgz#d3a9984317132f57398712bba438e129590ddf8c" + integrity sha1-06mYQxcTL1c5hxK7pDjhKVkN34w= + dependencies: + extend-shallow "^2.0.1" + fs-exists-sync "^0.1.0" + git-config-path "^1.0.1" + ini "^1.3.4" + +parse-github-url@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-0.1.1.tgz#989e513c221f5ee2b70d8441e56004845018f73c" + integrity sha1-mJ5RPCIfXuK3DYRB5WAEhFAY9zw= + +parse-github-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-0.2.1.tgz#e17335025e02c827a14198b614e73ab5b9904be8" + integrity sha1-4XM1Al4CyCehQZi2FOc6tbmQS+g= + +parse-github-url@^0.3.1, parse-github-url@^0.3.2: + version "0.3.2" + resolved "https://registry.yarnpkg.com/parse-github-url/-/parse-github-url-0.3.2.tgz#76ef01ebfe0b1e9c0f493672952cc6a4cd9cb260" + integrity sha1-du8B6/4LHpwPSTZylSzGpM2csmA= + +parse-gitignore@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/parse-gitignore/-/parse-gitignore-0.1.2.tgz#314a4454e80d3d8ab3f5a329810ceb18b4f9b8c5" + integrity sha1-MUpEVOgNPYqz9aMpgQzrGLT5uMU= + dependencies: + arr-filter "^1.1.0" + array-unique "^0.1.1" + +parse-gitignore@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/parse-gitignore/-/parse-gitignore-0.2.0.tgz#98706d09f0f93ee86348b721ffee0606bc093d74" + integrity sha1-mHBtCfD5PuhjSLch/+4GBrwJPXQ= + dependencies: + ends-with "^0.2.0" + is-glob "^2.0.0" + starts-with "^1.0.0" + +parse-glob@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c" + integrity sha1-ssN2z7EfNVE7rdFz7wu246OIORw= + dependencies: + glob-base "^0.3.0" + is-dotfile "^1.0.0" + is-extglob "^1.0.0" + is-glob "^2.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-link-header@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/parse-link-header/-/parse-link-header-0.4.1.tgz#f6bd615dc6713fd40935ce97945e4d3f522edf14" + integrity sha1-9r1hXcZxP9QJNc6XlF5NP1Iu3xQ= + dependencies: + xtend "~4.0.0" + +parse-node-version@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parse-node-version/-/parse-node-version-1.0.1.tgz#e2b5dbede00e7fa9bc363607f53327e8b073189b" + integrity sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA== + +parse-passwd@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" + integrity sha1-bVuTSkVpk7I9N/QKOC1vFmao5cY= + +parser-front-matter@^1.2.1, parser-front-matter@^1.2.5, parser-front-matter@^1.5.0, parser-front-matter@^1.6.3: + version "1.6.4" + resolved "https://registry.yarnpkg.com/parser-front-matter/-/parser-front-matter-1.6.4.tgz#71fe3288a51c7b8734163f3793f3fdc24b0a8a90" + integrity sha512-eqtUnI5+COkf1CQOYo8FmykN5Zs+5Yr60f/7GcPgQDZEEjdE/VZ4WMaMo9g37foof8h64t/TH2Uvk2Sq0fDy/g== + dependencies: + extend-shallow "^2.0.1" + file-is-binary "^1.0.0" + gray-matter "^3.0.2" + isobject "^3.0.1" + lazy-cache "^2.0.2" + mixin-deep "^1.2.0" + trim-leading-lines "^0.1.1" + +pascalcase@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14" + integrity sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ= + +path-dirname@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/path-dirname/-/path-dirname-1.0.2.tgz#cc33d24d525e099a5388c0336c6e32b9160609e0" + integrity sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA= + +path-ends-with@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-ends-with/-/path-ends-with-1.1.0.tgz#8a22b116261b9a2bdfa3249f7b5a9d5646a89bf5" + integrity sha1-iiKxFiYbmivfoySfe1qdVkaom/U= + dependencies: + ends-with "^1.0.1" + normalize-path "^2.1.1" + +path-exists@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-2.1.0.tgz#0feb6c64f0fc518d9a754dd5efb62c7022761f4b" + integrity sha1-D+tsZPD8UY2adU3V77YscCJ2H0s= + dependencies: + pinkie-promise "^2.0.0" + +path-exists@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" + integrity sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w== + +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-key@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375" + integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== + +path-parse@^1.0.6: + version "1.0.7" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.7.tgz#fbc114b60ca42b30d9daf5858e4bd68bbedb6735" + integrity sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw== + +path-root-regex@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/path-root-regex/-/path-root-regex-0.1.2.tgz#bfccdc8df5b12dc52c8b43ec38d18d72c04ba96d" + integrity sha1-v8zcjfWxLcUsi0PsONGNcsBLqW0= + +path-root@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/path-root/-/path-root-0.1.1.tgz#9a4a6814cac1c0cd73360a95f32083c8ea4745b7" + integrity sha1-mkpoFMrBwM1zNgqV8yCDyOpHRbc= + dependencies: + path-root-regex "^0.1.0" + +path-to-regexp@^1.0.3, path-to-regexp@^1.2.1: + version "1.8.0" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-1.8.0.tgz#887b3ba9d84393e87a0a0b9f4cb756198b53548a" + integrity sha512-n43JRhlUKUAlibEJhPeir1ncUID16QnEjNpwzNdO3Lm4ywrBpBZ5oLD0I6br9evr1Y9JTqwRtAh7JLoOzAQdVA== + dependencies: + isarray "0.0.1" + +path-to-regexp@^6.2.1: + version "6.2.1" + resolved "https://registry.yarnpkg.com/path-to-regexp/-/path-to-regexp-6.2.1.tgz#d54934d6798eb9e5ef14e7af7962c945906918e5" + integrity sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw== + +path-type@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-1.1.0.tgz#59c44f7ee491da704da415da5a4070ba4f8fe441" + integrity sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE= + dependencies: + graceful-fs "^4.1.2" + pify "^2.0.0" + pinkie-promise "^2.0.0" + +pause-stream@^0.0.11: + version "0.0.11" + resolved "https://registry.yarnpkg.com/pause-stream/-/pause-stream-0.0.11.tgz#fe5a34b0cbce12b5aa6a2b403ee2e73b602f1445" + integrity sha1-/lo0sMvOErWqaitAPuLnO2AvFEU= + dependencies: + through "~2.3" + +pick-from@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/pick-from/-/pick-from-0.1.0.tgz#1e8f4224799f3b77d5cdd52e2dbf8169b51a7a30" + integrity sha1-Ho9CJHmfO3fVzdUuLb+BabUaejA= + dependencies: + array-slice "^0.2.2" + object.pick "^1.1.0" + +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== + +picomatch@^2.3.1: + version "2.3.1" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" + integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== + +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + +pinkie-promise@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" + integrity sha1-ITXW36ejWMBprJsXh3YogihFD/o= + dependencies: + pinkie "^2.0.0" + +pinkie@^2.0.0: + version "2.0.4" + resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" + integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= + +pkg-homepage@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/pkg-homepage/-/pkg-homepage-0.1.1.tgz#cc8c1e0e6b5000afe8942077946b2761ca526c74" + integrity sha1-zIweDmtQAK/olCB3lGsnYcpSbHQ= + dependencies: + isobject "^2.1.0" + lazy-cache "^1.0.4" + parse-github-url "^0.3.1" + stringify-github-url "^0.1.0" + +plasma@^0.8.2: + version "0.8.4" + resolved "https://registry.yarnpkg.com/plasma/-/plasma-0.8.4.tgz#5442e33ba9bf5b6cc3556a2e855343d8cbdfa777" + integrity sha1-VELjO6m/W2zDVWouhVND2Mvfp3c= + dependencies: + extend-shallow "^1.1.4" + globby "^2.0.0" + is-glob "^2.0.0" + kind-of "^2.0.0" + mixin-deep "^1.1.1" + option-cache "^1.4.0" + relative "^3.0.0" + +plugin-error@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/plugin-error/-/plugin-error-0.1.2.tgz#3b9bb3335ccf00f425e07437e19276967da47ace" + integrity sha1-O5uzM1zPAPQl4HQ34ZJ2ln2kes4= + dependencies: + ansi-cyan "^0.1.1" + ansi-red "^0.1.1" + arr-diff "^1.0.1" + arr-union "^2.0.1" + extend-shallow "^1.1.2" + +posix-character-classes@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" + integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= + +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + +preserve@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.1.3.tgz#91fb3572a2df3ed45a93b8c986a0eab372b39723" + integrity sha1-kfs1cqLfPtRak7jJhqDqs3KzlyM= + +preserve@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b" + integrity sha1-gV7R9uvGWSb4ZbMQwHE7yzMVzks= + +pretty-hrtime@^1.0.0: + version "1.0.3" + resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" + integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= + +pretty-remarkable@^0.1.8: + version "0.1.8" + resolved "https://registry.yarnpkg.com/pretty-remarkable/-/pretty-remarkable-0.1.8.tgz#d7264b9055bea13397a9a3e85a2b4ad3fa3b8218" + integrity sha1-1yZLkFW+oTOXqaPoWitK0/o7ghg= + dependencies: + lazy-cache "^0.1.0" + list-item "^0.1.2" + markdown-utils "^0.7.0" + repeat-string "^1.5.2" + +process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +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== + +project-name@^0.2.6: + version "0.2.6" + resolved "https://registry.yarnpkg.com/project-name/-/project-name-0.2.6.tgz#3e4f781fe1ee94b0786a9bae53506376c379af69" + integrity sha1-Pk94H+HulLB4apuuU1BjdsN5r2k= + dependencies: + find-pkg "^0.1.2" + git-repo-name "^0.6.0" + minimist "^1.2.0" + +pump@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/pump/-/pump-2.0.1.tgz#12399add6e4cf7526d973cbc8b5ce2e2908b3909" + integrity sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA== + dependencies: + end-of-stream "^1.1.0" + once "^1.3.1" + +pumpify@^1.3.5: + version "1.5.1" + resolved "https://registry.yarnpkg.com/pumpify/-/pumpify-1.5.1.tgz#36513be246ab27570b1a374a5ce278bfd74370ce" + integrity sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ== + dependencies: + duplexify "^3.6.0" + inherits "^2.0.3" + pump "^2.0.0" + +punycode@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.1.1.tgz#b58b010ac40c22c5657616c8d2c2c02c7bf479ec" + integrity sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A== + +randomatic@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" + integrity sha512-TuDE5KxZ0J461RVjrJZCJc+J+zCkTb1MbH9AQUq68sMhOMcy9jLcb3BrZKgp9q9Ncltdg4QVqWrH02W2EFFVYw== + dependencies: + is-number "^4.0.0" + kind-of "^6.0.0" + math-random "^1.0.1" + +randombytes@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/randombytes/-/randombytes-2.1.0.tgz#df6f84372f0270dc65cdf6291349ab7a473d4f2a" + integrity sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ== + dependencies: + safe-buffer "^5.1.0" + +read-file@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/read-file/-/read-file-0.2.0.tgz#70c6baf8842ec7d1540f981fd0e6aed4c81bd545" + integrity sha1-cMa6+IQux9FUD5gf0Oau1Mgb1UU= + +read-pkg-up@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-1.0.1.tgz#9d63c13276c065918d57f002a57f40a1b643fb02" + integrity sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI= + dependencies: + find-up "^1.0.0" + read-pkg "^1.0.0" + +read-pkg@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-1.1.0.tgz#f5ffaa5ecd29cb31c0474bca7d756b6bb29e3f28" + integrity sha1-9f+qXs0pyzHAR0vKfXVra7KePyg= + dependencies: + load-json-file "^1.0.0" + normalize-package-data "^2.3.2" + path-type "^1.0.0" + +readable-stream@3: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.0.tgz#337bbda3adc0706bd3e024426a286d4b4b2c9198" + integrity sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +"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" + integrity sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readable-stream@^2.0.0, readable-stream@^2.0.1, readable-stream@^2.0.2, readable-stream@^2.0.5, readable-stream@^2.1.5, readable-stream@^2.2.2, readable-stream@^2.3.3, readable-stream@^2.3.5, readable-stream@^2.3.6, readable-stream@~2.3.6: + version "2.3.7" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.7.tgz#1eca1cf711aef814c04f62252a36a62f6cb23b57" + integrity sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw== + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.3" + isarray "~1.0.0" + process-nextick-args "~2.0.0" + safe-buffer "~5.1.1" + string_decoder "~1.1.1" + util-deprecate "~1.0.1" + +readable-stream@~1.1.9: + version "1.1.14" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.1.14.tgz#7cf4c54ef648e3813084c636dd2079e166c081d9" + integrity sha1-fPTFTvZI44EwhMY23SB54WbAgdk= + dependencies: + core-util-is "~1.0.0" + inherits "~2.0.1" + isarray "0.0.1" + string_decoder "~0.10.x" + +readdirp@^2.0.0, readdirp@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.2.1.tgz#0e87622a3325aa33e892285caf8b4e846529a525" + integrity sha512-1JU/8q+VgFZyxwrJ+SVIOsh+KywWGpds3NTqikiKpDMZWScmAYyKIgqkO+ARvNWJfXeXR1zxz7aHF4u4CyH6vQ== + dependencies: + graceful-fs "^4.1.11" + micromatch "^3.1.10" + readable-stream "^2.0.2" + +readdirp@~3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.6.0.tgz#74a370bd857116e245b29cc97340cd431a02a6c7" + integrity sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA== + dependencies: + picomatch "^2.2.1" + +readme-badges@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/readme-badges/-/readme-badges-0.3.3.tgz#a87d5b09f5525074912a3db0a3c1f3a7d8b8a892" + integrity sha1-qH1bCfVSUHSRKj2wo8Hzp9i4qJI= + +readme-includes@^0.2.9: + version "0.2.9" + resolved "https://registry.yarnpkg.com/readme-includes/-/readme-includes-0.2.9.tgz#6078cee302045934cea031c0866e5ffd93780fe2" + integrity sha1-YHjO4wIEWTTOoDHAhm5f/ZN4D+I= + dependencies: + extend-shallow "^1.1.2" + +rechoir@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/rechoir/-/rechoir-0.6.2.tgz#85204b54dba82d5742e28c96756ef43af50e3384" + integrity sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q= + dependencies: + resolve "^1.1.6" + +reduce-object@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/reduce-object/-/reduce-object-0.1.3.tgz#d549d40a6c2936fa4e3e9b78ca89c93314594218" + integrity sha1-1UnUCmwpNvpOPpt4yonJMxRZQhg= + dependencies: + for-own "^0.1.1" + +reflinks@^0.3.6: + version "0.3.6" + resolved "https://registry.yarnpkg.com/reflinks/-/reflinks-0.3.6.tgz#7b0b21ebfa3818e34e153b7c7096998b1b98d40f" + integrity sha512-FTj/bD634kFeTZMKzsXSmS3RKkcyV3/CAeCgC7Lne7je24zQyeCMGzcDcgvRvPLwtTzX9BUyUlU2Pkk+YbjtQA== + dependencies: + async-each "^1.0.1" + data-store "^3.0.0" + date-store "^0.1.2" + extend-shallow "^3.0.2" + get-pkg "^1.0.0" + markdown-reference "^0.1.0" + ora "^2.1.0" + pkg-homepage "^0.1.1" + +reflinks@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/reflinks/-/reflinks-1.0.0.tgz#c00ba345e17a308cf7284eeb52a1e09e3c81e922" + integrity sha512-9YDf+8pwbyzfiUozddlwqcQ2gH4z3JRfe+JQWJOxoIgeAq5ANdoxHtVEOW7cqstbCN+Qsfxxmzr877sxiby5rQ== + dependencies: + data-store "^3.0.0" + date-store "^0.1.2" + get-pkg "^1.0.0" + markdown-reference "^0.1.0" + ora "^2.1.0" + pkg-homepage "^0.1.1" + +regex-cache@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd" + integrity sha512-nVIZwtCjkC9YgvWkpM55B5rBhBYRZhAaJbgcFYXXsHnbZ9UZI9nnVWYZpBlCqv9ho2eZryPnWrZGsOdPwVWXWQ== + dependencies: + is-equal-shallow "^0.1.3" + +regex-not@^1.0.0, regex-not@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c" + integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A== + dependencies: + extend-shallow "^3.0.2" + safe-regex "^1.1.0" + +regexp.prototype.flags@^1.2.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/regexp.prototype.flags/-/regexp.prototype.flags-1.3.1.tgz#7ef352ae8d159e758c0eadca6f8fcb4eef07be26" + integrity sha512-JiBdRBq91WlY7uRJ0ds7R+dU02i6LKi8r3BuQhNXn+kmeLN+EfHhfjqMRis1zJxnlu88hq/4dx0P2OP3APRTOA== + dependencies: + call-bind "^1.0.2" + define-properties "^1.1.3" + +regexpp@^3.1.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.2.0.tgz#0425a2768d8f23bad70ca4b90461fa2f1213e1b2" + integrity sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg== + +relative-dest@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/relative-dest/-/relative-dest-0.1.0.tgz#ba055b4c2a021f71de92a582eb766dd7b3b0c618" + integrity sha1-ugVbTCoCH3HekqWC63Zt17Owxhg= + dependencies: + relative "^1.1.0" + +relative@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/relative/-/relative-1.2.0.tgz#3d3a585c1ce74a7ac9e603eae17d122f160940eb" + integrity sha1-PTpYXBznSnrJ5gPq4X0SLxYJQOs= + +relative@^3.0.0, relative@^3.0.1, relative@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/relative/-/relative-3.0.2.tgz#0dcd8ec54a5d35a3c15e104503d65375b5a5367f" + integrity sha1-Dc2OxUpdNaPBXhBFA9ZTdbWlNn8= + dependencies: + isobject "^2.0.0" + +remarkable@^1.6.0, remarkable@^1.6.1, remarkable@^1.7.1: + version "1.7.4" + resolved "https://registry.yarnpkg.com/remarkable/-/remarkable-1.7.4.tgz#19073cb960398c87a7d6546eaa5e50d2022fcd00" + integrity sha512-e6NKUXgX95whv7IgddywbeN/ItCkWbISmc2DiqHJb0wTrqZIexqdco5b8Z3XZoo/48IdNVKM9ZCvTPJ4F5uvhg== + dependencies: + argparse "^1.0.10" + autolinker "~0.28.0" + +remote-origin-url@^0.5.1: + version "0.5.3" + resolved "https://registry.yarnpkg.com/remote-origin-url/-/remote-origin-url-0.5.3.tgz#b9fc6ced2c826690d0b07218b2b8c17fcec88e87" + integrity sha512-crQ7Xk1m/F2IiwBx5oTqk/c0hjoumrEz+a36+ZoVupskQRE/q7pAwHKsTNeiZ31sbSTELvVlVv4h1W0Xo5szKg== + dependencies: + parse-git-config "^1.1.1" + +remove-bom-buffer@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/remove-bom-buffer/-/remove-bom-buffer-3.0.0.tgz#c2bf1e377520d324f623892e33c10cac2c252b53" + integrity sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ== + dependencies: + is-buffer "^1.1.5" + is-utf8 "^0.2.1" + +remove-bom-stream@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/remove-bom-stream/-/remove-bom-stream-1.2.0.tgz#05f1a593f16e42e1fb90ebf59de8e569525f9523" + integrity sha1-BfGlk/FuQuH7kOv1nejlaVJflSM= + dependencies: + remove-bom-buffer "^3.0.0" + safe-buffer "^5.1.0" + through2 "^2.0.3" + +remove-trailing-separator@^1.0.1, remove-trailing-separator@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef" + integrity sha1-wkvOKig62tW8P1jg1IJJuSN52O8= + +repeat-element@^1.1.2: + version "1.1.4" + resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9" + integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ== + +repeat-string@^1.3.0, repeat-string@^1.5.0, 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= + +replace-ext@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-0.0.1.tgz#29bbd92078a739f0bcce2b4ee41e837953522924" + integrity sha1-KbvZIHinOfC8zitO5B6DeVNSKSQ= + +replace-ext@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/replace-ext/-/replace-ext-1.0.1.tgz#2d6d996d04a15855d967443631dd5f77825b016a" + integrity sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw== + +replace-homedir@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/replace-homedir/-/replace-homedir-1.0.0.tgz#e87f6d513b928dde808260c12be7fec6ff6e798c" + integrity sha1-6H9tUTuSjd6AgmDBK+f+xv9ueYw= + dependencies: + homedir-polyfill "^1.0.1" + is-absolute "^1.0.0" + remove-trailing-separator "^1.1.0" + +repo-utils@^0.3.6, repo-utils@^0.3.7: + version "0.3.7" + resolved "https://registry.yarnpkg.com/repo-utils/-/repo-utils-0.3.7.tgz#4ab66af340cb11fa7e5cf80581e92be97c1bf7ae" + integrity sha1-SrZq80DLEfp+XPgFgekr6Xwb964= + dependencies: + extend-shallow "^2.0.1" + get-value "^2.0.6" + git-config-path "^1.0.1" + is-absolute "^0.2.6" + kind-of "^3.0.4" + lazy-cache "^2.0.1" + mixin-deep "^1.1.3" + omit-empty "^0.4.1" + parse-author "^1.0.0" + parse-git-config "^1.0.2" + parse-github-url "^0.3.2" + project-name "^0.2.6" + +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-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +reserved@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/reserved/-/reserved-0.1.2.tgz#707b1246a3269f755da7cfcf9af6f4983bef105c" + integrity sha1-cHsSRqMmn3Vdp8/Pmvb0mDvvEFw= + +resolve-dir@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-0.1.1.tgz#b219259a5602fac5c5c496ad894a6e8cc430261e" + integrity sha1-shklmlYC+sXFxJatiUpujMQwJh4= + dependencies: + expand-tilde "^1.2.2" + global-modules "^0.2.3" + +resolve-dir@^1.0.0, resolve-dir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" + integrity sha1-eaQGRMNivoLybv/nOcm7U4IEb0M= + dependencies: + expand-tilde "^2.0.0" + global-modules "^1.0.0" + +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + +resolve-glob@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/resolve-glob/-/resolve-glob-1.0.0.tgz#c6142b0f850367607aae27506be7985d3a8c6931" + integrity sha512-wSW9pVGJRs89k0wEXhM7C6+va9998NsDhgc0Y+6Nv8hrHsu0hUS7Ug10J1EiVtU6N2tKlSNvx9wLihL8Ao22Lg== + dependencies: + extend-shallow "^2.0.1" + is-valid-glob "^1.0.0" + matched "^1.0.2" + relative "^3.0.2" + resolve-dir "^1.0.0" + +resolve-options@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/resolve-options/-/resolve-options-1.1.0.tgz#32bb9e39c06d67338dc9378c0d6d6074566ad131" + integrity sha1-MrueOcBtZzONyTeMDW1gdFZq0TE= + dependencies: + value-or-function "^3.0.0" + +resolve-url@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" + integrity sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo= + +resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, resolve@^1.4.0: + version "1.20.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.20.0.tgz#629a013fb3f70755d6f0b7935cc1c2c5378b1975" + integrity sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A== + dependencies: + is-core-module "^2.2.0" + path-parse "^1.0.6" + +restore-cursor@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-2.0.0.tgz#9f7ee287f82fd326d4fd162923d62129eee0dfaf" + integrity sha1-n37ih/gv0ybU/RYpI9YhKe7g368= + dependencies: + onetime "^2.0.0" + signal-exit "^3.0.2" + +ret@~0.1.10: + version "0.1.15" + resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" + integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== + +rethrow@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/rethrow/-/rethrow-0.1.0.tgz#7364b1ef6862696882594a88b66d5af8cfaf5e58" + integrity sha1-c2Sx72hiaWiCWUqItm1a+M+vXlg= + +rethrow@^0.2.3: + version "0.2.3" + resolved "https://registry.yarnpkg.com/rethrow/-/rethrow-0.2.3.tgz#c5528f190e89ec7535889452a1be68996b5f6616" + integrity sha1-xVKPGQ6J7HU1iJRSob5omWtfZhY= + dependencies: + ansi-bgred "^0.1.1" + ansi-red "^0.1.1" + ansi-yellow "^0.1.1" + extend-shallow "^1.1.4" + lazy-cache "^0.2.3" + right-align "^0.1.3" + +right-align@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/right-align/-/right-align-0.1.3.tgz#61339b722fe6a3515689210d24e14c96148613ef" + integrity sha1-YTObci/mo1FWiSENJOFMlhSGE+8= + dependencies: + align-text "^0.1.1" + +right-pad-values@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/right-pad-values/-/right-pad-values-0.3.1.tgz#e7f47b50bc32e14dc49fd6acd73052253e7ef8a4" + integrity sha1-5/R7ULwy4U3En9as1zBSJT5++KQ= + dependencies: + isobject "^2.0.0" + longest-value "^0.2.0" + pad-right "^0.2.2" + +rimraf@^2.4.2, rimraf@^2.6.1: + version "2.7.1" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" + integrity sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w== + dependencies: + glob "^7.1.3" + +rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + +safe-buffer@^5.1.0, safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +safe-regex@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e" + integrity sha1-QKNmnzsHfR6UPURinhV91IAjvy4= + dependencies: + ret "~0.1.10" + +sections@^0.1.8: + version "0.1.10" + resolved "https://registry.yarnpkg.com/sections/-/sections-0.1.10.tgz#b4747d8aba1829a1345a291a9db5d2532977787f" + integrity sha1-tHR9iroYKaE0WikanbXSUyl3eH8= + dependencies: + gfm-code-blocks "^1.0.0" + +sections@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/sections/-/sections-1.0.0.tgz#db657f5a478b45d2a046d045c1aa792eb823c2c1" + integrity sha1-22V/WkeLRdKgRtBFwap5LrgjwsE= + dependencies: + gfm-code-blocks "^1.0.0" + sort-by-value "^0.1.0" + +self-closing-tags@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/self-closing-tags/-/self-closing-tags-1.0.1.tgz#6c5fa497994bb826b484216916371accee490a5d" + integrity sha512-7t6hNbYMxM+VHXTgJmxwgZgLGktuXtVVD5AivWzNTdJBM4DBjnDKDzkf2SrNjihaArpeJYNjxkELBu1evI4lQA== + +semver-greatest-satisfied-range@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/semver-greatest-satisfied-range/-/semver-greatest-satisfied-range-1.1.0.tgz#13e8c2658ab9691cb0cd71093240280d36f77a5b" + integrity sha1-E+jCZYq5aRywzXEJMkAoDTb3els= + dependencies: + sver-compat "^1.5.0" + +"semver@2 || 3 || 4 || 5", semver@^5.3.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" + integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== + +semver@^7.2.1: + version "7.3.5" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" + integrity sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ== + dependencies: + lru-cache "^6.0.0" + +serialize-javascript@^6.0.2: + version "6.0.2" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.2.tgz#defa1e055c83bf6d59ea805d8da862254eb6a6c2" + integrity sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g== + dependencies: + randombytes "^2.1.0" + +session-cache@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/session-cache/-/session-cache-0.2.0.tgz#188e47bf8068a0dbfa24c6dd0e0827e9973ce717" + integrity sha1-GI5Hv4BooNv6JMbdDggn6Zc85xc= + dependencies: + continuation-local-storage "^3.1.1" + +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= + +set-getter@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.1.tgz#a3110e1b461d31a9cfc8c5c9ee2e9737ad447102" + integrity sha512-9sVWOy+gthr+0G9DzqqLaYNA7+5OKkSmcqjL9cBpDEaZrr3ShQlyX2cZ/O/ozE41oxn/Tt0LGEM/w4Rub3A3gw== + dependencies: + to-object-path "^0.3.0" + +set-object@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/set-object/-/set-object-0.1.0.tgz#a4db4542f03e74e938453b57dc4802308a44b502" + integrity sha1-pNtFQvA+dOk4RTtX3EgCMIpEtQI= + dependencies: + get-value "^0.3.2" + isobject "^0.2.0" + preserve "^0.1.3" + +set-value@^0.1.6: + version "0.1.6" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.1.6.tgz#df418ad48a797b4facead9f78b68fe1d0fde55a1" + integrity sha1-30GK1Ip5e0+s6tn3i2j+HQ/eVaE= + dependencies: + isobject "^1.0.0" + noncharacters "^1.1.0" + +set-value@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.2.0.tgz#73b0a6825c158c6a16a82bbdc95775bf2a825fab" + integrity sha1-c7CmglwVjGoWqCu9yVd1vyqCX6s= + dependencies: + isobject "^1.0.0" + noncharacters "^1.1.0" + +set-value@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.3.3.tgz#b81223681638a1088fd88a435b8a9d32dae8d9ba" + integrity sha1-uBIjaBY4oQiP2IpDW4qdMtro2bo= + dependencies: + extend-shallow "^2.0.1" + isobject "^2.0.0" + to-object-path "^0.2.0" + +set-value@^0.4.0, set-value@^0.4.3: + version "0.4.3" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-0.4.3.tgz#7db08f9d3d22dc7f78e53af3c3bf4666ecdfccf1" + integrity sha1-fbCPnT0i3H945Trzw79GZuzfzPE= + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.1" + to-object-path "^0.3.0" + +set-value@^2.0.0, set-value@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b" + integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw== + dependencies: + extend-shallow "^2.0.1" + is-extendable "^0.1.1" + is-plain-object "^2.0.3" + split-string "^3.0.1" + +shallow-clone@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/shallow-clone/-/shallow-clone-0.1.2.tgz#5909e874ba77106d73ac414cfec1ffca87d97060" + integrity sha1-WQnodLp3EG1zrEFM/sH/yofZcGA= + dependencies: + is-extendable "^0.1.1" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + mixin-object "^2.0.1" + +shebang-command@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea" + integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA== + dependencies: + shebang-regex "^3.0.0" + +shebang-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" + integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== + +shimmer@^1.1.0, shimmer@^1.2.0: + version "1.2.1" + resolved "https://registry.yarnpkg.com/shimmer/-/shimmer-1.2.1.tgz#610859f7de327b587efebf501fb43117f9aff337" + integrity sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw== + +should-equal@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/should-equal/-/should-equal-0.3.1.tgz#bd8ea97a6748e39fad476a3be6fd72ebc2e72bf0" + integrity sha1-vY6pemdI45+tR2o75v1y68LnK/A= + dependencies: + should-type "0.0.4" + +should-format@0.0.7: + version "0.0.7" + resolved "https://registry.yarnpkg.com/should-format/-/should-format-0.0.7.tgz#1e2ef86bd91da9c2e0412335b56ababd9a2fde12" + integrity sha1-Hi74a9kdqcLgQSM1tWq6vZov3hI= + dependencies: + should-type "0.0.4" + +should-type@0.0.4: + version "0.0.4" + resolved "https://registry.yarnpkg.com/should-type/-/should-type-0.0.4.tgz#0132a05417a6126866426acf116f1ed5623a5cd0" + integrity sha1-ATKgVBemEmhmQmrPEW8e1WI6XNA= + +should@^4.3.1: + version "4.6.5" + resolved "https://registry.yarnpkg.com/should/-/should-4.6.5.tgz#0d12346dbbd1b028f9f4bb7a9d547364fc36a87f" + integrity sha1-DRI0bbvRsCj59Lt6nVRzZPw2qH8= + dependencies: + should-equal "0.3.1" + should-format "0.0.7" + should-type "0.0.4" + +sigmund@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sigmund/-/sigmund-1.0.1.tgz#3ff21f198cad2175f9f3b781853fd94d0d19b590" + integrity sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA= + +signal-exit@^3.0.2: + version "3.0.3" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" + integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== + +simple-concat@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.1.tgz#f46976082ba35c2263f1c8ab5edfe26c41c9552f" + integrity sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q== + +simple-get@^2.5.1: + version "2.8.1" + resolved "https://registry.yarnpkg.com/simple-get/-/simple-get-2.8.1.tgz#0e22e91d4575d87620620bc91308d57a77f44b5d" + integrity sha512-lSSHRSw3mQNUGPAYRqo7xy9dhKmxFXIjLjp4KHpf99GEH2VH7C3AM+Qfx6du6jhfUi6Vm7XnbEVEf7Wb6N8jRw== + dependencies: + decompress-response "^3.3.0" + once "^1.3.1" + simple-concat "^1.0.0" + +sinon@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/sinon/-/sinon-17.0.1.tgz#26b8ef719261bf8df43f925924cccc96748e407a" + integrity sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g== + dependencies: + "@sinonjs/commons" "^3.0.0" + "@sinonjs/fake-timers" "^11.2.2" + "@sinonjs/samsam" "^8.0.0" + diff "^5.1.0" + nise "^5.1.5" + supports-color "^7.2.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +snapdragon-node@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" + integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw== + dependencies: + define-property "^1.0.0" + isobject "^3.0.0" + snapdragon-util "^3.0.1" + +snapdragon-util@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2" + integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ== + dependencies: + kind-of "^3.2.0" + +snapdragon@^0.8.1: + version "0.8.2" + resolved "https://registry.yarnpkg.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d" + integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg== + dependencies: + base "^0.11.1" + debug "^2.2.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + map-cache "^0.2.2" + source-map "^0.5.6" + source-map-resolve "^0.5.0" + use "^3.1.0" + +sort-by-value@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/sort-by-value/-/sort-by-value-0.1.0.tgz#d07598927d43d425e51ffa3f6c0b91b708576ba7" + integrity sha1-0HWYkn1D1CXlH/o/bAuRtwhXa6c= + dependencies: + extend-shallow "^2.0.1" + isobject "^3.0.0" + +sort-object-arrays@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/sort-object-arrays/-/sort-object-arrays-0.1.1.tgz#99f55cf205a491dde1f52f096a36a26b09b4832f" + integrity sha1-mfVc8gWkkd3h9S8Jajaiawm0gy8= + dependencies: + kind-of "^3.0.2" + +source-map-resolve@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a" + integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw== + dependencies: + atob "^2.1.2" + decode-uri-component "^0.2.0" + resolve-url "^0.2.1" + source-map-url "^0.4.0" + urix "^0.1.0" + +source-map-url@^0.4.0: + version "0.4.1" + resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" + integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== + +source-map@^0.5.6: + version "0.5.7" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc" + integrity sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w= + +source-map@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +sparkles@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" + integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== + +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.9" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.9.tgz#8a595135def9592bda69709474f1cbeea7c2467f" + integrity sha512-Ki212dKK4ogX+xDo4CtOZBVIwhsKBEfsEEcwmJfLQzirgc2jIWdzg40Unxz/HzEUqM1WFzVlQSMF9kZZ2HboLQ== + +split-string@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-1.0.1.tgz#bcbab3f4152acee3a0d6ab2479c0d2879c3db3ce" + integrity sha1-vLqz9BUqzuOg1qskecDSh5w9s84= + dependencies: + extend-shallow "^2.0.1" + +split-string@^3.0.1, split-string@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2" + integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw== + dependencies: + extend-shallow "^3.0.0" + +split@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/split/-/split-1.0.1.tgz#605bd9be303aa59fb35f9229fbea0ddec9ea07d9" + integrity sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg== + dependencies: + through "2" + +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-trace@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/stack-trace/-/stack-trace-0.0.10.tgz#547c70b347e8d32b4e108ea1a2a159e5fdde19c0" + integrity sha1-VHxws0fo0ytOEI6hoqFZ5f3eGcA= + +starts-with@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/starts-with/-/starts-with-1.0.2.tgz#16793a729d89d4cf3d4fb2eda2f908ae357f196f" + integrity sha1-Fnk6cp2J1M89T7LtovkIrjV/GW8= + +static-extend@^0.1.1, static-extend@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6" + integrity sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY= + dependencies: + define-property "^0.2.5" + object-copy "^0.1.0" + +stream-combiner@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.2.2.tgz#aec8cbac177b56b6f4fa479ced8c1912cee52858" + integrity sha1-rsjLrBd7Vrb0+kec7YwZEs7lKFg= + dependencies: + duplexer "~0.1.1" + through "~2.3.4" + +stream-exhaust@^1.0.0, stream-exhaust@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/stream-exhaust/-/stream-exhaust-1.0.2.tgz#acdac8da59ef2bc1e17a2c0ccf6c320d120e555d" + integrity sha512-b/qaq/GlBK5xaq1yrK9/zFcyRSTNxmcZwFLGSTG0mXgZl/4Z6GgiyYOXOvY7N3eEvFRAG1bkDRz5EPGSvPYQlw== + +stream-shift@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/stream-shift/-/stream-shift-1.0.1.tgz#d7088281559ab2778424279b0877da3c392d5a3d" + integrity sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ== + +string-width@^1.0.1, string-width@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +string-width@^4.1.0, string-width@^4.2.0: + version "4.2.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.2.tgz#dafd4f9559a7585cfba529c6a0a4f73488ebd4c5" + integrity sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.0" + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + +string_decoder@~0.10.x: + version "0.10.31" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-0.10.31.tgz#62e203bc41766c6c28c9fc84301dab1c5310fa94" + integrity sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ= + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +stringify-author@^0.1.3: + version "0.1.3" + resolved "https://registry.yarnpkg.com/stringify-author/-/stringify-author-0.1.3.tgz#d581e02ce0b55cda3c953e62add211fae4b0ef66" + integrity sha1-1YHgLOC1XNo8lT5irdIR+uSw72Y= + +stringify-changelog@^0.1.0: + version "0.1.6" + resolved "https://registry.yarnpkg.com/stringify-changelog/-/stringify-changelog-0.1.6.tgz#cbd6dceebeb7c7e56b21c1d9aa7e22ee1d9a7ad1" + integrity sha1-y9bc7r63x+VrIcHZqn4i7h2aetE= + dependencies: + columnify "^1.5.4" + js-yaml-lite "^0.1.1" + mixin-deep "^1.1.3" + moment "^2.14.1" + +stringify-github-url@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stringify-github-url/-/stringify-github-url-0.1.0.tgz#ab81fe9de5bf1c1496c23a42521d03f49aa62e8d" + integrity sha1-q4H+neW/HBSWwjpCUh0D9JqmLo0= + +stringify-travis-url@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/stringify-travis-url/-/stringify-travis-url-0.1.0.tgz#6a0c157f15055dd113e9cb0da80a3f39241c7165" + integrity sha1-agwVfxUFXdET6csNqAo/OSQccWU= + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.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= + dependencies: + ansi-regex "^3.0.0" + +strip-ansi@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.0.tgz#0b1571dd7669ccd4f3e06e14ef1eed26225ae532" + integrity sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w== + dependencies: + ansi-regex "^5.0.0" + +strip-bom-string@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom-string/-/strip-bom-string-1.0.0.tgz#e5211e9224369fbb81d633a2f00044dc8cedad92" + integrity sha1-5SEekiQ2n7uB1jOi8ABE3IztrZI= + +strip-bom@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-1.0.0.tgz#85b8862f3844b5a6d5ec8467a93598173a36f794" + integrity sha1-hbiGLzhEtabV7IRnqTWYFzo295Q= + dependencies: + first-chunk-stream "^1.0.0" + is-utf8 "^0.2.0" + +strip-bom@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-2.0.0.tgz#6219a85616520491f35788bdbf1447a99c7e6b0e" + integrity sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4= + dependencies: + is-utf8 "^0.2.0" + +strip-color@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/strip-color/-/strip-color-0.1.0.tgz#106f65d3d3e6a2d9401cac0eb0ce8b8a702b4f7b" + integrity sha1-EG9l09PmotlAHKwOsM6LinArT3s= + +strip-indent@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/strip-indent/-/strip-indent-1.0.1.tgz#0c7962a6adefa7bbd4ac366460a638552ae1a0a2" + integrity sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI= + dependencies: + get-stdin "^4.0.1" + +strip-json-comments@^3.1.0, strip-json-comments@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" + integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== + +striptags@^3.1.1: + version "3.2.0" + resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.2.0.tgz#cc74a137db2de8b0b9a370006334161f7dd67052" + integrity sha512-g45ZOGzHDMe2bdYMdIvdAfCQkCTDMGBazSw1ypMowwGIee7ZQ5dU0rBJ8Jqgl+jAKIv4dbeE1jscZq9wid1Tkw== + +success-symbol@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/success-symbol/-/success-symbol-0.1.0.tgz#24022e486f3bf1cdca094283b769c472d3b72897" + integrity sha1-JAIuSG878c3KCUKDt2nEctO3KJc= + +supports-color@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" + integrity sha1-U10EXOa2Nj+kARcIRimZXp3zJMc= + +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== + dependencies: + has-flag "^3.0.0" + +supports-color@^7.1.0, supports-color@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" + integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw== + dependencies: + has-flag "^4.0.0" + +supports-color@^8.1.1: + version "8.1.1" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c" + integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q== + dependencies: + has-flag "^4.0.0" + +sver-compat@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/sver-compat/-/sver-compat-1.5.0.tgz#3cf87dfeb4d07b4a3f14827bc186b3fd0c645cd8" + integrity sha1-PPh9/rTQe0o/FIJ7wYaz/QxkXNg= + dependencies: + es6-iterator "^2.0.1" + es6-symbol "^3.1.1" + +table@^6.0.9: + version "6.7.1" + resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" + integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== + dependencies: + ajv "^8.0.1" + lodash.clonedeep "^4.5.0" + lodash.truncate "^4.4.2" + slice-ansi "^4.0.0" + string-width "^4.2.0" + strip-ansi "^6.0.0" + +template-bind-helpers@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/template-bind-helpers/-/template-bind-helpers-0.1.2.tgz#dcb7376db2681c43dd74bc3a73f522400e1b727e" + integrity sha1-3Lc3bbJoHEPddLw6c/UiQA4bcn4= + +template-bind-helpers@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/template-bind-helpers/-/template-bind-helpers-0.2.0.tgz#be5e5f8053ddf5a031c46df48ab02a76b9380ba3" + integrity sha1-vl5fgFPd9aAxxG30irAqdrk4C6M= + dependencies: + isobject "^2.0.0" + +template-error@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/template-error/-/template-error-0.1.2.tgz#18c9f600d90f2f3dfba0833e37f7cb6f413542d4" + integrity sha1-GMn2ANkPLz37oIM+N/fLb0E1QtQ= + dependencies: + engine "^0.1.5" + kind-of "^2.0.1" + lazy-cache "^0.2.3" + rethrow "^0.2.3" + +template-helper-apidocs@^0.4.4: + version "0.4.4" + resolved "https://registry.yarnpkg.com/template-helper-apidocs/-/template-helper-apidocs-0.4.4.tgz#8f558ff973b9496bc89feefa124b43e5aa4b7448" + integrity sha1-j1WP+XO5SWvIn+76EktD5apLdEg= + dependencies: + clone-deep "^0.1.1" + globby "^2.0.0" + is-glob "^1.1.3" + js-comments "^0.5.2" + mixin-deep "^1.0.1" + relative "^3.0.0" + template-bind-helpers "^0.1.2" + +template-helpers@^0.3.2: + version "0.3.4" + resolved "https://registry.yarnpkg.com/template-helpers/-/template-helpers-0.3.4.tgz#af4798125d25e8f0764dafdc433496d186e38225" + integrity sha1-r0eYEl0l6PB2Ta/cQzSW0YbjgiU= + dependencies: + any "^1.0.0" + arr-flatten "^1.0.1" + center-align "^0.1.1" + export-files "^2.1.0" + get-value "^1.1.5" + is-number "^2.0.2" + is-plain-object "^2.0.1" + isobject "^2.0.0" + kind-of "^2.0.0" + lazy-cache "^0.2.2" + object.omit "^2.0.0" + relative "^3.0.1" + right-align "^0.1.3" + strip-indent "^1.0.1" + to-gfm-code-block "^0.1.1" + word-wrap "^1.1.0" + +template-helpers@^0.6.7: + version "0.6.7" + resolved "https://registry.yarnpkg.com/template-helpers/-/template-helpers-0.6.7.tgz#8e29f6e16b0526f7c61260cffacc79edcf50215b" + integrity sha1-jin24WsFJvfGEmDP+sx57c9QIVs= + dependencies: + any "^1.0.0" + arr-flatten "^1.0.1" + arr-union "^3.1.0" + center-align "^0.1.3" + export-files "^2.1.1" + fs-exists-sync "^0.1.0" + get-value "^2.0.6" + helper-slugify "^0.2.0" + is-absolute "^0.2.5" + is-number "^2.1.0" + is-plain-object "^2.0.1" + kind-of "^3.0.3" + lazy-cache "^2.0.1" + make-iterator "^0.3.0" + object.omit "^2.0.0" + relative "^3.0.2" + right-align "^0.1.3" + strip-color "^0.1.0" + titlecase "^1.1.2" + to-gfm-code-block "^0.1.1" + word-wrap "^1.1.0" + +template-helpers@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/template-helpers/-/template-helpers-1.0.1.tgz#2c5e1064c24a817219f8cf2fe738c548b15616d0" + integrity sha512-YRRNtn6K+xI8sIvkaY4+3hYFvOyXXJUZzTqPmntR0q5YihQ/9iXlSHYe+5r9/2mV9GlE/2Yo1gQOwEgRqa6glA== + dependencies: + any "^1.0.0" + center-align "^1.0.1" + get-value "^3.0.1" + helper-slugify "^0.2.0" + kind-of "^6.0.2" + relative "^3.0.2" + right-align "^0.1.3" + titlecase "^1.1.2" + word-wrap "^1.2.3" + +template-toc@^0.3.3: + version "0.3.3" + resolved "https://registry.yarnpkg.com/template-toc/-/template-toc-0.3.3.tgz#35a915321e592f26d9cc90d9e565e00eecfffc75" + integrity sha1-NakVMh5ZLybZzJDZ5WXgDuz//HU= + dependencies: + extend-shallow "^1.1.2" + markdown-toc "^0.11.1" + +template-utils@^0.6.2: + version "0.6.2" + resolved "https://registry.yarnpkg.com/template-utils/-/template-utils-0.6.2.tgz#148e64edf12d84d99eeb950c647088be4da251d9" + integrity sha1-FI5k7fEthNme65UMZHCIvk2iUdk= + dependencies: + array-unique "^0.2.1" + chalk "^1.0.0" + export-dirs "^0.2.4" + export-files "^2.0.1" + extract-gfm "^0.1.0" + is-number "^2.0.2" + is-plain-object "^2.0.0" + is-stream "^1.0.1" + isobject "^1.0.0" + load-templates "^0.7.3" + map-files "^0.7.4" + mixin-deep "^1.1.0" + object.reduce "^0.1.7" + parse-gitignore "^0.1.2" + to-template "^0.1.2" + to-vinyl "^0.1.2" + vinyl "^0.4.6" + +template@^0.14.3: + version "0.14.3" + resolved "https://registry.yarnpkg.com/template/-/template-0.14.3.tgz#22225acd953e2a01d37565e414f1ad8e30050796" + integrity sha1-IiJazZU+KgHTdWXkFPGtjjAFB5Y= + dependencies: + ansi-styles "^2.0.1" + arr-flatten "^1.0.1" + array-slice "^0.2.3" + async "^0.9.0" + chalk "^1.0.0" + clone-deep "^0.1.1" + config-cache "^4.0.0" + debug "^2.2.0" + en-route "^0.5.0" + engine-cache "^0.12.1" + export-files "^2.0.1" + extend-shallow "^1.1.2" + for-own "^0.1.3" + globby "^2.0.0" + has-value "^0.2.0" + helper-cache "^0.7.0" + kind-of "^1.1.0" + layouts "^0.9.0" + load-templates "^0.7.3" + loader-cache "^0.4.0" + middleware-utils "^0.1.2" + mixin-deep "^1.1.0" + object.reduce "^0.1.7" + option-cache "^1.3.0" + parser-front-matter "^1.2.1" + pick-from "^0.1.0" + relative "^3.0.0" + template-utils "^0.6.2" + +templates@^1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/templates/-/templates-1.2.9.tgz#d8b0de71d69331af755cb09533b4ecc2da649801" + integrity sha1-2LDecdaTMa91XLCVM7TswtpkmAE= + dependencies: + array-sort "^0.1.2" + async-each "^1.0.1" + base "^0.11.1" + base-data "^0.6.0" + base-engines "^0.2.0" + base-helpers "^0.2.0" + base-option "^0.8.4" + base-plugins "^0.4.13" + base-routes "^0.2.2" + debug "^2.6.0" + deep-bind "^0.3.0" + define-property "^0.2.5" + engine-base "^0.1.2" + export-files "^2.1.1" + extend-shallow "^2.0.1" + "falsey" "^0.3.0" + get-value "^2.0.6" + get-view "^0.1.3" + group-array "^0.3.1" + has-glob "^1.0.0" + has-value "^0.3.1" + inflection "^1.12.0" + is-valid-app "^0.2.1" + layouts "^0.12.1" + lazy-cache "^2.0.2" + match-file "^0.2.1" + mixin-deep "^1.1.3" + paginationator "^0.1.4" + pascalcase "^0.1.1" + set-value "^0.4.0" + template-error "^0.1.2" + vinyl-item "^1.0.0" + vinyl-view "^2.0.0" + +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + +through2-filter@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/through2-filter/-/through2-filter-3.0.0.tgz#700e786df2367c2c88cd8aa5be4cf9c1e7831254" + integrity sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA== + dependencies: + through2 "~2.0.0" + xtend "~4.0.0" + +through2@^0.6.1, through2@^0.6.3: + version "0.6.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-0.6.5.tgz#41ab9c67b29d57209071410e1d7a7a968cd3ad48" + integrity sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg= + dependencies: + readable-stream ">=1.0.33-1 <1.1.0-0" + xtend ">=4.0.0 <4.1.0-0" + +through2@^2.0.0, through2@^2.0.3, through2@~2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/through2/-/through2-2.0.5.tgz#01c1e39eb31d07cb7d03a96a70823260b23132cd" + integrity sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ== + dependencies: + readable-stream "~2.3.6" + xtend "~4.0.1" + +through2@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/through2/-/through2-4.0.2.tgz#a7ce3ac2a7a8b0b966c80e7c49f0484c3b239764" + integrity sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw== + dependencies: + readable-stream "3" + +through@2, through@^2.3.8, through@~2.3, through@~2.3.4: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + +tildify@^1.1.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/tildify/-/tildify-1.2.0.tgz#dcec03f55dca9b7aa3e5b04f21817eb56e63588a" + integrity sha1-3OwD9V3Km3qj5bBPIYF+tW5jWIo= + dependencies: + os-homedir "^1.0.0" + +time-stamp@^0.1.0: + version "0.1.3" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-0.1.3.tgz#095848c27e79db4c01daba9477d675bc6f3290f9" + integrity sha1-CVhIwn5520wB2rqUd9Z1vG8ykPk= + +time-stamp@^1.0.0, time-stamp@^1.0.1: + version "1.1.0" + resolved "https://registry.yarnpkg.com/time-stamp/-/time-stamp-1.1.0.tgz#764a5a11af50561921b133f3b44e618687e0f5c3" + integrity sha1-dkpaEa9QVhkhsTPztE5hhofg9cM= + +titlecase@^1.1.2: + version "1.1.3" + resolved "https://registry.yarnpkg.com/titlecase/-/titlecase-1.1.3.tgz#fc6d65ff582b0602410768ef1a09b70506313dc3" + integrity sha512-pQX4oiemzjBEELPqgK4WE+q0yhAqjp/yzusGtlSJsOuiDys0RQxggepYmo0BuegIDppYS3b3cpdegRwkpyN3hw== + +to-absolute-glob@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/to-absolute-glob/-/to-absolute-glob-2.0.2.tgz#1865f43d9e74b0822db9f145b78cff7d0f7c849b" + integrity sha1-GGX0PZ50sIItufFFt4z/fQ98hJs= + dependencies: + is-absolute "^1.0.0" + is-negated-glob "^1.0.0" + +to-arg@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/to-arg/-/to-arg-1.1.0.tgz#8a9ff0697c88c5d04986a1d8169d56cf69ecafcb" + integrity sha1-ip/waXyIxdBJhqHYFp1Wz2nsr8s= + dependencies: + dashify "^0.1.0" + is-primitive "^2.0.0" + +to-flags@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/to-flags/-/to-flags-0.1.0.tgz#db754fa637bb7fedd4dd9465790d0d561906d599" + integrity sha1-23VPpje7f+3U3ZRleQ0NVhkG1Zk= + dependencies: + to-arg "^1.1.0" + +to-gfm-code-block@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/to-gfm-code-block/-/to-gfm-code-block-0.1.1.tgz#25d045a5fae553189e9637b590900da732d8aa82" + integrity sha1-JdBFpfrlUxielje1kJANpzLYqoI= + +to-object-path@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.2.0.tgz#1634e1b52a88ba00e3949619fc0081dc9a3b07ca" + integrity sha1-FjThtSqIugDjlJYZ/ACB3Jo7B8o= + dependencies: + arr-flatten "^1.0.1" + is-arguments "^1.0.2" + +to-object-path@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af" + integrity sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68= + dependencies: + kind-of "^3.0.2" + +to-regex-range@^2.1.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38" + integrity sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg= + dependencies: + is-number "^3.0.0" + repeat-string "^1.6.1" + +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" + +to-regex@^3.0.1, to-regex@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce" + integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw== + dependencies: + define-property "^2.0.2" + extend-shallow "^3.0.2" + regex-not "^1.0.2" + safe-regex "^1.1.0" + +to-template@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/to-template/-/to-template-0.1.2.tgz#3835694f82b1b74370306df75f55fc00e77335a8" + integrity sha1-ODVpT4Kxt0NwMG33X1X8AOdzNag= + dependencies: + is-plain-object "^1.0.0" + to-vinyl "^0.1.0" + +to-through@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-through/-/to-through-2.0.0.tgz#fc92adaba072647bc0b67d6b03664aa195093af6" + integrity sha1-/JKtq6ByZHvAtn1rA2ZKoZUJOvY= + dependencies: + through2 "^2.0.3" + +to-vinyl@^0.1.0, to-vinyl@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/to-vinyl/-/to-vinyl-0.1.2.tgz#edb56bb664f860ade174d9884ab69541b77e4453" + integrity sha1-7bVrtmT4YK3hdNmISraVQbd+RFM= + dependencies: + isobject "^1.0.0" + vinyl "^0.4.6" + +toml@^2.3.2: + version "2.3.6" + resolved "https://registry.yarnpkg.com/toml/-/toml-2.3.6.tgz#25b0866483a9722474895559088b436fd11f861b" + integrity sha512-gVweAectJU3ebq//Ferr2JUY4WKSDe5N+z0FvjDncLGyHmIDoxgY/2Ie4qfEIDm4IS7OA6Rmdm7pdEEdMcV/xQ== + +trim-leading-lines@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/trim-leading-lines/-/trim-leading-lines-0.1.1.tgz#0e7cac3e83042dcf95a74ed36966f17744d5c169" + integrity sha1-DnysPoMELc+Vp07TaWbxd0TVwWk= + dependencies: + is-whitespace "^0.3.0" + +try-open@^0.1.0: + version "0.1.3" + resolved "https://registry.yarnpkg.com/try-open/-/try-open-0.1.3.tgz#28e29520593ea8c610712a0bb6f45fbe4b3b6a59" + integrity sha1-KOKVIFk+qMYQcSoLtvRfvks7alk= + +type-check@^0.4.0, type-check@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.4.0.tgz#07b8203bfa7056c0657050e3ccd2c37730bab8f1" + integrity sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew== + dependencies: + prelude-ls "^1.2.1" + +type-detect@4.0.8, 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.20.2: + version "0.20.2" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.20.2.tgz#1bf207f4b28f91583666cb5fbd327887301cd5f4" + integrity sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ== + +type@^1.0.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" + integrity sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg== + +type@^2.0.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" + integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== + +typedarray@^0.0.6: + version "0.0.6" + resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" + integrity sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c= + +typeof-article@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/typeof-article/-/typeof-article-0.1.1.tgz#9f07e733c3fbb646ffa9e61c08debacd460e06af" + integrity sha1-nwfnM8P7tkb/qeYcCN66zUYOBq8= + dependencies: + kind-of "^3.1.0" + +uglify-js@^3.1.4: + version "3.13.10" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.10.tgz#a6bd0d28d38f592c3adb6b180ea6e07e1e540a8d" + integrity sha512-57H3ACYFXeo1IaZ1w02sfA71wI60MGco/IQFjOqK+WtKoprh7Go2/yvd2HPtoJILO2Or84ncLccI4xoHMTSbGg== + +unc-path-regex@^0.1.0, unc-path-regex@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/unc-path-regex/-/unc-path-regex-0.1.2.tgz#e73dd3d7b0d7c5ed86fbac6b0ae7d8c6a69d50fa" + integrity sha1-5z3T17DXxe2G+6xrCufYxqadUPo= + +undertaker-registry@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/undertaker-registry/-/undertaker-registry-1.0.1.tgz#5e4bda308e4a8a2ae584f9b9a4359a499825cc50" + integrity sha1-XkvaMI5KiirlhPm5pDWaSZglzFA= + +undertaker@^1.2.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/undertaker/-/undertaker-1.3.0.tgz#363a6e541f27954d5791d6fa3c1d321666f86d18" + integrity sha512-/RXwi5m/Mu3H6IHQGww3GNt1PNXlbeCuclF2QYR14L/2CHPz3DFZkvB5hZ0N/QUkiXWCACML2jXViIQEQc2MLg== + dependencies: + arr-flatten "^1.0.1" + arr-map "^2.0.0" + bach "^1.0.0" + collection-map "^1.0.0" + es6-weak-map "^2.0.1" + fast-levenshtein "^1.0.0" + last-run "^1.1.0" + object.defaults "^1.0.0" + object.reduce "^1.0.0" + undertaker-registry "^1.0.0" + +union-value@^0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-0.1.1.tgz#6920e5907eee2bff11b7c7fb098b888bfa7cc54f" + integrity sha1-aSDlkH7uK/8Rt8f7CYuIi/p8xU8= + dependencies: + arr-union "^3.0.0" + get-value "^1.1.5" + is-extendable "^0.1.1" + set-value "^0.2.0" + +union-value@^0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-0.2.4.tgz#7375152786679057e7b37aa676e83468fc0274f0" + integrity sha1-c3UVJ4ZnkFfns3qmdug0aPwCdPA= + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^0.4.3" + +union-value@^1.0.0, union-value@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847" + integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg== + dependencies: + arr-union "^3.1.0" + get-value "^2.0.6" + is-extendable "^0.1.1" + set-value "^2.0.1" + +unique-stream@^2.0.2: + version "2.3.1" + resolved "https://registry.yarnpkg.com/unique-stream/-/unique-stream-2.3.1.tgz#c65d110e9a4adf9a6c5948b28053d9a8d04cbeac" + integrity sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A== + dependencies: + json-stable-stringify-without-jsonify "^1.0.1" + through2-filter "^3.0.0" + +unset-value@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559" + integrity sha1-g3aHP30jNRef+x5vw6jtDfyKtVk= + dependencies: + has-value "^0.3.1" + isobject "^3.0.0" + +upath@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/upath/-/upath-1.2.0.tgz#8f66dbcd55a883acdae4408af8b035a5044c1894" + integrity sha512-aZwGpamFO61g3OlfT7OQCHqhGnW43ieH9WZeP7QxN/G/jS4jfqUkZxoryvJgVPEcrl5NL/ggHsSmLMHuH64Lhg== + +update-copyright@^0.1.0: + version "0.1.1" + resolved "https://registry.yarnpkg.com/update-copyright/-/update-copyright-0.1.1.tgz#f81f1d6d85c56aa86c19d226fdcba5fe94951970" + integrity sha1-+B8dbYXFaqhsGdIm/cul/pSVGXA= + dependencies: + ansi-gray "^0.1.1" + ansi-green "^0.1.1" + ansi-red "^0.1.1" + copyright-regex "^1.1.5" + engine "^0.1.10" + lazy-cache "^1.0.3" + leven "^2.0.0" + load-pkg "^3.0.1" + mixin-deep "^1.1.3" + omit-empty "^0.3.2" + parse-author "^0.2.0" + parse-copyright "^0.4.0" + update-year "^0.5.2" + year "^0.2.1" + +update-copyright@^0.2.3: + version "0.2.4" + resolved "https://registry.yarnpkg.com/update-copyright/-/update-copyright-0.2.4.tgz#062e17cc0959f814ac498bb1e3a9e556254d5f43" + integrity sha1-Bi4XzAlZ+BSsSYux46nlViVNX0M= + dependencies: + engine "^0.1.11" + isobject "^2.1.0" + lazy-cache "^2.0.1" + leven "^2.0.0" + load-pkg "^3.0.1" + mixin-deep "^1.1.3" + omit-empty "^0.3.6" + parse-author "^1.0.0" + parse-copyright "^0.4.0" + update-year "^0.5.2" + year "^0.2.1" + +update-sections@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/update-sections/-/update-sections-0.1.2.tgz#ab53037038e67cdf06f74cecc02e5e02a17b9af7" + integrity sha1-q1MDcDjmfN8G90zswC5eAqF7mvc= + dependencies: + sections "^0.1.8" + +update-year@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/update-year/-/update-year-0.5.2.tgz#b45bc3e20960bd46b1eae26ec3712e6c0449fae1" + integrity sha1-tFvD4glgvUax6uJuw3EubARJ+uE= + dependencies: + array-unique "^0.2.1" + year "^0.2.1" + +upper-case@^1.1.1: + version "1.1.3" + resolved "https://registry.yarnpkg.com/upper-case/-/upper-case-1.1.3.tgz#f6b4501c2ec4cdd26ba78be7222961de77621598" + integrity sha1-9rRQHC7EzdJrp4vnIilh3ndiFZg= + +uri-js@^4.2.2: + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== + dependencies: + punycode "^2.1.0" + +urix@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72" + integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI= + +use@^3.0.0, use@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f" + integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ== + +user-home@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/user-home/-/user-home-1.1.1.tgz#2b5be23a32b63a7c9deb8d0f28d485724a3df190" + integrity sha1-K1viOjK2Onyd640PKNSFcko98ZA= + +util-deprecate@^1.0.1, util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +utils-merge@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" + integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= + +uuid@^9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" + integrity sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA== + +v8-compile-cache@^2.0.3: + version "2.3.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.3.0.tgz#2de19618c66dc247dcfb6f99338035d8245a2cee" + integrity sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA== + +v8flags@^2.0.10: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-2.1.1.tgz#aab1a1fa30d45f88dd321148875ac02c0b55e5b4" + integrity sha1-qrGh+jDUX4jdMhFIh1rALAtV5bQ= + dependencies: + user-home "^1.1.1" + +v8flags@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/v8flags/-/v8flags-3.2.0.tgz#b243e3b4dfd731fa774e7492128109a0fe66d656" + integrity sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg== + dependencies: + homedir-polyfill "^1.0.1" + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +validate-npm-package-name@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz#5fa912d81eb7d0c74afc140de7317f0ca7df437e" + integrity sha1-X6kS2B630MdK/BQN5zF/DKffQ34= + dependencies: + builtins "^1.0.3" + +value-or-function@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/value-or-function/-/value-or-function-3.0.0.tgz#1c243a50b595c1be54a754bfece8563b9ff8d813" + integrity sha1-HCQ6ULWVwb5Up1S/7OhWO5/42BM= + +verb-cli@^0.7.4: + version "0.7.4" + resolved "https://registry.yarnpkg.com/verb-cli/-/verb-cli-0.7.4.tgz#a3dbbd77490dbaa61ab713e26baf8d245a42f071" + integrity sha1-o9u9d0kNuqYatxPia6+NJFpC8HE= + dependencies: + archy "^1.0.0" + chalk "^1.1.1" + liftoff "^2.1.0" + minimist "^1.1.3" + pretty-hrtime "^1.0.0" + resolve "^1.1.6" + tildify "^1.1.0" + v8flags "^2.0.10" + verb-default "^1.1.0" + verb-log "^0.2.0" + +verb-collections@^0.1.5: + version "0.1.5" + resolved "https://registry.yarnpkg.com/verb-collections/-/verb-collections-0.1.5.tgz#1528107d69046c0f3dc4dfe81b9361db8dd11ab6" + integrity sha1-FSgQfWkEbA89xN/oG5Nh243RGrY= + dependencies: + generate-collections "^0.3.7" + +verb-default@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/verb-default/-/verb-default-1.1.0.tgz#57e9619d2ace3e8fb27c6470b694787e7270dab8" + integrity sha1-V+lhnSrOPo+yfGRwtpR4fnJw2rg= + dependencies: + gulp-util "^3.0.4" + +verb-defaults@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/verb-defaults/-/verb-defaults-0.3.0.tgz#350fb6516e8723585b44e211f0f9e57764cf7961" + integrity sha1-NQ+2UW6HI1hbROIR8Pnld2TPeWE= + dependencies: + common-middleware "^0.4.1" + engine-base "^0.1.2" + is-valid-app "^0.2.0" + +verb-generate-readme@^0.8.0: + version "0.8.0" + resolved "https://registry.yarnpkg.com/verb-generate-readme/-/verb-generate-readme-0.8.0.tgz#6efed1b29649a53553ea516e8e11ec99faeb8470" + integrity sha512-C/pWBbZ5oKVM0qgD2Wt3MIOx2kAw4CVqTB27tALB5shbNk140gJBPE8N1K5uerzAmLtjZ4V93ig4KYFz/cQGZA== + dependencies: + arr-diff "^4.0.0" + assemble-handle "^0.1.4" + async-each "^1.0.1" + camel-case "^3.0.0" + debug "^3.1.0" + delete "^1.1.0" + engine-handlebars "^0.8.2" + format-people "^0.1.4" + get-value "^3.0.1" + gfm-code-blocks "^1.0.0" + git-branch "^2.0.1" + github-contributors "^0.4.1" + gulp-reflinks "^1.0.0" + has-value "^2.0.2" + is-valid-app "^0.3.0" + log-utils "^0.3.0" + markdown-toc "^1.2.0" + match-file "^1.0.0" + micromatch "^3.1.10" + mixin-deep "^2.0.0" + object.pick "^1.3.0" + sections "^1.0.0" + template-helpers "^0.6.7" + through2 "^2.0.3" + update-sections "^0.1.2" + verb-collections "^0.1.5" + verb-defaults "^0.3.0" + verb-repo-data "^0.1.15" + verb-repo-helpers "^1.0.0" + verb-toc "^0.2.9" + +verb-log@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/verb-log/-/verb-log-0.2.0.tgz#014c5ba0a57ddd22d7c1517e787d5c196c4eb379" + integrity sha1-AUxboKV93SLXwVF+eH1cGWxOs3k= + dependencies: + chalk "^1.0.0" + time-stamp "^0.1.0" + +verb-reflinks@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/verb-reflinks/-/verb-reflinks-1.0.0.tgz#e1a5b2ba07dd583ae6f139f25cd139f3da634d52" + integrity sha512-6WImUSK0AVmhBJw1ote49lH6amo3CXz8i86Lbc+mkCph1Up8tnYZJa84eJX8SqVk5gsH21zMF9k+63y3O+kZCw== + dependencies: + arr-diff "^4.0.0" + arr-union "^3.1.0" + array-unique "^0.3.2" + expand-reflinks "^0.2.1" + reflinks "^1.0.0" + validate-npm-package-name "^3.0.0" + +verb-repo-data@^0.1.15: + version "0.1.15" + resolved "https://registry.yarnpkg.com/verb-repo-data/-/verb-repo-data-0.1.15.tgz#fe435b7a0a9b14111cbbe911fe3164baea81eb4c" + integrity sha1-/kNbegqbFBEcu+kR/jFkuuqB60w= + dependencies: + base-data "^0.6.0" + camel-case "^3.0.0" + clone-deep "^0.2.4" + expand-pkg "^0.1.8" + fs-exists-sync "^0.1.0" + generate-data "^0.1.7" + is-valid-app "^0.2.1" + lazy-cache "^2.0.2" + mixin-deep "^1.1.3" + namify "^0.1.3" + repo-utils "^0.3.7" + +verb-repo-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/verb-repo-helpers/-/verb-repo-helpers-1.0.0.tgz#d15c4776a6d272e3f8c1c79f6d7716be662adb5a" + integrity sha512-k0DPeK9DSVotuUoBYb+ylmTOIms6l9d3cQGnj2VMZE9lHhkbpFSxCTx10mVhPmQ6NJfvNgK0jkmX7woDgG+LWQ== + dependencies: + format-people "^0.1.4" + get-pkg "^1.0.1" + get-value "^3.0.1" + github-contributors "^0.4.1" + helper-apidocs "^0.5.1" + helper-copyright "^2.1.2" + helper-date "^1.0.1" + helper-issue "^0.3.0" + helper-reflinks "^4.0.0" + helper-related "^1.0.0" + is-valid-app "^0.3.0" + mixin-deep "^1.3.1" + +verb-toc@^0.2.9: + version "0.2.9" + resolved "https://registry.yarnpkg.com/verb-toc/-/verb-toc-0.2.9.tgz#4d7ec16099e77412928b447981ab5ac48c006d21" + integrity sha1-TX7BYJnndBKSi0R5gataxIwAbSE= + dependencies: + extend-shallow "^2.0.1" + isobject "^3.0.0" + markdown-toc "^1.0.3" + +verb@^0.8.10: + version "0.8.10" + resolved "https://registry.yarnpkg.com/verb/-/verb-0.8.10.tgz#52a0803b883eea489a59288cf9452645b2676532" + integrity sha1-UqCAO4g+6kiaWSiM+UUmRbJnZTI= + dependencies: + ansi-bold "^0.1.1" + ansi-cyan "^0.1.1" + ansi-red "^0.1.1" + ansi-yellow "^0.1.1" + arr-union "^3.0.0" + async-helper-base "^0.2.0" + base-loader "^0.1.0" + chalk "^1.1.1" + composer "^0.4.0" + computed-property "^0.1.2" + cwd "^0.8.0" + data-store "^0.8.2" + diff "^2.0.2" + engine-lodash "^0.8.0" + event-stream "^3.3.1" + export-files "^2.1.0" + extend-shallow "^2.0.1" + get-value "^1.1.5" + gfm-code-blocks "^0.3.0" + git-user-name "^1.1.2" + globby "^2.1.0" + gulp-drafts "^0.2.0" + gulp-util "^3.0.6" + helper-changelog "^0.1.0" + helper-codelinks "^0.1.2" + helper-copyright "^1.4.0" + helper-coverage "^0.1.2" + helper-date "^0.2.2" + helper-license "^0.2.1" + helper-reflinks "^1.4.1" + helper-related "^0.10.0" + helper-resolve "^0.3.1" + helper-toc "^0.2.0" + init-file-loader "^0.1.1" + is-plain-object "^2.0.1" + is-true "^0.1.0" + js-comments "^0.5.4" + lint-templates "^0.1.2" + lodash "^3.10.1" + log-symbols "^1.0.2" + logging-helpers "^0.4.0" + markdown-toc "^0.11.5" + markdown-utils "^0.7.1" + micromatch "^2.2.0" + middleware-utils "^0.1.4" + parse-author "^0.2.0" + parse-copyright "^0.4.0" + parse-filepath "^0.6.3" + parse-github-url "^0.1.1" + parse-gitignore "^0.2.0" + parser-front-matter "^1.2.5" + plugin-error "^0.1.2" + pretty-remarkable "^0.1.8" + readme-badges "^0.3.3" + readme-includes "^0.2.9" + relative "^3.0.1" + relative-dest "^0.1.0" + remarkable "^1.6.0" + stringify-travis-url "^0.1.0" + template "^0.14.3" + template-helper-apidocs "^0.4.4" + template-helpers "^0.3.2" + template-toc "^0.3.3" + through2 "^2.0.0" + update-copyright "^0.1.0" + vinyl-fs "^1.0.0" + year "^0.2.1" + +vinyl-fs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-1.0.0.tgz#d15752e68c2dad74364e7e853473735354692edf" + integrity sha1-0VdS5owtrXQ2Tn6FNHNzU1RpLt8= + dependencies: + duplexify "^3.2.0" + glob-stream "^4.0.1" + glob-watcher "^0.0.8" + graceful-fs "^3.0.0" + merge-stream "^0.1.7" + mkdirp "^0.5.0" + object-assign "^2.0.0" + strip-bom "^1.0.0" + through2 "^0.6.1" + vinyl "^0.4.0" + +vinyl-fs@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/vinyl-fs/-/vinyl-fs-3.0.3.tgz#c85849405f67428feabbbd5c5dbdd64f47d31bc7" + integrity sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng== + dependencies: + fs-mkdirp-stream "^1.0.0" + glob-stream "^6.1.0" + graceful-fs "^4.0.0" + is-valid-glob "^1.0.0" + lazystream "^1.0.0" + lead "^1.0.0" + object.assign "^4.0.4" + pumpify "^1.3.5" + readable-stream "^2.3.3" + remove-bom-buffer "^3.0.0" + remove-bom-stream "^1.2.0" + resolve-options "^1.1.0" + through2 "^2.0.0" + to-through "^2.0.0" + value-or-function "^3.0.0" + vinyl "^2.0.0" + vinyl-sourcemap "^1.1.0" + +vinyl-item@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/vinyl-item/-/vinyl-item-1.0.0.tgz#e4188fab795154de9e74588eaad3df4ba5151692" + integrity sha1-5BiPq3lRVN6edFiOqtPfS6UVFpI= + dependencies: + base "^0.11.1" + base-option "^0.8.4" + base-plugins "^0.4.13" + clone "^2.1.0" + clone-stats "^1.0.0" + define-property "^0.2.5" + extend-shallow "^2.0.1" + isobject "^3.0.0" + lazy-cache "^2.0.2" + vinyl "^2.0.1" + +vinyl-sourcemap@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/vinyl-sourcemap/-/vinyl-sourcemap-1.1.0.tgz#92a800593a38703a8cdb11d8b300ad4be63b3e16" + integrity sha1-kqgAWTo4cDqM2xHYswCtS+Y7PhY= + dependencies: + append-buffer "^1.0.2" + convert-source-map "^1.5.0" + graceful-fs "^4.1.6" + normalize-path "^2.1.1" + now-and-later "^2.0.0" + remove-bom-buffer "^3.0.0" + vinyl "^2.0.0" + +vinyl-view@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/vinyl-view/-/vinyl-view-2.0.1.tgz#46a4d99fa8688bf37912868f912665a15b66816a" + integrity sha1-RqTZn6hoi/N5EoaPkSZloVtmgWo= + dependencies: + arr-union "^3.1.0" + define-property "^0.2.5" + engine-base "^0.1.2" + extend-shallow "^2.0.1" + isobject "^3.0.0" + lazy-cache "^2.0.2" + vinyl-item "^1.0.0" + +vinyl@^0.4.0, vinyl@^0.4.6: + version "0.4.6" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.4.6.tgz#2f356c87a550a255461f36bbeb2a5ba8bf784847" + integrity sha1-LzVsh6VQolVGHza76ypbqL94SEc= + dependencies: + clone "^0.2.0" + clone-stats "^0.0.1" + +vinyl@^0.5.0: + version "0.5.3" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-0.5.3.tgz#b0455b38fc5e0cf30d4325132e461970c2091cde" + integrity sha1-sEVbOPxeDPMNQyUTLkYZcMIJHN4= + dependencies: + clone "^1.0.0" + clone-stats "^0.0.1" + replace-ext "0.0.1" + +vinyl@^2.0.0, vinyl@^2.0.1, vinyl@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/vinyl/-/vinyl-2.2.1.tgz#23cfb8bbab5ece3803aa2c0a1eb28af7cbba1974" + integrity sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw== + dependencies: + clone "^2.1.1" + clone-buffer "^1.0.0" + clone-stats "^1.0.0" + cloneable-readable "^1.0.0" + remove-trailing-separator "^1.0.1" + replace-ext "^1.0.0" + +warning-symbol@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/warning-symbol/-/warning-symbol-0.1.0.tgz#bb31dd11b7a0f9d67ab2ed95f457b65825bbad21" + integrity sha1-uzHdEbeg+dZ6su2V9Fe2WCW7rSE= + +wcwidth@^1.0.0, wcwidth@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/wcwidth/-/wcwidth-1.0.1.tgz#f0b0dcf915bc5ff1528afadb2c0e17b532da2fe8" + integrity sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g= + dependencies: + defaults "^1.0.3" + +which-module@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" + integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= + +which@^1.2.12, which@^1.2.14, 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" + +which@^2.0.1: + version "2.0.2" + resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" + integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA== + dependencies: + isexe "^2.0.0" + +word-wrap@^1.1.0, word-wrap@^1.2.3: + version "1.2.3" + resolved "https://registry.yarnpkg.com/word-wrap/-/word-wrap-1.2.3.tgz#610636f6b1f703891bd34771ccb17fb93b47079c" + integrity sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ== + +wordwrap@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" + integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= + +workerpool@^6.5.1: + version "6.5.1" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.5.1.tgz#060f73b39d0caf97c6db64da004cd01b4c099544" + integrity sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA== + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +write-json@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/write-json/-/write-json-0.2.2.tgz#fa4e1529e9e763a4f92f07d9841317e3d248daf3" + integrity sha1-+k4VKennY6T5LwfZhBMX49JI2vM= + dependencies: + write "^0.2.1" + +write@^0.2.0, write@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/write/-/write-0.2.1.tgz#5fc03828e264cea3fe91455476f7a3c566cb0757" + integrity sha1-X8A4KOJkzqP+kUVUdvejxWbLB1c= + dependencies: + mkdirp "^0.5.1" + +"xtend@>=4.0.0 <4.1.0-0", xtend@~4.0.0, xtend@~4.0.1: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + +y18n@^3.2.1: + version "3.2.2" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" + integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== + +y18n@^5.0.5: + version "5.0.8" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" + integrity sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA== + +yallist@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== + +yargs-parser@^20.2.2, yargs-parser@^20.2.9: + version "20.2.9" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" + integrity sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w== + +yargs-parser@^5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-5.0.1.tgz#7ede329c1d8cdbbe209bd25cdb990e9b1ebbb394" + integrity sha512-wpav5XYiddjXxirPoCTUPbqM0PXvJ9hiBMvuJgInvo4/lAOTZzUprArw17q2O1P2+GHhbBr18/iQwjL5Z9BqfA== + dependencies: + camelcase "^3.0.0" + object.assign "^4.1.0" + +yargs-unparser@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/yargs-unparser/-/yargs-unparser-2.0.0.tgz#f131f9226911ae5d9ad38c432fe809366c2325eb" + integrity sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA== + dependencies: + camelcase "^6.0.0" + decamelize "^4.0.0" + flat "^5.0.2" + is-plain-obj "^2.1.0" + +yargs@^16.2.0: + version "16.2.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-16.2.0.tgz#1c82bf0f6b6a66eafce7ef30e376f49a12477f66" + integrity sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw== + dependencies: + cliui "^7.0.2" + escalade "^3.1.1" + get-caller-file "^2.0.5" + require-directory "^2.1.1" + string-width "^4.2.0" + y18n "^5.0.5" + yargs-parser "^20.2.2" + +yargs@^7.1.0: + version "7.1.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.2.tgz#63a0a5d42143879fdbb30370741374e0641d55db" + integrity sha512-ZEjj/dQYQy0Zx0lgLMLR8QuaqTihnxirir7EwUHp1Axq4e3+k8jXU5K0VLbNvedv1f4EWtBonDIZm0NUr+jCcA== + dependencies: + camelcase "^3.0.0" + cliui "^3.2.0" + decamelize "^1.1.1" + get-caller-file "^1.0.1" + os-locale "^1.4.0" + read-pkg-up "^1.0.1" + require-directory "^2.1.1" + require-main-filename "^1.0.1" + set-blocking "^2.0.0" + string-width "^1.0.2" + which-module "^1.0.0" + y18n "^3.2.1" + yargs-parser "^5.0.1" + +year@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/year/-/year-0.2.1.tgz#4083ae520a318b23ec86037f3000cb892bdf9bb0" + integrity sha1-QIOuUgoxiyPshgN/MADLiSvfm7A= + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==