From 43fec8de00f94477e1fd8c686361da9e21f0ddb5 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Sat, 30 Jan 2021 17:23:39 +0000 Subject: [PATCH 001/133] Starting to modify, removed lazy cache from array. --- README.md | 19 ++++--------------- lib/array.js | 28 +++++++++++++++------------- package.json | 2 +- 3 files changed, 20 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 7c708747..000509c7 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) +## Budibase 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. +*NOTE: This is a fork of the handlebars-helpers repo to prepare it for use with rollup as part of Budibase.* -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 ``` -## 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. @@ -3345,4 +3334,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/lib/array.js b/lib/array.js index 1e0fc527..617b1a25 100644 --- a/lib/array.js +++ b/lib/array.js @@ -1,8 +1,10 @@ 'use strict'; var util = require('handlebars-utils'); -var utils = require('./utils'); var helpers = module.exports; +const arraySort = require('array-sort'); +const getValue = require('get-value'); +const createFrame = require('create-frame'); /** * Returns all of the items in an array after the specified index. @@ -107,7 +109,7 @@ helpers.filter = function(array, value, options) { var prop = options.hash && (options.hash.property || options.hash.prop); if (prop) { results = array.filter(function(val) { - return value === utils.get(val, prop); + return value === getValue(val, prop); }); } else { @@ -141,7 +143,7 @@ helpers.filter = function(array, value, options) { helpers.first = function(array, n) { if (util.isUndefined(array)) return ''; - if (!utils.isNumber(n)) { + if (isNaN(n)) { return array[0]; } return array.slice(0, n); @@ -182,7 +184,7 @@ helpers.first = function(array, n) { */ helpers.forEach = function(array, options) { - var data = utils.createFrame(options, options.hash); + var data = createFrame(options, options.hash); var len = array.length; var buffer = ''; var i = -1; @@ -263,7 +265,7 @@ helpers.isArray = function(value) { helpers.itemAt = function(array, idx) { 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]; } @@ -350,7 +352,7 @@ helpers.last = function(value, n) { if (!Array.isArray(value) && typeof value !== 'string') { return ''; } - if (!utils.isNumber(n)) { + if (isNaN(n)) { return value[value.length - 1]; } return value.slice(-Math.abs(n)); @@ -446,7 +448,7 @@ 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); + var val = getValue(arr[i], prop); if (typeof val !== 'undefined') { res.push(val); } @@ -531,7 +533,7 @@ helpers.some = function(array, iter, options) { helpers.sort = function(array, options) { if (!Array.isArray(array)) return ''; - if (utils.get(options, 'hash.reverse')) { + if (getValue(options, 'hash.reverse')) { return array.sort().reverse(); } return array.sort(); @@ -563,7 +565,7 @@ helpers.sortBy = function(array, prop, options) { if (!util.isString(prop) && typeof prop !== 'function') { return array.sort(); } - return utils.sortBy.apply(null, args); + return arraySort.apply(null, args); }; /** @@ -771,7 +773,7 @@ helpers.withSort = function(array, prop, options) { options = prop; array = array.sort(); - if (utils.get(options, 'hash.reverse')) { + if (getValue(options, 'hash.reverse')) { array = array.reverse(); } @@ -782,12 +784,12 @@ helpers.withSort = function(array, prop, options) { } array.sort(function(a, b) { - a = utils.get(a, prop); - b = utils.get(b, prop); + a = getValue(a, prop); + b = getValue(b, prop); return a > b ? 1 : (a < b ? -1 : 0); }); - if (utils.get(options, 'hash.reverse')) { + if (getValue(options, 'hash.reverse')) { array = array.reverse(); } diff --git a/package.json b/package.json index b51f0d11..f530c5b3 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "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", From 418a73b4c887df8e81b542f46aefcd307954d89b Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Sat, 30 Jan 2021 23:37:56 +0000 Subject: [PATCH 002/133] Removing lazy-cache, removing the utils file that breaks rollup and replacing with standard requires everywhere. --- .travis.yml | 17 ----------------- .verb.md | 4 ---- appveyor.yml | 27 --------------------------- lib/code.js | 9 +++++---- lib/comparison.js | 12 +++++++----- lib/fs.js | 10 ++++++---- lib/html.js | 11 ++++++----- lib/i18n.js | 6 +++--- lib/match.js | 6 +++--- lib/math.js | 41 ++++++++++++++++++++--------------------- lib/misc.js | 4 ++-- lib/number.js | 18 ++++++++---------- lib/object.js | 19 +++++++++++-------- lib/path.js | 18 +++++++++--------- lib/regex.js | 6 +++--- lib/string.js | 46 +++++++++++++++++++++++----------------------- lib/utils/index.js | 27 ++++++++++----------------- lib/utils/utils.js | 41 ----------------------------------------- package.json | 1 - 19 files changed, 116 insertions(+), 207 deletions(-) delete mode 100644 .travis.yml delete mode 100644 appveyor.yml delete mode 100644 lib/utils/utils.js 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..3dd28282 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. 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/lib/code.js b/lib/code.js index b61111a1..e44173aa 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,7 +29,7 @@ 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'; }; /** @@ -43,7 +44,7 @@ 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'}); }; /** @@ -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/comparison.js b/lib/comparison.js index 0b404e9a..9cb82628 100644 --- a/lib/comparison.js +++ b/lib/comparison.js @@ -3,6 +3,8 @@ var has = require('has-value'); var util = require('handlebars-utils'); var utils = require('./utils'); +const falsey = require('falsey'); +const isEven = require('is-even'); var helpers = module.exports; /** @@ -272,7 +274,7 @@ helpers.has = function(value, pattern, options) { */ helpers.isFalsey = function(val, options) { - return util.value(utils.falsey(val), this, options); + return util.value(falsey(val), this, options); }; /** @@ -287,7 +289,7 @@ helpers.isFalsey = function(val, options) { */ helpers.isTruthy = function(val, options) { - return util.value(!utils.falsey(val), this, options); + return util.value(!falsey(val), this, options); }; /** @@ -308,7 +310,7 @@ helpers.isTruthy = function(val, options) { */ helpers.ifEven = function(num, options) { - return util.value(utils.isEven(num), this, options); + return util.value(isEven(num), this, options); }; /** @@ -325,7 +327,7 @@ helpers.ifEven = function(num, options) { */ 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); }; @@ -348,7 +350,7 @@ helpers.ifNth = function(a, b, options) { */ helpers.ifOdd = function(val, options) { - return util.value(!utils.isEven(val), this, options); + return util.value(!isEven(val), this, options); }; /** diff --git a/lib/fs.js b/lib/fs.js index 6c2d4fe7..fc9a3646 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -3,9 +3,11 @@ var fs = require('fs'); var path = require('path'); var util = require('handlebars-utils'); -var utils = require('./utils'); 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. @@ -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..4fd146a6 100644 --- a/lib/html.js +++ b/lib/html.js @@ -3,9 +3,10 @@ var path = require('path'); var util = require('handlebars-utils'); var html = require('./utils/html'); -var utils = require('./utils'); var parseAttr = html.parseAttributes; var helpers = module.exports; +const kindOf = require('kind-of'); +const htmlTag = require('html-tag'); /** * Stringify attributes on the options `hash`. @@ -87,20 +88,20 @@ helpers.css = function(list, options) { */ helpers.js = function(context) { - if (utils.typeOf(context) === 'object') { + if (kindOf(context) === 'object') { var attr = parseAttr(context.hash); return ''; } - if (utils.typeOf(context) === 'string') { + if (kindOf(context) === 'string') { return ''; } context = util.arrayify(context); return context.map(function(fp) { return (path.extname(fp) === '.coffee') - ? utils.tag('script', {type: 'text/coffeescript', src: fp}) - : utils.tag('script', {src: fp}); + ? htmlTag('script', {type: 'text/coffeescript', src: fp}) + : htmlTag('script', {src: fp}); }).join('\n'); }; diff --git a/lib/i18n.js b/lib/i18n.js index 0bdce9f3..36d6b280 100644 --- a/lib/i18n.js +++ b/lib/i18n.js @@ -1,8 +1,8 @@ 'use strict'; var util = require('handlebars-utils'); -var utils = require('./utils'); var helpers = module.exports; +const getValue = require('get-value'); /** * i18n helper. See [button-i18n](https://github.com/assemble/buttons) @@ -30,7 +30,7 @@ helpers.i18n = function(prop, locals, options) { var lang = context.language || context.lang; - if (!util.isString(lang)) { + if (typeof(lang) !== "string") { throw new TypeError('{{i18n}} helper expected "language" to be a string'); } @@ -39,7 +39,7 @@ helpers.i18n = function(prop, locals, options) { throw new Error('{{i18n}} helper cannot find language "' + lang + '"'); } - var result = utils.get(cache, prop); + var result = getValue(cache, prop); if (typeof result === 'undefined') { throw new Error('{{i18n}} helper cannot find property "' + prop + '" for language "' + lang + '"'); } diff --git a/lib/match.js b/lib/match.js index ee4a2267..f3e5a8c1 100644 --- a/lib/match.js +++ b/lib/match.js @@ -1,8 +1,8 @@ 'use strict'; var util = require('handlebars-utils'); -var utils = require('./utils'); var helpers = module.exports; +const micromatch = require('micromatch'); /** * Returns an array of strings that match the given glob pattern(s). @@ -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); }; /** @@ -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..5b66be1c 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; @@ -13,7 +12,7 @@ var helpers = module.exports; */ helpers.abs = function(num) { - if (!isNumber(num)) { + if (isNaN(num)) { throw new TypeError('expected a number'); } return Math.abs(num); @@ -29,7 +28,7 @@ helpers.abs = function(num) { */ 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') { @@ -67,7 +66,7 @@ helpers.avg = function() { */ helpers.ceil = function(num) { - if (!isNumber(num)) { + if (isNaN(num)) { throw new TypeError('expected a number'); } return Math.ceil(num); @@ -82,10 +81,10 @@ helpers.ceil = function(num) { */ 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); @@ -100,7 +99,7 @@ helpers.divide = function(a, b) { */ helpers.floor = function(num) { - if (!isNumber(num)) { + if (isNaN(num)) { throw new TypeError('expected a number'); } return Math.floor(num); @@ -116,10 +115,10 @@ helpers.floor = function(num) { */ 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); @@ -135,10 +134,10 @@ helpers.minus = function(a, b) { */ 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); @@ -155,10 +154,10 @@ helpers.modulo = function(a, b) { */ 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); @@ -173,10 +172,10 @@ helpers.multiply = function(a, b) { */ 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); @@ -192,10 +191,10 @@ helpers.plus = function(a, b) { */ 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); @@ -222,7 +221,7 @@ helpers.remainder = function(a, b) { */ helpers.round = function(num) { - if (!isNumber(num)) { + if (isNaN(num)) { throw new TypeError('expected a number'); } return Math.round(num); @@ -239,10 +238,10 @@ helpers.round = function(num) { */ 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); @@ -266,7 +265,7 @@ helpers.sum = function() { var sum = 0; while (len--) { - if (utils.isNumber(args[len])) { + if (!isNaN(args[len])) { sum += Number(args[len]); } } diff --git a/lib/misc.js b/lib/misc.js index 5cea6764..5e135287 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -1,8 +1,8 @@ 'use strict'; var util = require('handlebars-utils'); -var utils = require('./utils'); var helpers = module.exports; +const getValue = require('get-value'); /** * Block helper for exposing private `@` variables on the context @@ -24,7 +24,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); }; /** diff --git a/lib/number.js b/lib/number.js index 15fd16b7..3342d3e5 100644 --- a/lib/number.js +++ b/lib/number.js @@ -1,8 +1,6 @@ 'use strict'; -var isNumber = require('is-number'); var util = require('handlebars-utils'); -var utils = require('./utils'); var helpers = module.exports; /** @@ -24,12 +22,12 @@ var helpers = module.exports; 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; } @@ -90,7 +88,7 @@ helpers.phoneNumber = function(num) { */ helpers.toAbbr = function(number, precision) { - if (!utils.isNumber(number)) { + if (isNaN(number)) { number = 0; } if (util.isUndefined(precision)) { @@ -128,7 +126,7 @@ helpers.toAbbr = function(number, precision) { */ helpers.toExponential = function(number, digits) { - if (!utils.isNumber(number)) { + if (isNaN(number)) { number = 0; } if (util.isUndefined(digits)) { @@ -151,10 +149,10 @@ helpers.toExponential = function(number, digits) { */ 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); @@ -194,10 +192,10 @@ helpers.toInt = function(number) { */ 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..b4e0d879 100644 --- a/lib/object.js +++ b/lib/object.js @@ -3,8 +3,11 @@ var hasOwn = Object.hasOwnProperty; var util = require('handlebars-utils'); var array = require('./array'); -var utils = require('./utils/'); var helpers = module.exports; +const getValue = require('get-value'); +const kindOf = require('kind-of'); +const getObject = require('get-object'); +const createFrame = require('create-frame'); /** * Extend the context with the properties of other objects. @@ -57,7 +60,7 @@ 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) { @@ -83,7 +86,7 @@ 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) { @@ -126,7 +129,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 +150,7 @@ helpers.get = function(prop, context, options) { */ helpers.getObject = function(prop, context) { - return utils.getObject(context, prop); + return getObject(context, prop); }; /** @@ -181,7 +184,7 @@ helpers.hasOwn = function(context, key) { */ helpers.isObject = function(value) { - return utils.typeOf(value) === 'object'; + return kindOf(value) === 'object'; }; /** @@ -216,7 +219,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 +273,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..d2d6b0ca 100644 --- a/lib/path.js +++ b/lib/path.js @@ -2,7 +2,7 @@ var util = require('handlebars-utils'); var path = require('path'); -var utils = require('./utils'); +const relative = require('relative'); var helpers = module.exports; /** @@ -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,12 +58,12 @@ 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); }; /** @@ -80,7 +80,7 @@ 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); }; @@ -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)); }; @@ -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); }; @@ -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..26773688 100644 --- a/lib/regex.js +++ b/lib/regex.js @@ -1,8 +1,8 @@ 'use strict'; var util = require('handlebars-utils'); -var utils = require('./utils'); var helpers = module.exports; +const kindOf = require('kind-of'); /** * Convert the given string to a regular expression. @@ -40,10 +40,10 @@ helpers.toRegex = function(str, locals, options) { */ 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..022a2e87 100644 --- a/lib/string.js +++ b/lib/string.js @@ -39,7 +39,7 @@ helpers.append = function(str, suffix) { */ helpers.camelcase = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== "string") return ''; return utils.changecase(str, function(ch) { return ch.toUpperCase(); }); @@ -58,7 +58,7 @@ helpers.camelcase = function(str) { */ helpers.capitalize = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== "string") return ''; return str.charAt(0).toUpperCase() + str.slice(1); }; @@ -75,7 +75,7 @@ helpers.capitalize = function(str) { */ 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); @@ -93,7 +93,7 @@ helpers.capitalizeAll = function(str) { */ helpers.center = function(str, spaces) { - if (!util.isString(str)) return ''; + if (typeof(str) !== "string") return ''; var space = ''; var i = 0; while (i < spaces) { @@ -123,7 +123,7 @@ helpers.center = function(str, spaces) { */ helpers.chop = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== "string") return ''; return utils.chop(str); }; @@ -141,7 +141,7 @@ helpers.chop = function(str) { */ helpers.dashcase = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== "string") return ''; return utils.changecase(str, function(ch) { return '-' + ch; }); @@ -160,7 +160,7 @@ helpers.dashcase = function(str) { */ helpers.dotcase = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== "string") return ''; return utils.changecase(str, function(ch) { return '.' + ch; }); @@ -221,7 +221,7 @@ helpers.ellipsis = function(str, limit) { */ helpers.hyphenate = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== "string") return ''; return str.split(' ').join('-'); }; @@ -257,7 +257,7 @@ 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(); }; @@ -276,7 +276,7 @@ helpers.lowercase = function(str) { */ 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; @@ -301,7 +301,7 @@ helpers.occurrences = function(str, substring) { */ helpers.pascalcase = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== "string") return ''; str = utils.changecase(str, function(ch) { return ch.toUpperCase(); }); @@ -321,7 +321,7 @@ helpers.pascalcase = function(str) { */ helpers.pathcase = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== "string") return ''; return utils.changecase(str, function(ch) { return '/' + ch; }); @@ -341,7 +341,7 @@ helpers.pathcase = function(str) { */ 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('+'); }; @@ -411,7 +411,7 @@ helpers.raw = function(options) { */ 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(''); }; @@ -430,7 +430,7 @@ helpers.remove = function(str, ch) { */ 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, ''); }; @@ -450,7 +450,7 @@ helpers.removeFirst = function(str, ch) { */ 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); @@ -471,7 +471,7 @@ helpers.replace = function(str, 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); @@ -490,7 +490,7 @@ helpers.replaceFirst = function(str, a, b) { */ helpers.reverse = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== "string") return ''; return str.split('').reverse().join(''); }; @@ -507,7 +507,7 @@ helpers.reverse = function(str) { */ 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(); }); @@ -526,7 +526,7 @@ helpers.sentence = function(str) { */ helpers.snakecase = function(str) { - if (!util.isString(str)) return ''; + if (typeof(str) !== "string") return ''; return utils.changecase(str, function(ch) { return '_' + ch; }); @@ -545,7 +545,7 @@ helpers.snakecase = function(str) { */ helpers.split = function(str, ch) { - if (!util.isString(str)) return ''; + if (typeof(str) !== "string") return ''; if (!util.isString(ch)) ch = ','; return str.split(ch); }; @@ -594,7 +594,7 @@ helpers.startsWith = function(prefix, str, options) { */ 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; @@ -764,6 +764,6 @@ 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(); }; diff --git a/lib/utils/index.js b/lib/utils/index.js index 6f978198..d67365a6 100644 --- a/lib/utils/index.js +++ b/lib/utils/index.js @@ -1,7 +1,6 @@ 'use strict'; -var util = require('handlebars-utils'); -var utils = require('./utils'); +const util = require('handlebars-utils'); /** * Returns true if the given value contains the given @@ -13,8 +12,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 +27,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 +50,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 = util.identity; } var re = /[-_.\W\s]+(\w|$)/g; @@ -77,12 +76,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/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/package.json b/package.json index f530c5b3..096cceb2 100644 --- a/package.json +++ b/package.json @@ -92,7 +92,6 @@ "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", From 203803ad0668887751559f567893e6aff0fcb581 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Sun, 31 Jan 2021 11:41:35 +0000 Subject: [PATCH 003/133] Updating package so that action runs to test and publish package on any push/PR to master. --- .github/stale.yml | 18 ++++++++++++++++ .github/workflows/helpers_ci.yml | 35 ++++++++++++++++++++++++++++++++ package.json | 5 +++-- 3 files changed, 56 insertions(+), 2 deletions(-) create mode 100644 .github/stale.yml create mode 100644 .github/workflows/helpers_ci.yml 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..cb46aeb1 --- /dev/null +++ b/.github/workflows/helpers_ci.yml @@ -0,0 +1,35 @@ +name: Handlebars-helpers CI + +on: + # Trigger the workflow on push or pull request, + # but only for the master branch + push: + branches: + - master + pull_request: + branches: + - master + +jobs: + build: + runs-on: ubuntu-latest + + strategy: + matrix: + node-version: [12.x] + + steps: + - uses: actions/checkout@v2 + + - name: Use Node.js ${{ matrix.node-version }} + uses: actions/setup-node@v1 + with: + node-version: ${{ matrix.node-version }} + - run: yarn + - run: yarn test + env: + CI: true + name: Handlebars-helpers CI + - uses: JS-DevTools/npm-publish@v1 + with: + token: ${{ secrets.NPM_TOKEN }} diff --git a/package.json b/package.json index 096cceb2..8a6ae8ce 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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", + "version": "0.11.0", "homepage": "https://github.com/helpers/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ @@ -52,7 +52,8 @@ "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": { From e7c22bfe2180ebbb95af4f207c0d160bd38f1e84 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Mon, 1 Feb 2021 11:18:02 +0000 Subject: [PATCH 004/133] Removing use of create-frame as this also made use of lazy cache. --- lib/array.js | 2 +- lib/misc.js | 17 ++++++++++++++++- lib/object.js | 2 +- lib/utils/createFrame.js | 33 +++++++++++++++++++++++++++++++++ package.json | 3 +-- 5 files changed, 52 insertions(+), 5 deletions(-) create mode 100644 lib/utils/createFrame.js diff --git a/lib/array.js b/lib/array.js index 617b1a25..2256553b 100644 --- a/lib/array.js +++ b/lib/array.js @@ -4,7 +4,7 @@ var util = require('handlebars-utils'); var helpers = module.exports; const arraySort = require('array-sort'); const getValue = require('get-value'); -const createFrame = require('create-frame'); +const createFrame = require('./utils/createFrame'); /** * Returns all of the items in an array after the specified index. diff --git a/lib/misc.js b/lib/misc.js index 5e135287..07cfaafa 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -3,12 +3,27 @@ var util = require('handlebars-utils'); 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`. diff --git a/lib/object.js b/lib/object.js index b4e0d879..ac75aba8 100644 --- a/lib/object.js +++ b/lib/object.js @@ -7,7 +7,7 @@ var helpers = module.exports; const getValue = require('get-value'); const kindOf = require('kind-of'); const getObject = require('get-object'); -const createFrame = require('create-frame'); +const createFrame = require('./utils/createFrame'); /** * Extend the context with the properties of other objects. diff --git a/lib/utils/createFrame.js b/lib/utils/createFrame.js new file mode 100644 index 00000000..df7f4113 --- /dev/null +++ b/lib/utils/createFrame.js @@ -0,0 +1,33 @@ +/*! + * create-frame + * + * Copyright (c) 2015, Jon Schlinkert. + * Licensed under the MIT License. + */ + +'use strict'; + +const define = require('define-property'); +const extend = require('extend-shallow'); + +module.exports = function createFrame(data) { + if (typeof (data) !== "object") { + throw new TypeError('createFrame expects data to be an object'); + } + + var frame = extend({}, data); + frame._parent = data; + + define(frame, 'extend', function(data) { + extend(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/package.json b/package.json index 8a6ae8ce..cd95a5c6 100644 --- a/package.json +++ b/package.json @@ -74,15 +74,14 @@ "dependencies": { "arr-flatten": "^1.1.0", "array-sort": "^0.1.4", - "create-frame": "^1.0.0", "define-property": "^1.0.0", + "extend-shallow": "^3.0.2", "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", From f12af59df048c2af48a5688fca489611b7ce27a7 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Mon, 1 Feb 2021 11:20:05 +0000 Subject: [PATCH 005/133] Incrementing version. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cd95a5c6..7bc19b56 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.11.0", + "version": "0.11.1", "homepage": "https://github.com/helpers/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ From a9d3dba7557761b70d64499556eee3372faaf275 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 2 Feb 2021 14:36:07 +0000 Subject: [PATCH 006/133] array examples --- lib/array.js | 30 ++++++++++++++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/lib/array.js b/lib/array.js index 2256553b..57efdb27 100644 --- a/lib/array.js +++ b/lib/array.js @@ -19,6 +19,7 @@ const createFrame = require('./utils/createFrame'); * @param {Number} `n` Starting index (number of items to exclude) * @return {Array} Array exluding `n` items. * @api public + * @example {{ after [1, 2, 3] 1}} -> [3] */ helpers.after = function(array, n) { @@ -36,6 +37,7 @@ helpers.after = function(array, n) { * @param {any} `value` * @return {Array} * @api public + * @example {{ arrayify "foo" }} -> ["foo"] */ helpers.arrayify = function(value) { @@ -55,6 +57,7 @@ helpers.arrayify = function(value) { * @param {Number} `n` * @return {Array} Array excluding items after the given number. * @api public + * @example {{ before [1, 2, 3] 2}} -> [1, 2] */ helpers.before = function(array, n) { @@ -74,6 +77,7 @@ helpers.before = function(array, n) { * @return {String} * @block * @api public + * @example {{#eachIndex [1, 2, 3]}} {{item}} is {{index}} {{/eachIndex}} */ helpers.eachIndex = function(array, options) { @@ -99,6 +103,7 @@ helpers.eachIndex = function(array, options) { * @return {String} * @block * @api public + * @example {{#filter [1, 2, 3] 2}}2 Found{{else}}2 not found{{/filter}} */ helpers.filter = function(array, value, options) { @@ -139,6 +144,7 @@ helpers.filter = function(array, value, options) { * @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) { @@ -181,6 +187,7 @@ helpers.first = function(array, n) { * @return {String} * @block * @api public + * @example {{#forEach [{ 'name': 'John' }] }} {{ name }} {{/forEach}} */ helpers.forEach = function(array, options) { @@ -221,6 +228,7 @@ 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) { @@ -241,6 +249,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) { @@ -260,6 +269,7 @@ helpers.isArray = function(value) { * @return {any} `value` * @block * @api public + * @example {{itemAt [1, 2, 3] 1}} -> 2 */ helpers.itemAt = function(array, idx) { @@ -291,6 +301,7 @@ 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) { @@ -310,6 +321,7 @@ helpers.join = function(array, separator) { * @return {String} * @block * @api public + * @example {{equalsLength [1, 2, 3] 3}} -> true */ helpers.equalsLength = function(value, length, options) { @@ -346,6 +358,7 @@ 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) { @@ -376,6 +389,7 @@ 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) { @@ -411,6 +425,7 @@ helpers.lengthEqual = helpers.equalsLength; * @param {Function} `fn` * @return {String} * @api public + * @example {{map [1, 2, 3] double}} -> [2, 4, 6] */ helpers.map = function(array, iter) { @@ -442,6 +457,7 @@ helpers.map = function(array, iter) { * @param {Function} `prop` * @return {String} * @api public + * @example {{pluck [{ 'name': 'Bob' }] "name" }} -> ['Bob'] */ helpers.pluck = function(arr, prop) { @@ -470,6 +486,7 @@ 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) { @@ -501,6 +518,7 @@ 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) { @@ -529,6 +547,7 @@ helpers.some = function(array, iter, options) { * @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) { @@ -554,6 +573,7 @@ helpers.sort = function(array, options) { * @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) { @@ -585,6 +605,7 @@ helpers.sortBy = function(array, prop, options) { * @return {Array} * @block * @api public + * @example {{ withAfter [1, 2, 3] 1 }} {{this}} {{/withAfter}} */ helpers.withAfter = function(array, idx, options) { @@ -615,6 +636,7 @@ helpers.withAfter = function(array, idx, options) { * @return {Array} * @block * @api public + * @example {{ withBefore [1, 2, 3] 2 }} {{this}} {{/withBefore}} */ helpers.withBefore = function(array, idx, options) { @@ -645,6 +667,7 @@ helpers.withBefore = function(array, idx, options) { * @return {String} * @block * @api public + * @example {{ withFirst [1, 2, 3] }} {{this}} {{/withFirst}} */ helpers.withFirst = function(array, idx, options) { @@ -689,7 +712,8 @@ helpers.withFirst = function(array, idx, options) { * @return {String} * @block * @api public - */ + * @example {{#withGroup [1, 2, 3, 4] 2}} {{#each this}} {{.}} {{each}}
{{/withGroup}} -> 1,2
3,4
+ * */ helpers.withGroup = function(array, size, options) { var result = ''; @@ -723,7 +747,7 @@ 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) { @@ -763,6 +787,7 @@ helpers.withLast = function(array, idx, options) { * @return {String} * @block * @api public + * @example {{#withSort ['b', 'a', 'c']}} {{this}} {{/withSort}} -> abc */ helpers.withSort = function(array, prop, options) { @@ -813,6 +838,7 @@ helpers.withSort = function(array, prop, options) { * @param {Object} `options` * @return {Array} * @api public + * @example {{#each (unique ['a', 'a', 'c', 'b', 'e', 'e']) }} {{.}} {{/each}} -> acbe */ helpers.unique = function(array, options) { From 5b6e5a91b35fa21e4423556c680ad964f2784ad4 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 2 Feb 2021 14:43:02 +0000 Subject: [PATCH 007/133] number done --- lib/number.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/number.js b/lib/number.js index 3342d3e5..21c7dae0 100644 --- a/lib/number.js +++ b/lib/number.js @@ -17,6 +17,7 @@ var helpers = module.exports; * @param {Number|String} `number` * @return {String} * @api public + * @example {{ bytes 1386 }} -> 1.4Kb */ helpers.bytes = function(number, precision, options) { @@ -54,6 +55,7 @@ helpers.bytes = function(number, precision, options) { * @param {Number} `num` * @return {Number} * @api public + * @example {{ addCommas 1000000 }} -> 1,000,000 */ helpers.addCommas = function(num) { @@ -67,6 +69,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) { @@ -85,6 +88,7 @@ helpers.phoneNumber = function(num) { * @param {Number} `precision` * @return {String} * @api public + * @example {{ toAbbr 10123 2 }} -> 10.12k */ helpers.toAbbr = function(number, precision) { @@ -123,6 +127,7 @@ 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 }} -> 101e+4 */ helpers.toExponential = function(number, digits) { @@ -146,6 +151,7 @@ helpers.toExponential = function(number, digits) { * @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) { @@ -189,6 +195,7 @@ helpers.toInt = function(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}} */ helpers.toPrecision = function(number, precision) { From 378d5540e2e68342940a0e9e9138895125f0982f Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 2 Feb 2021 14:50:31 +0000 Subject: [PATCH 008/133] maths --- lib/math.js | 17 +++++++++++++++++ lib/number.js | 2 ++ 2 files changed, 19 insertions(+) diff --git a/lib/math.js b/lib/math.js index 5b66be1c..3f1fa85c 100644 --- a/lib/math.js +++ b/lib/math.js @@ -9,6 +9,7 @@ var helpers = module.exports; * @param {Number} `a` * @return {Number} * @api public + * @example {{ abs 12012.1000 }} -> 12012.1 */ helpers.abs = function(num) { @@ -25,6 +26,7 @@ helpers.abs = function(num) { * @param {Number} `b` * @return {Number} * @api public + * @example {{ add 1 2 }} -> 3 */ helpers.add = function(a, b) { @@ -48,6 +50,7 @@ helpers.add = function(a, b) { * @param {Array} `array` Array of numbers to add up. * @return {Number} * @api public + * @example {{ avg [1,2,3,4,5] }} -> 3 */ helpers.avg = function() { @@ -63,6 +66,7 @@ helpers.avg = function() { * @param {Number} `value` * @return {Number} * @api public + * @example {{ ceil 1.2 }} -> 2 */ helpers.ceil = function(num) { @@ -78,6 +82,7 @@ helpers.ceil = function(num) { * @param {Number} `a` numerator * @param {Number} `b` denominator * @api public + * @example {{ divide 10 5 }} -> 2 */ helpers.divide = function(a, b) { @@ -96,6 +101,7 @@ helpers.divide = function(a, b) { * @param {Number} `value` * @return {Number} * @api public + * @example {{ floor 1.2 }} -> 1 */ helpers.floor = function(num) { @@ -112,6 +118,7 @@ helpers.floor = function(num) { * @param {Number} `b` * @alias subtract * @api public + * @example {{ minus 10 5 }} -> 5 */ helpers.minus = function(a, b) { @@ -131,6 +138,7 @@ helpers.minus = function(a, b) { * @param {Number} `b` * @return {Number} * @api public + * @example {{ modulo 10 5 }} -> 0 */ helpers.modulo = function(a, b) { @@ -151,6 +159,7 @@ helpers.modulo = function(a, b) { * @return {Number} * @alias times * @api public + * @example {{ product 10 5 }} -> 50 */ helpers.multiply = function(a, b) { @@ -169,6 +178,7 @@ 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) { @@ -188,6 +198,8 @@ helpers.plus = function(a, b) { * @param {Number} `max` * @return {String} * @api public + * @example {{ random 0 20 }} -> 10 + */ */ helpers.random = function(min, max) { @@ -206,6 +218,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) { @@ -218,6 +231,7 @@ helpers.remainder = function(a, b) { * @param {Number} `number` * @return {Number} * @api public + * @example {{ round 10.3 }} -> 10 */ helpers.round = function(num) { @@ -235,6 +249,7 @@ helpers.round = function(num) { * @return {Number} * @alias minus * @api public + * @example {{ subtract 10 5 }} -> 5 */ helpers.subtract = function(a, b) { @@ -257,6 +272,7 @@ helpers.subtract = function(a, b) { * @param {Array} `array` Array of numbers to add up. * @return {Number} * @api public + * @example {{ sum [1, 2, 3] }} -> 6 */ helpers.sum = function() { @@ -280,6 +296,7 @@ helpers.sum = function() { * @return {Number} * @alias multiply * @api public + * @example {{ times 10 5 }} -> 50 */ helpers.times = function() { diff --git a/lib/number.js b/lib/number.js index 21c7dae0..81d147d8 100644 --- a/lib/number.js +++ b/lib/number.js @@ -207,3 +207,5 @@ helpers.toPrecision = function(number, precision) { } return Number(number).toPrecision(precision); }; + +const COLLECTIONS = ["math", "url", "string", "comparison"] \ No newline at end of file From 965bd67fd85eed2484674e2ec9c3b66429b2e5cb Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 2 Feb 2021 15:09:06 +0000 Subject: [PATCH 009/133] url done --- lib/number.js | 2 -- lib/url.js | 7 +++++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/number.js b/lib/number.js index 81d147d8..21c7dae0 100644 --- a/lib/number.js +++ b/lib/number.js @@ -207,5 +207,3 @@ helpers.toPrecision = function(number, precision) { } return Number(number).toPrecision(precision); }; - -const COLLECTIONS = ["math", "url", "string", "comparison"] \ No newline at end of file diff --git a/lib/url.js b/lib/url.js index 110a8165..f1820a77 100644 --- a/lib/url.js +++ b/lib/url.js @@ -14,6 +14,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://myurl?Hello%20There */ helpers.encodeURI = function(str) { @@ -29,6 +30,7 @@ helpers.encodeURI = function(str) { * @param {String} `str` * @return {String} Escaped string. * @api public + * @example {{ escape "https://myurl?Hello+There" }} -> https://myurl?Hello%20There */ helpers.escape = function(str) { @@ -43,6 +45,7 @@ helpers.escape = function(str) { * @param {String} `str` * @return {String} * @api public + * @example {{ escape "https://myurl?Hello%20There" }} -> https://myurl?Hello+There */ helpers.decodeURI = function(str) { @@ -77,6 +80,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 +93,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 +106,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 +127,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) { From 7fbe93abd05fabb2a3eb3be1d7bef1d4d94c600c Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 2 Feb 2021 15:10:12 +0000 Subject: [PATCH 010/133] regex done --- lib/number.js | 2 ++ lib/regex.js | 2 ++ 2 files changed, 4 insertions(+) diff --git a/lib/number.js b/lib/number.js index 21c7dae0..febc8054 100644 --- a/lib/number.js +++ b/lib/number.js @@ -207,3 +207,5 @@ helpers.toPrecision = function(number, precision) { } return Number(number).toPrecision(precision); }; + +const COLLECTIONS = ["string", "comparison"] \ No newline at end of file diff --git a/lib/regex.js b/lib/regex.js index 26773688..313576b5 100644 --- a/lib/regex.js +++ b/lib/regex.js @@ -14,6 +14,7 @@ const kindOf = require('kind-of'); * @param {String} `str` * @return {RegExp} * @api public + * @example {{toRegex "foo"}} -> /foo/ */ helpers.toRegex = function(str, locals, options) { @@ -37,6 +38,7 @@ helpers.toRegex = function(str, locals, options) { * @param {String} `str` * @return {RegExp} * @api public + * @example {{test "foobar" (toRegex "foo")}} -> true */ helpers.test = function(str, regex) { From fb6205dc0c71b278847dee09d689cf071d0cac04 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 2 Feb 2021 15:32:15 +0000 Subject: [PATCH 011/133] string done --- lib/string.js | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/lib/string.js b/lib/string.js index 022a2e87..dead616e 100644 --- a/lib/string.js +++ b/lib/string.js @@ -17,6 +17,7 @@ var helpers = module.exports; * @param {String} `suffix` * @return {String} * @api public + * @example {{append "index" ".html"}} -> index.html */ helpers.append = function(str, suffix) { @@ -36,6 +37,7 @@ helpers.append = function(str, suffix) { * @param {String} `string` The string to camelcase. * @return {String} * @api public + * @example {{camelcase "foo bar baz"}} -> fooBarBaz */ helpers.camelcase = function(str) { @@ -55,6 +57,7 @@ helpers.camelcase = function(str) { * @param {String} `str` * @return {String} * @api public + * @example {{capitalize "foo bar baz"}} -> Foo bar baz */ helpers.capitalize = function(str) { @@ -72,6 +75,7 @@ helpers.capitalize = function(str) { * @param {String} `str` * @return {String} * @api public + * @example {{ capitalizeAll "foo bar baz"}} -> Foo Bar Baz */ helpers.capitalizeAll = function(str) { @@ -90,6 +94,7 @@ helpers.capitalizeAll = function(str) { * @param {String} `spaces` * @return {String} * @api public + * @example {{ center "test" 1}} -> " test " */ helpers.center = function(str, spaces) { @@ -120,6 +125,7 @@ helpers.center = function(str, spaces) { * @param {String} `string` The string to chop. * @return {String} * @api public + * @example {{ chop " ABC "}} -> "ABC" */ helpers.chop = function(str) { @@ -138,6 +144,7 @@ helpers.chop = function(str) { * @param {String} `string` * @return {String} * @api public + * @example {{dashcase "a-b-c d_e"}} -> a-b-c-d-e */ helpers.dashcase = function(str) { @@ -157,6 +164,7 @@ helpers.dashcase = function(str) { * @param {String} `string` * @return {String} * @api public + * @example {{dotcase "a-b-c d_e"}} -> a.b.c.d.e */ helpers.dotcase = function(str) { @@ -177,6 +185,8 @@ helpers.dotcase = function(str) { * @return {String} * @alias lowercase * @api public + * @example {{downcase "aBcDeF"}} -> abcdef + */ helpers.downcase = function() { @@ -197,6 +207,7 @@ helpers.downcase = function() { * @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) { @@ -218,6 +229,7 @@ helpers.ellipsis = function(str, limit) { * @param {String} `str` * @return {String} * @api public + * @example {{hyphenate "foo bar baz qux"}} -> foo-bar-baz-qux */ helpers.hyphenate = function(str) { @@ -235,6 +247,7 @@ helpers.hyphenate = function(str) { * @param {String} `value` * @return {Boolean} * @api public + * @example {{isString "foo"}} -> true */ helpers.isString = function(value) { @@ -251,6 +264,7 @@ helpers.isString = function(value) { * @param {String} `str` * @return {String} * @api public + * @example {{lowercase "Foo BAR baZ"}} -> foo bar baz */ helpers.lowercase = function(str) { @@ -273,6 +287,7 @@ helpers.lowercase = function(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) { @@ -298,6 +313,7 @@ helpers.occurrences = function(str, substring) { * @param {String} `string` * @return {String} * @api public + * @example {{pascalcase "foo bar baz"}} -> FooBarBaz */ helpers.pascalcase = function(str) { @@ -318,6 +334,7 @@ helpers.pascalcase = function(str) { * @param {String} `string` * @return {String} * @api public + * @example {{pathcase "a-b-c d_e"}} -> a/b/c/d/e */ helpers.pathcase = function(str) { @@ -338,6 +355,7 @@ helpers.pathcase = function(str) { * @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) { @@ -358,6 +376,7 @@ helpers.plusify = function(str, ch) { * @param {String} `prefix` * @return {String} * @api public + * @example {{prepend "bar" "foo-"}} -> foo-bar */ helpers.prepend = function(str, prefix) { @@ -380,6 +399,7 @@ helpers.prepend = function(str, prefix) { * @return {String} * @block * @api public + * @example {{{{#raw}}}} {{foo}} {{{{/raw}}}} -> {{foo}} */ helpers.raw = function(options) { @@ -408,6 +428,7 @@ helpers.raw = function(options) { * @param {String} `substring` * @return {String} * @api public + * @example {{remove "a b a b a b" "a "}} -> b b b */ helpers.remove = function(str, ch) { @@ -427,6 +448,7 @@ helpers.remove = function(str, ch) { * @param {String} `substring` * @return {String} * @api public + * @example {{remove "a b a b a b" "a"}} -> b a b a b */ helpers.removeFirst = function(str, ch) { @@ -447,6 +469,7 @@ 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) { @@ -468,6 +491,7 @@ helpers.replace = function(str, a, b) { * @param {String} `b` * @return {String} * @api public + * @example {{replace "a b a b a b" "a" "z"}} -> z b a b a b */ helpers.replaceFirst = function(str, a, b) { @@ -487,6 +511,7 @@ helpers.replaceFirst = function(str, a, b) { * @param {String} `str` * @return {String} * @api public + * @example {{reverse "abcde"}} -> edcba */ helpers.reverse = function(str) { @@ -504,6 +529,7 @@ helpers.reverse = function(str) { * @param {String} `str` * @return {String} * @api public + * @example {{sentence "hello world. goodbye world."}} -> Hello world. Goodbye world. */ helpers.sentence = function(str) { @@ -523,6 +549,7 @@ helpers.sentence = function(str) { * @param {String} `string` * @return {String} * @api public + * @example {{snakecase "a-b-c d_e"}} -> a_b_c_d_e */ helpers.snakecase = function(str) { @@ -542,6 +569,7 @@ helpers.snakecase = function(str) { * @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) { @@ -567,6 +595,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) { @@ -591,6 +620,7 @@ helpers.startsWith = function(prefix, str, options) { * @param {String} `str` * @return {String} * @api public + * @example {{#titleize "this is title case" }} -> This Is Title Case */ helpers.titleize = function(str) { @@ -618,6 +648,7 @@ helpers.titleize = function(str) { * @param {String} `string` The string to trim. * @return {String} * @api public + * @example {{trim " ABC " }} -> ABC */ helpers.trim = function(str) { @@ -634,6 +665,7 @@ helpers.trim = function(str) { * @param {String} `string` The string to trim. * @return {String} * @api public + * @example {{trimLeft " ABC " }} -> "ABC " */ helpers.trimLeft = function(str) { @@ -652,6 +684,7 @@ helpers.trimLeft = function(str) { * @param {String} `string` The string to trim. * @return {String} * @api public + * @example {{trimRight " ABC " }} -> " ABC " */ helpers.trimRight = function(str) { @@ -675,6 +708,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) { @@ -707,6 +741,7 @@ 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) { @@ -737,6 +772,7 @@ helpers.truncateWords = function(str, count, suffix) { * @return {String} * @alias uppercase * @api public + * @example {{upcase "aBcDef"}} -> ABCDEF */ helpers.upcase = function() { @@ -758,6 +794,7 @@ helpers.upcase = function() { * @return {String} * @block * @api public + * @example {{uppercase "aBcDef"}} -> ABCDEF */ helpers.uppercase = function(str) { From 2899de9093f6a09bf19dc4dc062a230e2f78ed20 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 2 Feb 2021 16:02:32 +0000 Subject: [PATCH 012/133] comparisons --- lib/comparison.js | 25 +++++++++++++++++++++++++ lib/number.js | 4 +--- 2 files changed, 26 insertions(+), 3 deletions(-) diff --git a/lib/comparison.js b/lib/comparison.js index 9cb82628..e7493034 100644 --- a/lib/comparison.js +++ b/lib/comparison.js @@ -24,6 +24,7 @@ var helpers = module.exports; * @return {String} * @block * @api public + * @example {{#and great magnificent}}both{{else}}no{{/and}} */ helpers.and = function() { @@ -54,6 +55,7 @@ helpers.and = function() { * @return {String} Block, or if specified the inverse block is rendered if falsey. * @block * @api public + * @example {{compare 10 "<" 5 }} -> true */ helpers.compare = function(a, operator, b, options) { @@ -121,6 +123,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}} */ helpers.contains = function(collection, value, startIndex, options) { @@ -140,6 +143,7 @@ helpers.contains = function(collection, value, startIndex, options) { * @return {String} * @alias .or * @api public + * @example {{default null null "default"}} -> default */ helpers.default = function() { @@ -162,6 +166,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) { @@ -185,6 +190,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) { @@ -209,6 +215,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) { @@ -229,6 +236,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) { @@ -271,6 +279,7 @@ helpers.has = function(value, pattern, options) { * @param {Options} `options` * @return {Boolean} * @api public + * @example {{isFalsey "" }} -> true */ helpers.isFalsey = function(val, options) { @@ -286,6 +295,7 @@ helpers.isFalsey = function(val, options) { * @param {Options} `options` * @return {Boolean} * @api public + * @example {{isTruthy "12" }} -> true */ helpers.isTruthy = function(val, options) { @@ -307,6 +317,7 @@ 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) { @@ -324,6 +335,7 @@ helpers.ifEven = function(num, options) { * @return {String} Block, or inverse block if specified and falsey. * @block * @api public + * @example {{#ifNth 10 2}} remainder {{else}} no remainder {{/ifNth}} -> remainder */ helpers.ifNth = function(a, b, options) { @@ -347,6 +359,7 @@ 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) { @@ -364,6 +377,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) { @@ -386,6 +400,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) { @@ -408,6 +423,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) { @@ -432,6 +448,7 @@ helpers.lt = function(a, b, options) { * @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) { @@ -453,6 +470,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) { @@ -467,6 +485,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) { @@ -489,6 +508,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 */) { @@ -515,6 +535,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) { @@ -535,6 +556,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) { @@ -555,6 +577,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) { @@ -575,6 +598,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) { @@ -595,6 +619,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/number.js b/lib/number.js index febc8054..bc09acb1 100644 --- a/lib/number.js +++ b/lib/number.js @@ -206,6 +206,4 @@ helpers.toPrecision = function(number, precision) { precision = 1; } return Number(number).toPrecision(precision); -}; - -const COLLECTIONS = ["string", "comparison"] \ No newline at end of file +}; \ No newline at end of file From db7c4fe20e5d5406164107d263fc36c6b55e3075 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 2 Feb 2021 16:04:35 +0000 Subject: [PATCH 013/133] fix comment --- lib/math.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/math.js b/lib/math.js index 3f1fa85c..08b5e128 100644 --- a/lib/math.js +++ b/lib/math.js @@ -200,7 +200,6 @@ helpers.plus = function(a, b) { * @api public * @example {{ random 0 20 }} -> 10 */ - */ helpers.random = function(min, max) { if (isNaN(min)) { From 63267d2c9d534e0bd3802904bf704a2b0e5f081c Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 2 Feb 2021 16:10:46 +0000 Subject: [PATCH 014/133] 0.11.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7bc19b56..2133863a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.11.1", + "version": "0.11.2", "homepage": "https://github.com/helpers/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ From 782aa90a90d3e6babb96ac92c42d5437f6496e63 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Tue, 2 Feb 2021 16:13:58 +0000 Subject: [PATCH 015/133] 0.11.3 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2133863a..afc82172 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.11.2", + "version": "0.11.3", "homepage": "https://github.com/helpers/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ From 7b010d7028e6987878bb4c09d3306b17f783e5c6 Mon Sep 17 00:00:00 2001 From: andrew Date: Sun, 16 May 2021 17:15:55 +1000 Subject: [PATCH 016/133] Updated most packages without breaking code or modifying tests. Updated linting and test to use package.json scripts. Added yarn lint and nodejs aray in github actions. --- .editorconfig | 14 - .eslintrc.json | 10 +- .github/workflows/helpers_ci.yml | 18 +- .gitignore | 1 - .mocharc.json | 4 + .verb.md | 5 - bower.json | 143 - gulpfile.js | 28 - lib/array.js | 414 +- lib/code.js | 4 +- lib/comparison.js | 28 +- lib/fs.js | 6 +- lib/html.js | 10 +- lib/i18n.js | 2 +- lib/inflection.js | 20 +- lib/markdown.js | 2 +- lib/match.js | 6 +- lib/math.js | 4 +- lib/misc.js | 12 +- lib/number.js | 8 +- lib/object.js | 6 +- lib/path.js | 20 +- lib/regex.js | 14 +- lib/string.js | 206 +- lib/url.js | 14 +- lib/utils/createFrame.js | 2 +- lib/utils/index.js | 4 +- package.json | 62 +- yarn.lock | 8758 ++++++++++++++++++++++++++++++ 29 files changed, 9247 insertions(+), 578 deletions(-) delete mode 100644 .editorconfig create mode 100644 .mocharc.json delete mode 100644 bower.json create mode 100644 yarn.lock 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/workflows/helpers_ci.yml b/.github/workflows/helpers_ci.yml index cb46aeb1..388b42a1 100644 --- a/.github/workflows/helpers_ci.yml +++ b/.github/workflows/helpers_ci.yml @@ -16,17 +16,27 @@ jobs: strategy: matrix: - node-version: [12.x] + node-version: [10.x, 12.x, 14.x, 16.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + + name: Run tests for NodeJS version ${{ matrix.node-version }} steps: - uses: actions/checkout@v2 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v1 + uses: actions/setup-node@v2 with: node-version: ${{ matrix.node-version }} - - run: yarn - - run: yarn test + + - name: Install dependencies + run: yarn install --frozen-lockfile # will run `yarn install --frozen-lockfile` command + + - name: Lint code + run: yarn lint + + - name: Run test against code + run: yarn test env: CI: true name: Handlebars-helpers CI 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/.verb.md b/.verb.md index 3dd28282..a1369ade 100644 --- a/.verb.md +++ b/.verb.md @@ -63,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/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/lib/array.js b/lib/array.js index 57efdb27..9fa86860 100644 --- a/lib/array.js +++ b/lib/array.js @@ -13,7 +13,7 @@ const createFrame = require('./utils/createFrame'); * ```handlebars * * {{after array 1}} - * + * * ``` * @param {Array} `array` Collection * @param {Number} `n` Starting index (number of items to exclude) @@ -24,23 +24,28 @@ const createFrame = require('./utils/createFrame'); 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"] + * @example {{ arrayify 'foo' }} -> ['foo'] */ helpers.arrayify = function(value) { + if (util.isUndefined(value)) return []; return value ? (Array.isArray(value) ? value : [value]) : []; }; @@ -51,7 +56,7 @@ helpers.arrayify = function(value) { * ```handlebars * * {{before array 2}} - * + * * ``` * @param {Array} `array` * @param {Number} `n` @@ -62,7 +67,11 @@ helpers.arrayify = function(value) { 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); + } + return ''; }; /** @@ -82,8 +91,12 @@ helpers.before = function(array, n) { 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; }; @@ -94,7 +107,7 @@ helpers.eachIndex = function(array, options) { * * ```handlebars * - * {{#filter array "foo"}}AAA{{else}}BBB{{/filter}} + * {{#filter array 'foo'}}AAA{{else}}BBB{{/filter}} * * ``` * @param {Array} `array` @@ -107,28 +120,33 @@ helpers.eachIndex = function(array, options) { */ 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 === getValue(val, prop); - }); - } else { + if (util.isUndefined(array)) return options.inverse(this); + array = util.result(array); + if (Array.isArray(array)) { - // filter on a string value - results = array.filter(function(v) { - return value === v; - }); - } + 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); }; @@ -137,8 +155,8 @@ 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`. @@ -148,11 +166,15 @@ helpers.filter = function(array, value, options) { */ helpers.first = function(array, n) { - if (util.isUndefined(array)) return ''; - if (isNaN(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 []; }; /** @@ -177,7 +199,7 @@ helpers.first = function(array, n) { * ] --> * * {{#forEach accounts}} - * + * * {{ name }} * {{#unless isLast}}, {{/unless}} * {{/forEach}} @@ -191,21 +213,26 @@ helpers.first = function(array, n) { */ helpers.forEach = function(array, options) { - 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}); + 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); }; /** @@ -215,7 +242,7 @@ helpers.forEach = function(array, options) { * * ```handlebars * - * {{#inArray array "d"}} + * {{#inArray array 'd'}} * foo * {{else}} * bar @@ -232,14 +259,19 @@ helpers.forEach = function(array, options) { */ 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'}} * * * @@ -273,6 +305,7 @@ helpers.isArray = function(value) { */ helpers.itemAt = function(array, idx) { + if (util.isUndefined(array)) return null; array = util.result(array); if (Array.isArray(array)) { idx = !isNaN(idx) ? +idx : 0; @@ -283,6 +316,7 @@ helpers.itemAt = function(array, idx) { return array[idx]; } } + return null; }; /** @@ -305,10 +339,14 @@ helpers.itemAt = function(array, idx) { */ 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 ''; }; /** @@ -361,21 +399,22 @@ helpers.equalsLength = function(value, length, options) { * @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 (isNaN(n)) { - return value[value.length - 1]; + 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']'}} * * * @@ -392,12 +431,13 @@ helpers.last = function(value, n) { * @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); } - if (typeof value === 'string' || Array.isArray(value)) { - return value.length; + if (typeof array === 'string' || Array.isArray(array)) { + return array.length; } return 0; }; @@ -415,10 +455,10 @@ helpers.lengthEqual = helpers.equalsLength; * element of the given `array`. For example, * * ```handlebars - * * {{map array double}} - * + * * ``` * * @param {Array} `array` @@ -429,6 +469,7 @@ helpers.lengthEqual = helpers.equalsLength; */ helpers.map = function(array, iter) { + if (util.isUndefined(array)) return ''; if (!Array.isArray(array)) return ''; var len = array.length; var res = new Array(len); @@ -450,26 +491,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'] + * @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 = getValue(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 ''; }; /** @@ -489,14 +534,17 @@ helpers.pluck = function(arr, prop) { * @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)) { + array.reverse(); + return array; } - if (val && typeof val === 'string') { - return val.split('').reverse().join(''); + if (array && typeof array === 'string') { + return array.split('').reverse().join(''); } + return ''; }; /** @@ -522,6 +570,8 @@ helpers.reverse = function(val) { */ 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)) { @@ -541,7 +591,7 @@ helpers.some = function(array, iter, options) { * ```handlebars * * {{sort array}} - * + * * ``` * * @param {Array} `array` the array to sort. @@ -551,11 +601,15 @@ helpers.some = function(array, iter, options) { */ helpers.sort = function(array, options) { - if (!Array.isArray(array)) return ''; - if (getValue(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 ''; }; /** @@ -566,26 +620,30 @@ 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"}] + * @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 (!util.isString(prop) && typeof prop !== 'function') { + return array.sort(); + } + return arraySort.apply(null, args); } - return arraySort.apply(null, args); + return ''; }; /** @@ -597,7 +655,7 @@ helpers.sortBy = function(array, prop, options) { * {{#withAfter array 3}} * {{this}} * {{/withAfter}} - * + * * ``` * @param {Array} `array` * @param {Number} `idx` @@ -609,14 +667,18 @@ helpers.sortBy = function(array, prop, options) { */ 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 ''; }; /** @@ -640,14 +702,18 @@ helpers.withAfter = function(array, idx, options) { */ 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 ''; }; /** @@ -673,22 +739,24 @@ helpers.withBefore = function(array, idx, options) { 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 ''; }; /** @@ -707,7 +775,7 @@ 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 @@ -716,7 +784,9 @@ helpers.withFirst = function(array, idx, options) { * */ 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++) { @@ -753,23 +823,25 @@ helpers.withGroup = function(array, size, options) { 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 ''; }; /** @@ -783,7 +855,7 @@ 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 @@ -792,37 +864,41 @@ helpers.withLast = function(array, idx, options) { 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; + + 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]); + } + return result; + } - if (util.isUndefined(prop)) { - options = prop; + array.sort(function(a, b) { + a = getValue(a, prop); + b = getValue(b, prop); + return a > b ? 1 : (a < b ? -1 : 0); + }); - 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]); + var alen = array.length, j = -1; + while (++j < alen) { + result += options.fn(array[j]); } return result; } - - array.sort(function(a, b) { - a = getValue(a, prop); - b = getValue(b, prop); - return a > b ? 1 : (a < b ? -1 : 0); - }); - - if (getValue(options, 'hash.reverse')) { - array = array.reverse(); - } - - var alen = array.length, j = -1; - while (++j < alen) { - result += options.fn(array[j]); - } - return result; + return ''; }; /** @@ -844,7 +920,11 @@ helpers.withSort = function(array, prop, options) { 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 e44173aa..d665c03b 100644 --- a/lib/code.js +++ b/lib/code.js @@ -36,7 +36,7 @@ helpers.embed = function embed(filepath, ext) { * Embed a GitHub Gist using only the id of the Gist * * ```handlebars - * {{gist "12345"}} + * {{gist '12345'}} * ``` * @param {String} `id` * @return {String} @@ -51,7 +51,7 @@ helpers.gist = function(id) { * 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} diff --git a/lib/comparison.js b/lib/comparison.js index e7493034..7916e7d5 100644 --- a/lib/comparison.js +++ b/lib/comparison.js @@ -49,13 +49,13 @@ 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 * @api public - * @example {{compare 10 "<" 5 }} -> true + * @example {{compare 10 '<' 5 }} -> true */ helpers.compare = function(a, operator, b, options) { @@ -111,7 +111,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. @@ -123,7 +123,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}} + * @example {{#contains ['a', 'b', 'c'] 'd'}} This will not be rendered. {{else}} This will be rendered. {{/contains}} */ helpers.contains = function(collection, value, startIndex, options) { @@ -136,14 +136,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 + * @example {{default null null 'default'}} -> default */ helpers.default = function() { @@ -156,7 +156,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` @@ -181,7 +181,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` @@ -206,7 +206,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` @@ -236,7 +236,7 @@ helpers.gte = function(a, b, options) { * @return {String} * @block * @api public - * @example {{#has "foobar" "foo"}} has it{{else}} doesn't{{/has}} -> has it + * @example {{#has 'foobar' 'foo'}} has it{{else}} doesn't{{/has}} -> has it */ helpers.has = function(value, pattern, options) { @@ -279,7 +279,7 @@ helpers.has = function(value, pattern, options) { * @param {Options} `options` * @return {Boolean} * @api public - * @example {{isFalsey "" }} -> true + * @example {{isFalsey '' }} -> true */ helpers.isFalsey = function(val, options) { @@ -295,7 +295,7 @@ helpers.isFalsey = function(val, options) { * @param {Options} `options` * @return {Boolean} * @api public - * @example {{isTruthy "12" }} -> true + * @example {{isTruthy '12' }} -> true */ helpers.isTruthy = function(val, options) { @@ -415,7 +415,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` @@ -439,7 +439,7 @@ 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` diff --git a/lib/fs.js b/lib/fs.js index fc9a3646..4f6c1083 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -17,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} diff --git a/lib/html.js b/lib/html.js index 4fd146a6..291fed16 100644 --- a/lib/html.js +++ b/lib/html.js @@ -15,7 +15,7 @@ const htmlTag = require('html-tag'); * * * - * {{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/markdown.js b/lib/markdown.js index 27888d4f..0b589133 100644 --- a/lib/markdown.js +++ b/lib/markdown.js @@ -43,7 +43,7 @@ Object.defineProperty(helpers, 'markdown', { * converting it to HTML. * * ```handlebars - * {{md "foo/bar.md"}} + * {{md 'foo/bar.md'}} * ``` * @param {Object} `context` * @param {Object} `options` diff --git a/lib/match.js b/lib/match.js index f3e5a8c1..970b107f 100644 --- a/lib/match.js +++ b/lib/match.js @@ -9,8 +9,8 @@ const micromatch = require('micromatch'); * 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. @@ -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'}} * * ``` * diff --git a/lib/math.js b/lib/math.js index 08b5e128..a0f01e04 100644 --- a/lib/math.js +++ b/lib/math.js @@ -43,7 +43,7 @@ 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]'}} * * ``` * @@ -265,7 +265,7 @@ 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. diff --git a/lib/misc.js b/lib/misc.js index 07cfaafa..906a932a 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -3,20 +3,20 @@ var util = require('handlebars-utils'); var helpers = module.exports; const getValue = require('get-value'); -const createFrame = require('./utils/createFrame') +const createFrame = require('./utils/createFrame'); /** * Block helper for exposing private `@` variables on the context */ helpers.frame = function(context, options) { - if (typeof(context) === "object" && context.hash) { + if (typeof(context) === 'object' && context.hash) { options = context; context = options.data; } var frame = createFrame(context); - if (typeof(options) !== "object") { + if (typeof(options) !== 'object') { options = {}; } @@ -30,7 +30,7 @@ helpers.frame = function(context, options) { * * ```handlebars * - * {{option "a.b.c"}} + * {{option 'a.b.c'}} * * ``` * @param {String} `prop` @@ -61,9 +61,9 @@ helpers.noop = function(options) { * ```handlebars * {{typeOf 1}} * //=> 'number' - * {{typeOf "1"}} + * {{typeOf '1'}} * //=> 'string' - * {{typeOf "foo"}} + * {{typeOf 'foo'}} * //=> 'string' * ``` * @param {any} `value` diff --git a/lib/number.js b/lib/number.js index bc09acb1..5bc70a41 100644 --- a/lib/number.js +++ b/lib/number.js @@ -144,7 +144,7 @@ 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` @@ -188,14 +188,14 @@ 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}} + * @example {{toPrecision '1.1234' 2}} */ helpers.toPrecision = function(number, precision) { @@ -206,4 +206,4 @@ helpers.toPrecision = function(number, precision) { precision = 1; } return Number(number).toPrecision(precision); -}; \ No newline at end of file +}; diff --git a/lib/object.js b/lib/object.js index ac75aba8..32cbca40 100644 --- a/lib/object.js +++ b/lib/object.js @@ -175,7 +175,7 @@ helpers.hasOwn = function(context, key) { * Return true if `value` is an object. * * ```handlebars - * {{isObject "foo"}} + * {{isObject 'foo'}} * //=> false * ``` * @param {String} `value` @@ -191,7 +191,7 @@ helpers.isObject = function(value) { * Parses the given string using `JSON.parse`. * * ```handlebars - * + * * {{JSONparse string}} * * ``` @@ -211,7 +211,7 @@ helpers.JSONparse = function(str, options) { * ```handlebars * * {{JSONstringify object}} - * + * * ``` * @param {Object} `obj` Object to stringify * @return {String} diff --git a/lib/path.js b/lib/path.js index d2d6b0ca..e9cfbea3 100644 --- a/lib/path.js +++ b/lib/path.js @@ -9,7 +9,7 @@ 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` @@ -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` @@ -70,7 +70,7 @@ helpers.relative = function(a, b) { * Get the file extension from the given `filepath`. * * ```handlebars - * {{basename "docs/toc.md"}} + * {{basename 'docs/toc.md'}} * * ``` * @param {String} `ext` @@ -86,10 +86,10 @@ helpers.basename = function(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` @@ -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` @@ -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'}} * * ``` * diff --git a/lib/regex.js b/lib/regex.js index 313576b5..9881973b 100644 --- a/lib/regex.js +++ b/lib/regex.js @@ -8,13 +8,13 @@ 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/ + * @example {{toRegex 'foo'}} -> /foo/ */ helpers.toRegex = function(str, locals, options) { @@ -28,21 +28,21 @@ 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 + * @example {{test 'foobar' (toRegex 'foo')}} -> true */ helpers.test = function(str, regex) { - if (typeof(str) !== "string") { + if (typeof(str) !== 'string') { return false; } if (kindOf(regex) !== 'regexp') { diff --git a/lib/string.js b/lib/string.js index dead616e..035506a7 100644 --- a/lib/string.js +++ b/lib/string.js @@ -9,15 +9,15 @@ var helpers = module.exports; * 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 + * @example {{append 'index' '.html'}} -> index.html */ helpers.append = function(str, suffix) { @@ -31,17 +31,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 + * @example {{camelcase 'foo bar baz'}} -> fooBarBaz */ helpers.camelcase = function(str) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; return utils.changecase(str, function(ch) { return ch.toUpperCase(); }); @@ -51,17 +51,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 + * @example {{capitalize 'foo bar baz'}} -> Foo bar baz */ helpers.capitalize = function(str) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; return str.charAt(0).toUpperCase() + str.slice(1); }; @@ -69,17 +69,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 + * @example {{ capitalizeAll 'foo bar baz'}} -> Foo Bar Baz */ helpers.capitalizeAll = function(str) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; if (util.isString(str)) { return str.replace(/\w\S*/g, function(word) { return helpers.capitalize(word); @@ -94,11 +94,11 @@ helpers.capitalizeAll = function(str) { * @param {String} `spaces` * @return {String} * @api public - * @example {{ center "test" 1}} -> " test " + * @example {{ center 'test' 1}} -> ' test ' */ helpers.center = function(str, spaces) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; var space = ''; var i = 0; while (i < spaces) { @@ -113,23 +113,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" + * @example {{ chop ' ABC '}} -> 'ABC' */ helpers.chop = function(str) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; return utils.chop(str); }; @@ -138,17 +138,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 + * @example {{dashcase 'a-b-c d_e'}} -> a-b-c-d-e */ helpers.dashcase = function(str) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; return utils.changecase(str, function(ch) { return '-' + ch; }); @@ -158,17 +158,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 + * @example {{dotcase 'a-b-c d_e'}} -> a.b.c.d.e */ helpers.dotcase = function(str) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; return utils.changecase(str, function(ch) { return '.' + ch; }); @@ -178,14 +178,14 @@ 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 + * @example {{downcase 'aBcDeF'}} -> abcdef */ @@ -198,16 +198,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… + * @example {{ellipsis 'foo bar baz', 7}} -> foo bar… */ helpers.ellipsis = function(str, limit) { @@ -223,17 +223,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 + * @example {{hyphenate 'foo bar baz qux'}} -> foo-bar-baz-qux */ helpers.hyphenate = function(str) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; return str.split(' ').join('-'); }; @@ -241,13 +241,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 + * @example {{isString 'foo'}} -> true */ helpers.isString = function(value) { @@ -258,20 +258,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 + * @example {{lowercase 'Foo BAR baZ'}} -> foo bar baz */ helpers.lowercase = function(str) { if (util.isObject(str) && str.fn) { return str.fn(this).toLowerCase(); } - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; return str.toLowerCase(); }; @@ -280,18 +280,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 + * @example {{occurrences 'foo bar foo bar baz' 'foo'}} -> 2 */ helpers.occurrences = function(str, substring) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; var len = substring.length; var pos = 0; var n = 0; @@ -307,17 +307,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 + * @example {{pascalcase 'foo bar baz'}} -> FooBarBaz */ helpers.pascalcase = function(str) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; str = utils.changecase(str, function(ch) { return ch.toUpperCase(); }); @@ -328,17 +328,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 + * @example {{pathcase 'a-b-c d_e'}} -> a/b/c/d/e */ helpers.pathcase = function(str) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; return utils.changecase(str, function(ch) { return '/' + ch; }); @@ -348,18 +348,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 + * @example {{plusify 'foo bar baz'}} -> foo+bar+baz */ helpers.plusify = function(str, ch) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; if (!util.isString(ch)) ch = ' '; return str.split(ch).join('+'); }; @@ -368,15 +368,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 + * @example {{prepend 'bar' 'foo-'}} -> foo-bar */ helpers.prepend = function(str, prefix) { @@ -421,18 +421,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 + * @example {{remove 'a b a b a b' 'a '}} -> b b b */ helpers.remove = function(str, ch) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; if (!util.isString(ch)) return str; return str.split(ch).join(''); }; @@ -441,18 +441,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 {{remove "a b a b a b" "a"}} -> b a b a b + * @example {{remove 'a b a b a b' 'a'}} -> b a b a b */ helpers.removeFirst = function(str, ch) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; if (!util.isString(ch)) return str; return str.replace(ch, ''); }; @@ -461,7 +461,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` @@ -469,11 +469,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 + * @example {{replace 'a b a b a b' 'a' 'z'}} -> z b z b z b */ helpers.replace = function(str, a, b) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; if (!util.isString(a)) return str; if (!util.isString(b)) b = ''; return str.split(a).join(b); @@ -483,7 +483,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` @@ -491,11 +491,11 @@ helpers.replace = function(str, a, b) { * @param {String} `b` * @return {String} * @api public - * @example {{replace "a b a b a b" "a" "z"}} -> z b a b a b + * @example {{replace 'a b a b a b' 'a' 'z'}} -> z b a b a b */ helpers.replaceFirst = function(str, a, b) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; if (!util.isString(a)) return str; if (!util.isString(b)) b = ''; return str.replace(a, b); @@ -505,17 +505,17 @@ 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 + * @example {{reverse 'abcde'}} -> edcba */ helpers.reverse = function(str) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; return str.split('').reverse().join(''); }; @@ -523,17 +523,17 @@ helpers.reverse = function(str) { * 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. + * @example {{sentence 'hello world. goodbye world.'}} -> Hello world. Goodbye world. */ helpers.sentence = function(str) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; return str.replace(/((?:\S[^\.\?\!]*)[\.\?\!]*)/g, function(txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); }); @@ -543,17 +543,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 + * @example {{snakecase 'a-b-c d_e'}} -> a_b_c_d_e */ helpers.snakecase = function(str) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; return utils.changecase(str, function(ch) { return '_' + ch; }); @@ -563,17 +563,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'] + * @example {{split 'a,b,c'}} -> ['a', 'b', 'c'] */ helpers.split = function(str, ch) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; if (!util.isString(ch)) ch = ','; return str.split(ch); }; @@ -582,7 +582,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? @@ -595,7 +595,7 @@ helpers.split = function(str, ch) { * @return {String} * @block * @api public - * @example {{#startsWith "Goodbye" "Hello, world!"}} Yep {{else}} Nope {{/startsWith}} -> Nope + * @example {{#startsWith 'Goodbye' 'Hello, world!'}} Yep {{else}} Nope {{/startsWith}} -> Nope */ helpers.startsWith = function(prefix, str, options) { @@ -614,17 +614,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 + * @example {{#titleize 'this is title case' }} -> This Is Title Case */ helpers.titleize = function(str) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; var title = str.replace(/[- _]+/g, ' '); var words = title.split(' '); var len = words.length; @@ -642,13 +642,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 + * @example {{trim ' ABC ' }} -> ABC */ helpers.trim = function(str) { @@ -659,13 +659,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 " + * @example {{trimLeft ' ABC ' }} -> 'ABC ' */ helpers.trimLeft = function(str) { @@ -678,13 +678,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 " + * @example {{trimRight ' ABC ' }} -> ' ABC ' */ helpers.trimRight = function(str) { @@ -697,9 +697,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` @@ -708,7 +708,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 + * @example {{truncate 'foo bar baz' 7 }} -> foo bar */ helpers.truncate = function(str, limit, suffix) { @@ -728,11 +728,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` @@ -741,7 +741,7 @@ 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 + * @example {{truncateWords 'foo bar baz' 1 }} -> foo */ helpers.truncateWords = function(str, count, suffix) { @@ -765,14 +765,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 + * @example {{upcase 'aBcDef'}} -> ABCDEF */ helpers.upcase = function() { @@ -785,7 +785,7 @@ helpers.upcase = function() { * does not support inverse blocks. * * ```handlebars - * {{uppercase "aBcDeF"}} + * {{uppercase 'aBcDeF'}} * * ``` * @related capitalize capitalizeAll @@ -794,13 +794,13 @@ helpers.upcase = function() { * @return {String} * @block * @api public - * @example {{uppercase "aBcDef"}} -> ABCDEF + * @example {{uppercase 'aBcDef'}} -> ABCDEF */ helpers.uppercase = function(str) { if (util.isObject(str) && str.fn) { return str.fn(this).toUpperCase(); } - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; return str.toUpperCase(); }; diff --git a/lib/url.js b/lib/url.js index f1820a77..5a26789e 100644 --- a/lib/url.js +++ b/lib/url.js @@ -14,7 +14,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://myurl?Hello%20There + * @example {{ encodeURI 'https://myurl?Hello There' }} -> https://myurl?Hello%20There */ helpers.encodeURI = function(str) { @@ -30,7 +30,7 @@ helpers.encodeURI = function(str) { * @param {String} `str` * @return {String} Escaped string. * @api public - * @example {{ escape "https://myurl?Hello+There" }} -> https://myurl?Hello%20There + * @example {{ escape 'https://myurl?Hello+There' }} -> https://myurl?Hello%20There */ helpers.escape = function(str) { @@ -45,7 +45,7 @@ helpers.escape = function(str) { * @param {String} `str` * @return {String} * @api public - * @example {{ escape "https://myurl?Hello%20There" }} -> https://myurl?Hello+There + * @example {{ escape 'https://myurl?Hello%20There' }} -> https://myurl?Hello+There */ helpers.decodeURI = function(str) { @@ -80,7 +80,7 @@ helpers.url_decode = function(val) { * @param {String} `href` * @return {String} * @api public - * @example {{ urlResolve "https://myurl" "/api/test" }} -> https://myurl/api/test + * @example {{ urlResolve 'https://myurl' '/api/test' }} -> https://myurl/api/test */ helpers.urlResolve = function(base, href) { @@ -93,7 +93,7 @@ helpers.urlResolve = function(base, href) { * @param {String} `str` URL string * @return {String} Returns stringified JSON * @api public - * @example {{ urlParse "https://myurl/api/test" }} + * @example {{ urlParse 'https://myurl/api/test' }} */ helpers.urlParse = function(str) { @@ -106,7 +106,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" + * @example {{ stripQueryString 'https://myurl/api/test?foo=bar' }} -> 'https://myurl/api/test' */ helpers.stripQuerystring = function(str) { @@ -127,7 +127,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" + * @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 index df7f4113..da48993b 100644 --- a/lib/utils/createFrame.js +++ b/lib/utils/createFrame.js @@ -11,7 +11,7 @@ const define = require('define-property'); const extend = require('extend-shallow'); module.exports = function createFrame(data) { - if (typeof (data) !== "object") { + if (typeof(data) !== 'object') { throw new TypeError('createFrame expects data to be an object'); } diff --git a/lib/utils/index.js b/lib/utils/index.js index d67365a6..b83ba09f 100644 --- a/lib/utils/index.js +++ b/lib/utils/index.js @@ -28,7 +28,7 @@ exports.contains = function(val, obj, start) { */ exports.chop = function(str) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; var re = /^[-_.\W\s]+|[-_.\W\s]+$/g; return str.trim().replace(re, ''); }; @@ -51,7 +51,7 @@ exports.chop = function(str) { */ exports.changecase = function(str, fn) { - if (typeof(str) !== "string") return ''; + if (typeof(str) !== 'string') return ''; if (str.length === 1) { return str.toLowerCase(); } diff --git a/package.json b/package.json index afc82172..d2379ed6 100644 --- a/package.json +++ b/package.json @@ -1,8 +1,8 @@ { "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.11.3", - "homepage": "https://github.com/helpers/handlebars-helpers", + "version": "0.11.4", + "homepage": "https://github.com/Budibase/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ "Adrián Mugnolo (https://github.com/xymbol)", @@ -57,7 +57,7 @@ ], "repository": "helpers/handlebars-helpers", "bugs": { - "url": "https://github.com/helpers/handlebars-helpers/issues" + "url": "https://github.com/Budibase/handlebars-helpers/issues" }, "license": "MIT", "files": [ @@ -69,57 +69,58 @@ "node": ">=0.12.0" }, "scripts": { - "test": "mocha" + "lint": "./node_modules/.bin/eslint *.js lib/**/*.js test/**/*.js", + "test": "./node_modules/.bin/rimraf .nyc_output && ./node_modules/.bin/nyc ./node_modules/.bin/mocha", + "update:readmemd": "verb", + "clean": "./node_modules/.bin/rimraf .nyc_output" }, "dependencies": { - "arr-flatten": "^1.1.0", - "array-sort": "^0.1.4", - "define-property": "^1.0.0", + "array-sort": "^1.0.0", + "define-property": "^2.0.2", "extend-shallow": "^3.0.2", - "falsey": "^0.3.2", + "falsey": "^1.0.0", "for-in": "^1.0.2", - "for-own": "^1.0.0", "get-object": "^0.2.0", - "get-value": "^2.0.6", - "handlebars": "^4.0.11", + "get-value": "^3.0.1", + "handlebars": "^4.7.7", "handlebars-utils": "^1.0.6", - "has-value": "^1.0.0", + "has-value": "^2.0.2", "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", + "is-glob": "^4.0.1", + "is-number": "^7.0.0", + "kind-of": "^6.0.3", "logging-helpers": "^1.0.0", - "micromatch": "^3.1.4", + "micromatch": "^3.1.5", "relative": "^3.0.2", - "striptags": "^3.1.0", + "striptags": "^3.1.1", "to-gfm-code-block": "^0.1.1", "year": "^0.2.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": "^8.4.0", + "nyc": "^15.1.0", + "rimraf": "^3.0.2", + "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", @@ -175,7 +176,6 @@ "moment" ], "helpers": [ - "helper-changelog", "helper-coverage" ], "lint": { diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 00000000..53ad5c0f --- /dev/null +++ b/yarn.lock @@ -0,0 +1,8758 @@ +# 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/code-frame@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" + integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== + dependencies: + "@babel/highlight" "^7.12.13" + +"@babel/compat-data@^7.13.15": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919" + integrity sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q== + +"@babel/core@^7.7.5": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.2.tgz#54e45334ffc0172048e5c93ded36461d3ad4c417" + integrity sha512-OgC1mON+l4U4B4wiohJlQNUU3H73mpTyYY3j/c8U9dr9UagGGSm+WFpzjy/YLdoyjiG++c1kIDgxCo/mLwQJeQ== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.14.2" + "@babel/helper-compilation-targets" "^7.13.16" + "@babel/helper-module-transforms" "^7.14.2" + "@babel/helpers" "^7.14.0" + "@babel/parser" "^7.14.2" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.14.2" + "@babel/types" "^7.14.2" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.2" + json5 "^2.1.2" + semver "^6.3.0" + source-map "^0.5.0" + +"@babel/generator@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.2.tgz#d5773e8b557d421fd6ce0d5efa5fd7fc22567c30" + integrity sha512-OnADYbKrffDVai5qcpkMxQ7caomHOoEwjkouqnN2QhydAjowFAZcsdecFIRUBdb+ZcruwYE4ythYmF1UBZU5xQ== + dependencies: + "@babel/types" "^7.14.2" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/helper-compilation-targets@^7.13.16": + version "7.13.16" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz#6e91dccf15e3f43e5556dffe32d860109887563c" + integrity sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== + dependencies: + "@babel/compat-data" "^7.13.15" + "@babel/helper-validator-option" "^7.12.17" + browserslist "^4.14.5" + semver "^6.3.0" + +"@babel/helper-function-name@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz#397688b590760b6ef7725b5f0860c82427ebaac2" + integrity sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ== + dependencies: + "@babel/helper-get-function-arity" "^7.12.13" + "@babel/template" "^7.12.13" + "@babel/types" "^7.14.2" + +"@babel/helper-get-function-arity@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" + integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-member-expression-to-functions@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" + integrity sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw== + dependencies: + "@babel/types" "^7.13.12" + +"@babel/helper-module-imports@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" + integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== + dependencies: + "@babel/types" "^7.13.12" + +"@babel/helper-module-transforms@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz#ac1cc30ee47b945e3e0c4db12fa0c5389509dfe5" + integrity sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA== + dependencies: + "@babel/helper-module-imports" "^7.13.12" + "@babel/helper-replace-supers" "^7.13.12" + "@babel/helper-simple-access" "^7.13.12" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-validator-identifier" "^7.14.0" + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.14.2" + "@babel/types" "^7.14.2" + +"@babel/helper-optimise-call-expression@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" + integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-replace-supers@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz#6442f4c1ad912502481a564a7386de0c77ff3804" + integrity sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.13.12" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/traverse" "^7.13.0" + "@babel/types" "^7.13.12" + +"@babel/helper-simple-access@^7.13.12": + version "7.13.12" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" + integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA== + dependencies: + "@babel/types" "^7.13.12" + +"@babel/helper-split-export-declaration@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" + integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== + dependencies: + "@babel/types" "^7.12.13" + +"@babel/helper-validator-identifier@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" + integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== + +"@babel/helper-validator-option@^7.12.17": + version "7.12.17" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" + integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== + +"@babel/helpers@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.0.tgz#ea9b6be9478a13d6f961dbb5f36bf75e2f3b8f62" + integrity sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg== + dependencies: + "@babel/template" "^7.12.13" + "@babel/traverse" "^7.14.0" + "@babel/types" "^7.14.0" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" + integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== + dependencies: + "@babel/helper-validator-identifier" "^7.14.0" + chalk "^2.0.0" + js-tokens "^4.0.0" + +"@babel/parser@^7.12.13", "@babel/parser@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.2.tgz#0c1680aa44ad4605b16cbdcc5c341a61bde9c746" + integrity sha512-IoVDIHpsgE/fu7eXBeRWt8zLbDrSvD7H1gpomOkPpBoEN8KCruCqSDdqo8dddwQQrui30KSvQBaMUOJiuFu6QQ== + +"@babel/template@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" + integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/parser" "^7.12.13" + "@babel/types" "^7.12.13" + +"@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.2.tgz#9201a8d912723a831c2679c7ebbf2fe1416d765b" + integrity sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA== + dependencies: + "@babel/code-frame" "^7.12.13" + "@babel/generator" "^7.14.2" + "@babel/helper-function-name" "^7.14.2" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/parser" "^7.14.2" + "@babel/types" "^7.14.2" + debug "^4.1.0" + globals "^11.1.0" + +"@babel/types@^7.12.13", "@babel/types@^7.13.12", "@babel/types@^7.14.0", "@babel/types@^7.14.2": + version "7.14.2" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.2.tgz#4208ae003107ef8a057ea8333e56eb64d2f6a2c3" + integrity sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw== + dependencies: + "@babel/helper-validator-identifier" "^7.14.0" + to-fast-properties "^2.0.0" + +"@eslint/eslintrc@^0.4.1": + version "0.4.1" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.1.tgz#442763b88cecbe3ee0ec7ca6d6dd6168550cbf14" + integrity sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ== + dependencies: + ajv "^6.12.4" + debug "^4.1.1" + espree "^7.3.0" + globals "^12.1.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" + +"@istanbuljs/load-nyc-config@^1.0.0": + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== + dependencies: + camelcase "^5.3.1" + find-up "^4.1.0" + get-package-type "^0.1.0" + js-yaml "^3.13.1" + resolve-from "^5.0.0" + +"@istanbuljs/schema@^0.1.2": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" + integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== + +"@ungap/promise-all-settled@1.1.2": + version "1.1.2" + resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" + integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== + +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== + +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +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.4.0" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.4.0.tgz#48984fdb2ce225cab15795f0772a8d85669075e4" + integrity sha512-7QD2l6+KBSLwf+7MuYocbWvRPdOu63/trReTLu2KFwkgctnub1auoF+Y1WYcm09CTM7quuscrzqmASaLHC/K4Q== + 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@4.1.1, 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@^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-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.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" + integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== + 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" + +append-transform@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" + integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== + dependencies: + default-require-extensions "^3.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" + +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: + 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== + +browserslist@^4.14.5: + version "4.16.6" + resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" + integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== + dependencies: + caniuse-lite "^1.0.30001219" + colorette "^1.2.2" + electron-to-chromium "^1.3.723" + escalade "^3.1.1" + node-releases "^1.1.71" + +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" + +caching-transform@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" + integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== + dependencies: + hasha "^5.0.0" + make-dir "^3.0.0" + package-hash "^4.0.0" + write-file-atomic "^3.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@^5.0.0, camelcase@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" + integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== + +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + +caniuse-lite@^1.0.30001219: + version "1.0.30001228" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz#bfdc5942cd3326fa51ee0b42fbef4da9d492a7fa" + integrity sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== + +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" + +chokidar@3.5.1: + version "3.5.1" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" + integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== + dependencies: + anymatch "~3.1.1" + braces "~3.0.2" + glob-parent "~5.1.0" + is-binary-path "~2.1.0" + is-glob "~4.0.1" + normalize-path "~3.0.0" + readdirp "~3.5.0" + optionalDependencies: + fsevents "~2.3.1" + +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" + +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" + +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +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@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" + integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== + dependencies: + string-width "^4.2.0" + strip-ansi "^6.0.0" + wrap-ansi "^6.2.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== + +colorette@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" + integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== + +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" + +commondir@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" + integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= + +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, convert-source-map@^1.7.0: + version "1.7.0" + resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" + integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + 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.0, 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@4.3.1, debug@^4.0.1, debug@^4.1.0, 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@=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" + +decamelize@^1.1.1, decamelize@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +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-require-extensions@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.0.tgz#e03f93aac9b2b6443fc52e5e4a37b3ad9ad8df96" + integrity sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg== + dependencies: + strip-bom "^4.0.0" + +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@5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" + integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== + +diff@^2.0.2: + version "2.2.3" + resolved "https://registry.yarnpkg.com/diff/-/diff-2.2.3.tgz#60eafd0d28ee906e4e8ff0a52c1229521033bf99" + integrity sha1-YOr9DSjukG5Oj/ClLBIpUhAzv5k= + +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" + +electron-to-chromium@^1.3.723: + version "1.3.728" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.728.tgz#dbedd6373f595ae10a13d146b66bece4c1afa5bd" + integrity sha512-SHv4ziXruBpb1Nz4aTuqEHBYi/9GNCJMYIJgDEXrp/2V01nFXMNFUTli5Z85f5ivSkioLilQatqBYFB44wNJrA== + +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" + +ent@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" + integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= + +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-error@^4.0.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" + integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== + +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@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== + +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= + +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.26.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.26.0.tgz#d416fdcdcb3236cd8f282065312813f8c13982f6" + integrity sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg== + dependencies: + "@babel/code-frame" "7.12.11" + "@eslint/eslintrc" "^0.4.1" + 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" + 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" + file-entry-cache "^6.0.1" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + 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 "^4.17.21" + 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.4" + 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" + +"falsey@^1.0.0": + version "1.0.0" + resolved "https://registry.yarnpkg.com/falsey/-/falsey-1.0.0.tgz#71bdd775c24edad9f2f5c015ce8be24400bb5d7d" + integrity sha512-zMDNZ/Ipd8MY0+346CPvhzP1AsiVyNfTOayJza4reAIWf72xbkuFUDcJNxSAsQE1b9Bu0wijKb8Ngnh/a7fI5w== + +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: + 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-cache-dir@^3.2.0: + version "3.3.1" + resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" + integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== + dependencies: + commondir "^1.0.1" + make-dir "^3.0.2" + pkg-dir "^4.1.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@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" + +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@^4.0.0, find-up@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" + integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== + dependencies: + locate-path "^5.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" + +foreground-child@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" + integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== + dependencies: + cross-spawn "^7.0.0" + signal-exit "^3.0.2" + +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= + +fromentries@^1.2.0: + version "1.3.2" + resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" + integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== + +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.1: + version "2.3.2" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" + integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== + +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" + +gensync@^1.0.0-beta.2: + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== + +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.1, 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-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + +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.0.0, glob-parent@~5.1.0: + version "5.1.2" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" + integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== + dependencies: + is-glob "^4.0.1" + +glob-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@7.1.6: + version "7.1.6" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" + integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== + 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@^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, glob@^7.1.4, glob@^7.1.6: + 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@~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@^11.1.0: + version "11.12.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" + integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== + +globals@^12.1.0: + version "12.4.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" + integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== + dependencies: + type-fest "^0.8.1" + +globals@^13.6.0: + version "13.8.0" + resolved "https://registry.yarnpkg.com/globals/-/globals-13.8.0.tgz#3e20f504810ce87a8d72e55aecf8435b50f4c1b3" + integrity sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q== + 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.15, 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" + +growl@1.10.5: + version "1.10.5" + resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" + integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== + +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.2, handlebars-utils@^1.0.4, handlebars-utils@^1.0.6: + 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" + +hasha@^5.0.0: + version "5.2.2" + resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" + integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== + dependencies: + is-stream "^2.0.0" + type-fest "^0.8.0" + +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, helper-coverage@^0.1.3: + 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-markdown@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/helper-markdown/-/helper-markdown-1.0.0.tgz#ee7e9fc554675007d37eb90f7853b13ce74f3e10" + integrity sha512-AnDqMS4ejkQK0MXze7pA9TM3pu01ZY+XXsES6gEE0RmCGk5/NIfvTn0NmItfyDOjRAzyo9z6X7YHbHX4PzIvOA== + dependencies: + handlebars-utils "^1.0.2" + highlight.js "^9.12.0" + remarkable "^1.7.1" + +helper-md@^0.2.2: + version "0.2.2" + resolved "https://registry.yarnpkg.com/helper-md/-/helper-md-0.2.2.tgz#c1f59d7e55bbae23362fd8a0e971607aec69d41f" + integrity sha1-wfWdflW7riM2L9ig6XFgeuxp1B8= + dependencies: + ent "^2.2.0" + extend-shallow "^2.0.1" + fs-exists-sync "^0.1.0" + remarkable "^1.6.2" + +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" + +highlight.js@^9.12.0: + version "9.18.5" + resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.5.tgz#d18a359867f378c138d6819edfc2a8acd5f29825" + integrity sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA== + +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-escaper@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" + integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== + +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= + +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + +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-even@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-even/-/is-even-1.0.0.tgz#76b5055fbad8d294a86b6a949015e1c97b717c06" + integrity sha1-drUFX7rY0pSoa2qUkBXhyXtxfAY= + dependencies: + is-odd "^0.1.2" + +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@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-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-odd@^0.1.2: + version "0.1.2" + resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-0.1.2.tgz#bc573b5ce371ef2aad6e6f49799b72bef13978a7" + integrity sha1-vFc7XONx7yqtbm9JeZtyvvE5eKc= + dependencies: + is-number "^3.0.0" + +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-stream@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" + integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== + +is-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-typedarray@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" + integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= + +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-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= + +istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.0-alpha.1: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" + integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== + +istanbul-lib-hook@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" + integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== + dependencies: + append-transform "^2.0.0" + +istanbul-lib-instrument@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== + dependencies: + "@babel/core" "^7.7.5" + "@istanbuljs/schema" "^0.1.2" + istanbul-lib-coverage "^3.0.0" + semver "^6.3.0" + +istanbul-lib-processinfo@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz#e1426514662244b2f25df728e8fd1ba35fe53b9c" + integrity sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw== + dependencies: + archy "^1.0.0" + cross-spawn "^7.0.0" + istanbul-lib-coverage "^3.0.0-alpha.1" + make-dir "^3.0.0" + p-map "^3.0.0" + rimraf "^3.0.0" + uuid "^3.3.3" + +istanbul-lib-report@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" + integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== + dependencies: + istanbul-lib-coverage "^3.0.0" + make-dir "^3.0.0" + supports-color "^7.1.0" + +istanbul-lib-source-maps@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" + integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== + dependencies: + debug "^4.1.1" + istanbul-lib-coverage "^3.0.0" + source-map "^0.6.1" + +istanbul-reports@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" + integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== + dependencies: + html-escaper "^2.0.0" + istanbul-lib-report "^3.0.0" + +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@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" + integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== + dependencies: + argparse "^2.0.1" + +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" + +jsesc@^2.5.1: + version "2.5.2" + resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" + integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== + +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= + +json5@^2.1.2: + version "2.2.0" + resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" + integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== + dependencies: + minimist "^1.2.5" + +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== + +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@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" + integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== + dependencies: + p-locate "^4.1.0" + +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.flattendeep@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" + integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= + +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.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@^4.17.21: + version "4.17.21" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" + integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== + +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@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== + dependencies: + chalk "^4.0.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-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" + +logging-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/logging-helpers/-/logging-helpers-1.0.0.tgz#b5a37b32ad53eb0137c58c7898a47b175ddb7c36" + integrity sha512-qyIh2goLt1sOgQQrrIWuwkRjUx4NUcEqEGAcYqD8VOnOC6ItwkrVE8/tA4smGpjzyp4Svhc6RodDp9IO5ghpyA== + dependencies: + isobject "^3.0.0" + log-utils "^0.2.1" + +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-dir@^3.0.0, make-dir@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== + dependencies: + semver "^6.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" + +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, 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@~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@^8.4.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.4.0.tgz#677be88bf15980a3cae03a73e10a0fc3997f0cff" + integrity sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ== + dependencies: + "@ungap/promise-all-settled" "1.1.2" + ansi-colors "4.1.1" + browser-stdout "1.3.1" + chokidar "3.5.1" + debug "4.3.1" + diff "5.0.0" + escape-string-regexp "4.0.0" + find-up "5.0.0" + glob "7.1.6" + growl "1.10.5" + he "1.2.0" + js-yaml "4.0.0" + log-symbols "4.0.0" + minimatch "3.0.4" + ms "2.1.3" + nanoid "3.1.20" + serialize-javascript "5.0.1" + strip-json-comments "3.1.1" + supports-color "8.1.1" + which "2.0.2" + wide-align "1.1.3" + workerpool "6.1.0" + yargs "16.2.0" + yargs-parser "20.2.4" + 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.3, ms@^2.1.1: + 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== + +nanoid@3.1.20: + version "3.1.20" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" + integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== + +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= + +no-case@^2.2.0: + version "2.3.2" + resolved "https://registry.yarnpkg.com/no-case/-/no-case-2.3.2.tgz#60b813396be39b3f1288a4c1ed5d1e7d28b464ac" + integrity sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ== + dependencies: + lower-case "^1.1.1" + +node-preload@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" + integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== + dependencies: + process-on-spawn "^1.0.0" + +node-releases@^1.1.71: + version "1.1.72" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" + integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw== + +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= + +nyc@^15.1.0: + version "15.1.0" + resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" + integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== + dependencies: + "@istanbuljs/load-nyc-config" "^1.0.0" + "@istanbuljs/schema" "^0.1.2" + caching-transform "^4.0.0" + convert-source-map "^1.7.0" + decamelize "^1.2.0" + find-cache-dir "^3.2.0" + find-up "^4.1.0" + foreground-child "^2.0.0" + get-package-type "^0.1.0" + glob "^7.1.6" + istanbul-lib-coverage "^3.0.0" + istanbul-lib-hook "^3.0.0" + istanbul-lib-instrument "^4.0.0" + istanbul-lib-processinfo "^2.0.2" + istanbul-lib-report "^3.0.0" + istanbul-lib-source-maps "^4.0.0" + istanbul-reports "^3.0.2" + make-dir "^3.0.0" + node-preload "^0.2.1" + p-map "^3.0.0" + process-on-spawn "^1.0.0" + resolve-from "^5.0.0" + rimraf "^3.0.0" + signal-exit "^3.0.2" + spawn-wrap "^2.0.0" + test-exclude "^6.0.0" + yargs "^15.0.2" + +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@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" + integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== + dependencies: + p-try "^2.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@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" + integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== + dependencies: + p-limit "^2.2.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" + +p-map@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" + integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== + dependencies: + aggregate-error "^3.0.0" + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +package-hash@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" + integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== + dependencies: + graceful-fs "^4.1.15" + hasha "^5.0.0" + lodash.flattendeep "^4.4.0" + release-zalgo "^1.0.0" + +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.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +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-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.2.3" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" + integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== + +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-dir@^4.1.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" + integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== + dependencies: + find-up "^4.0.0" + +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== + +process-on-spawn@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.0.0.tgz#95b05a23073d30a17acfdc92a440efd2baefdc93" + integrity sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg== + dependencies: + fromentries "^1.2.0" + +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.5.0: + version "3.5.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" + integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== + 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.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + +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" + +release-zalgo@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" + integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA= + dependencies: + es6-error "^4.0.1" + +remarkable@^1.6.0, remarkable@^1.6.1, remarkable@^1.6.2, 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= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +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-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + +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.0, 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@^6.0.0, semver@^6.3.0: + version "6.3.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" + integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== + +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@5.0.1: + version "5.0.1" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" + integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== + 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.0" + resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376" + integrity sha1-12nBgsnVpR9AkUXy+6guXoboA3Y= + 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" + +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.0, 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== + +spawn-wrap@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" + integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg== + dependencies: + foreground-child "^2.0.0" + is-windows "^1.0.2" + make-dir "^3.0.0" + rimraf "^3.0.0" + signal-exit "^3.0.2" + which "^2.0.1" + +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.7" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" + integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== + +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@^1.0.2 || 2": + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.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-bom@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" + integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== + +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.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.1.1" + resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.1.1.tgz#c8c3e7fdd6fb4bb3a32a3b752e5b5e3e38093ebd" + integrity sha1-yMPn/db7S7OjKjt1LltePjgJPr0= + +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@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" + +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: + 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" + +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.4: + 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" + +test-exclude@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" + integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== + dependencies: + "@istanbuljs/schema" "^0.1.2" + glob "^7.1.4" + minimatch "^3.0.4" + +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-fast-properties@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" + integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= + +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-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-fest@^0.8.0, type-fest@^0.8.1: + version "0.8.1" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" + integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== + +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-to-buffer@^3.1.5: + version "3.1.5" + resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" + integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== + dependencies: + is-typedarray "^1.0.0" + +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.6" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.6.tgz#6815ac7fdd155d03c83e2362bb717e5b39b74013" + integrity sha512-rRprLwl8RVaS+Qvx3Wh5hPfPBn9++G6xkGlUupya0s5aDmNjI7z3lnRLB3u7sN4OmbB0pWgzhM9BEJyiWAwtAA== + +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@^3.3.3: + version "3.4.0" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" + integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== + +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-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@2.0.2, 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" + +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" + +wide-align@1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +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.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" + integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== + +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@^6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" + integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +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-file-atomic@^3.0.0: + version "3.0.3" + resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" + integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== + dependencies: + imurmurhash "^0.1.4" + is-typedarray "^1.0.0" + signal-exit "^3.0.2" + typedarray-to-buffer "^3.1.5" + +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@^4.0.0: + version "4.0.3" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" + integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== + +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.4: + version "20.2.4" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" + integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== + dependencies: + camelcase "^5.0.0" + decamelize "^1.2.0" + +yargs-parser@^20.2.2: + version "20.2.7" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" + integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== + +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@^15.0.2: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== + dependencies: + cliui "^6.0.0" + decamelize "^1.2.0" + find-up "^4.1.0" + get-caller-file "^2.0.1" + require-directory "^2.1.1" + require-main-filename "^2.0.0" + set-blocking "^2.0.0" + string-width "^4.2.0" + which-module "^2.0.0" + y18n "^4.0.0" + yargs-parser "^18.1.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== From 2cf5b71be267330d66bcff2b172768beef300381 Mon Sep 17 00:00:00 2001 From: andrew Date: Sun, 16 May 2021 17:26:07 +1000 Subject: [PATCH 017/133] Bumped min node required to 10.12.0 due to package dependencies. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d2379ed6..f15bbc6c 100644 --- a/package.json +++ b/package.json @@ -66,7 +66,7 @@ ], "main": "index.js", "engines": { - "node": ">=0.12.0" + "node": ">=10.12.0" }, "scripts": { "lint": "./node_modules/.bin/eslint *.js lib/**/*.js test/**/*.js", From 462944b09b20ea90b8c2b25102d703f6caf2898b Mon Sep 17 00:00:00 2001 From: andrew Date: Sun, 16 May 2021 17:35:16 +1000 Subject: [PATCH 018/133] Added timeout for github actions. --- .github/workflows/helpers_ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/helpers_ci.yml b/.github/workflows/helpers_ci.yml index 388b42a1..68ad4f8c 100644 --- a/.github/workflows/helpers_ci.yml +++ b/.github/workflows/helpers_ci.yml @@ -12,7 +12,10 @@ on: jobs: build: - runs-on: ubuntu-latest + + runs-on: ubuntu-20.04 + + timeout-minutes: 50 # Just in case something goes realy real realy BAD..... strategy: matrix: From f19ae7ab48c07635b8aa9d5a45bf5c0b6fe46c07 Mon Sep 17 00:00:00 2001 From: andrew Date: Mon, 17 May 2021 10:22:27 +1000 Subject: [PATCH 019/133] Added os matrix for github actions and badges in readme.md --- .github/workflows/helpers_ci.yml | 55 +++++++++++++++++--------------- README.md | 6 ++++ 2 files changed, 35 insertions(+), 26 deletions(-) diff --git a/.github/workflows/helpers_ci.yml b/.github/workflows/helpers_ci.yml index 68ad4f8c..3d7046e6 100644 --- a/.github/workflows/helpers_ci.yml +++ b/.github/workflows/helpers_ci.yml @@ -13,36 +13,39 @@ on: jobs: build: - runs-on: ubuntu-20.04 + name: Run tests for NodeJS version ${{ matrix.node-version }} on @ ${{ matrix.os }} - timeout-minutes: 50 # Just in case something goes realy real realy BAD..... + runs-on: ${{ matrix.os }} + + timeout-minutes: 30 # Just in case something goes realy real realy BAD..... strategy: + fail-fast: false matrix: - node-version: [10.x, 12.x, 14.x, 16.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - - name: Run tests for NodeJS version ${{ matrix.node-version }} + node-version: [10.x, 12.x, 14.x, 16.x] + os: [ubuntu-20.04, windows-2019, macos-10.15] steps: - - 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 test against code - run: yarn test - env: - CI: true - name: Handlebars-helpers CI - - uses: JS-DevTools/npm-publish@v1 - with: - token: ${{ secrets.NPM_TOKEN }} + - 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 test against code + run: yarn test + env: + CI: true + name: Handlebars-helpers CI + - uses: JS-DevTools/npm-publish@v1 + with: + token: ${{ secrets.NPM_TOKEN }} diff --git a/README.md b/README.md index 000509c7..090c9701 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,12 @@ *NOTE: This is a fork of the handlebars-helpers repo to prepare it for use with rollup as part of Budibase.* +[![Prod Dependencies](https://github.com/Budibase/handlebars-helpers/status.svg)](https://github.com/Budibase/handlebars-helpers) +[![Dev Dependencies](https://github.com/Budibase/handlebars-helpers/dev-status.svg)](https://github.com/Budibase/handlebars-helpers#info=devDependencies) + +[![Build](https://github.com/Budibase/handlebars-helpers/actions/workflows/node.js.yml/badge.svg)](https://github.com/Budibase/handlebars-helpers/actions/workflows/node.js.yml) +[![Build Matrix](http://github-actions.40ants.com/Budibase/handlebars-helper/matrix.svg)](https://github.com/Budibase/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. - [Install](#install) From da9acdef5c54405eac28f79c8c00e007b0b4674b Mon Sep 17 00:00:00 2001 From: andrew Date: Mon, 17 May 2021 10:33:36 +1000 Subject: [PATCH 020/133] Only publish if not a PR. --- .github/workflows/helpers_ci.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/helpers_ci.yml b/.github/workflows/helpers_ci.yml index 3d7046e6..e9142bf7 100644 --- a/.github/workflows/helpers_ci.yml +++ b/.github/workflows/helpers_ci.yml @@ -46,6 +46,9 @@ jobs: env: CI: true name: Handlebars-helpers CI - - uses: JS-DevTools/npm-publish@v1 + + - name: Publish to NPM if not a PR + if: ${{ github.event_name != 'pull_request'}} + uses: JS-DevTools/npm-publish@v1 with: token: ${{ secrets.NPM_TOKEN }} From 8917e2392c5dff43f80479b5c9d257ce417cb396 Mon Sep 17 00:00:00 2001 From: andrew Date: Mon, 17 May 2021 10:40:54 +1000 Subject: [PATCH 021/133] Only publish on release event --- .github/workflows/helpers_ci.yml | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/.github/workflows/helpers_ci.yml b/.github/workflows/helpers_ci.yml index e9142bf7..e85c01ca 100644 --- a/.github/workflows/helpers_ci.yml +++ b/.github/workflows/helpers_ci.yml @@ -1,14 +1,17 @@ name: Handlebars-helpers CI on: - # Trigger the workflow on push or pull request, - # but only for the master branch - push: + # Trigger the workflow on push or pull request, + # but only for the master branch + push: branches: - master - pull_request: + pull_request: branches: - master + release: + types: + - created jobs: build: @@ -47,8 +50,8 @@ jobs: CI: true name: Handlebars-helpers CI - - name: Publish to NPM if not a PR - if: ${{ github.event_name != 'pull_request'}} + - 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 }} From c66e9093d93048ca921723021589110ea1eb520c Mon Sep 17 00:00:00 2001 From: andrew Date: Mon, 17 May 2021 11:43:41 +1000 Subject: [PATCH 022/133] Update github actions for github master renamed to main and for when showing 40ants badge. --- .github/workflows/helpers_ci.yml | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/helpers_ci.yml b/.github/workflows/helpers_ci.yml index e85c01ca..030c5812 100644 --- a/.github/workflows/helpers_ci.yml +++ b/.github/workflows/helpers_ci.yml @@ -2,22 +2,24 @@ name: Handlebars-helpers CI on: # Trigger the workflow on push or pull request, - # but only for the master branch + # 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: - name: Run tests for NodeJS version ${{ matrix.node-version }} on @ ${{ matrix.os }} - runs-on: ${{ matrix.os }} timeout-minutes: 30 # Just in case something goes realy real realy BAD..... @@ -44,7 +46,7 @@ jobs: - name: Lint code run: yarn lint - - name: Run test against code + - name: Run tests against code run: yarn test env: CI: true From 1603aac925d219ec3f082d1980c2710d007c5a03 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 10 Jun 2021 12:39:54 +0100 Subject: [PATCH 023/133] Updating length operator to have a little more intelligence allowing the use of inline arrays. --- lib/array.js | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/lib/array.js b/lib/array.js index 57efdb27..ba0faef3 100644 --- a/lib/array.js +++ b/lib/array.js @@ -321,7 +321,7 @@ helpers.join = function(array, separator) { * @return {String} * @block * @api public - * @example {{equalsLength [1, 2, 3] 3}} -> true + * @example {{equalsLength '[1,2,3]' 3}} -> true */ helpers.equalsLength = function(value, length, options) { @@ -330,10 +330,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); }; @@ -389,13 +386,17 @@ 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 + * @example {{length '[1, 2, 3]'}} -> 3 */ helpers.length = function(value) { if (util.isObject(value) && !util.isOptions(value)) { value = Object.keys(value); } + // this is an inline array, split it + if (typeof value === 'string' && value.startsWith("[") && value.endsWith("]")) { + return value.split(",").length; + } if (typeof value === 'string' || Array.isArray(value)) { return value.length; } From 77a3b9741f6e6fa84802801f0b7b8a7b953ba9f9 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 10 Jun 2021 12:52:23 +0100 Subject: [PATCH 024/133] 0.11.4 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index afc82172..53de839e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.11.3", + "version": "0.11.4", "homepage": "https://github.com/helpers/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ From 04d398677f82377bf5dc66a6d865962250c06225 Mon Sep 17 00:00:00 2001 From: andrew Date: Fri, 11 Jun 2021 10:13:24 +1000 Subject: [PATCH 025/133] Fix merge array length param name stuff up. --- lib/array.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/array.js b/lib/array.js index 6bdf8930..ab4ce01a 100644 --- a/lib/array.js +++ b/lib/array.js @@ -434,11 +434,11 @@ helpers.length = function(array) { array = Object.keys(array); } // this is an inline array, split it - if (typeof value === 'string' && value.startsWith("[") && value.endsWith("]")) { - return value.split(",").length; + 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; }; From 7f7c6af55269f8a7136d39efda877a513d43b36b Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 29 Jun 2021 14:11:45 +0100 Subject: [PATCH 026/133] Removing the use of the logging utilities directly from codebase, these were likely pulling in ansi-colors and log-utils which broke rollup build. --- README.md | 21 --- lib/index.js | 1 - lib/logging.js | 8 - lib/string.js | 3 +- package.json | 4 +- test/fs.js | 2 - yarn.lock | 485 ++++++++++++++++++++++++------------------------- 7 files changed, 242 insertions(+), 282 deletions(-) delete mode 100644 lib/logging.js diff --git a/README.md b/README.md index 090c9701..eda257cf 100644 --- a/README.md +++ b/README.md @@ -88,7 +88,6 @@ Currently **189 helpers** in **20 categories**: * **[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)) @@ -221,22 +220,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)) @@ -1596,10 +1579,6 @@ Returns an ordinalized number as a string. ``` -## logging - -[logging-helpers](https://github.com/helpers/logging-helpers). - ## markdown ### [{{markdown}}](lib/markdown.js#L28) diff --git a/lib/index.js b/lib/index.js index 939ab03e..b2680b0c 100644 --- a/lib/index.js +++ b/lib/index.js @@ -10,7 +10,6 @@ module.exports = { html: require('./html'), i18n: require('./i18n'), inflection: require('./inflection'), - logging: require('./logging'), markdown: require('./markdown'), match: require('./match'), math: require('./math'), 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/string.js b/lib/string.js index 035506a7..5f35dc04 100644 --- a/lib/string.js +++ b/lib/string.js @@ -1,6 +1,5 @@ 'use strict'; -var isNumber = require('is-number'); var util = require('handlebars-utils'); var utils = require('./utils'); var helpers = module.exports; @@ -745,7 +744,7 @@ helpers.truncate = function(str, limit, suffix) { */ helpers.truncateWords = function(str, count, suffix) { - if (util.isString(str) && isNumber(count)) { + if (util.isString(str) && !isNaN(count)) { if (typeof suffix !== 'string') { suffix = '…'; } diff --git a/package.json b/package.json index f15bbc6c..86a5eefc 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.11.4", + "version": "0.11.5", "homepage": "https://github.com/Budibase/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ @@ -91,9 +91,7 @@ "html-tag": "^2.0.0", "is-even": "^1.0.0", "is-glob": "^4.0.1", - "is-number": "^7.0.0", "kind-of": "^6.0.3", - "logging-helpers": "^1.0.0", "micromatch": "^3.1.5", "relative": "^3.0.2", "striptags": "^3.1.1", diff --git a/test/fs.js b/test/fs.js index e0b484bd..79fbaaf3 100644 --- a/test/fs.js +++ b/test/fs.js @@ -55,7 +55,6 @@ describe('fs', function() { 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'), @@ -82,7 +81,6 @@ describe('fs', function() { 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'), diff --git a/yarn.lock b/yarn.lock index 53ad5c0f..7f150c90 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,32 +9,32 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.13.tgz#dcfc826beef65e75c50e21d3837d7d95798dd658" - integrity sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g== +"@babel/code-frame@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" + integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== dependencies: - "@babel/highlight" "^7.12.13" + "@babel/highlight" "^7.14.5" -"@babel/compat-data@^7.13.15": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919" - integrity sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q== +"@babel/compat-data@^7.14.5": + version "7.14.7" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.7.tgz#7b047d7a3a89a67d2258dc61f604f098f1bc7e08" + integrity sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw== "@babel/core@^7.7.5": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.2.tgz#54e45334ffc0172048e5c93ded36461d3ad4c417" - integrity sha512-OgC1mON+l4U4B4wiohJlQNUU3H73mpTyYY3j/c8U9dr9UagGGSm+WFpzjy/YLdoyjiG++c1kIDgxCo/mLwQJeQ== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.14.2" - "@babel/helper-compilation-targets" "^7.13.16" - "@babel/helper-module-transforms" "^7.14.2" - "@babel/helpers" "^7.14.0" - "@babel/parser" "^7.14.2" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.14.2" - "@babel/types" "^7.14.2" + version "7.14.6" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.6.tgz#e0814ec1a950032ff16c13a2721de39a8416fcab" + integrity sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.14.5" + "@babel/helper-compilation-targets" "^7.14.5" + "@babel/helper-module-transforms" "^7.14.5" + "@babel/helpers" "^7.14.6" + "@babel/parser" "^7.14.6" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.2" @@ -42,173 +42,181 @@ semver "^6.3.0" source-map "^0.5.0" -"@babel/generator@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.2.tgz#d5773e8b557d421fd6ce0d5efa5fd7fc22567c30" - integrity sha512-OnADYbKrffDVai5qcpkMxQ7caomHOoEwjkouqnN2QhydAjowFAZcsdecFIRUBdb+ZcruwYE4ythYmF1UBZU5xQ== +"@babel/generator@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.5.tgz#848d7b9f031caca9d0cd0af01b063f226f52d785" + integrity sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA== dependencies: - "@babel/types" "^7.14.2" + "@babel/types" "^7.14.5" jsesc "^2.5.1" source-map "^0.5.0" -"@babel/helper-compilation-targets@^7.13.16": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz#6e91dccf15e3f43e5556dffe32d860109887563c" - integrity sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== +"@babel/helper-compilation-targets@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz#7a99c5d0967911e972fe2c3411f7d5b498498ecf" + integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== dependencies: - "@babel/compat-data" "^7.13.15" - "@babel/helper-validator-option" "^7.12.17" - browserslist "^4.14.5" + "@babel/compat-data" "^7.14.5" + "@babel/helper-validator-option" "^7.14.5" + browserslist "^4.16.6" semver "^6.3.0" -"@babel/helper-function-name@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.2.tgz#397688b590760b6ef7725b5f0860c82427ebaac2" - integrity sha512-NYZlkZRydxw+YT56IlhIcS8PAhb+FEUiOzuhFTfqDyPmzAhRge6ua0dQYT/Uh0t/EDHq05/i+e5M2d4XvjgarQ== - dependencies: - "@babel/helper-get-function-arity" "^7.12.13" - "@babel/template" "^7.12.13" - "@babel/types" "^7.14.2" - -"@babel/helper-get-function-arity@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz#bc63451d403a3b3082b97e1d8b3fe5bd4091e583" - integrity sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-member-expression-to-functions@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz#dfe368f26d426a07299d8d6513821768216e6d72" - integrity sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw== - dependencies: - "@babel/types" "^7.13.12" - -"@babel/helper-module-imports@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz#c6a369a6f3621cb25da014078684da9196b61977" - integrity sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA== - dependencies: - "@babel/types" "^7.13.12" - -"@babel/helper-module-transforms@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.2.tgz#ac1cc30ee47b945e3e0c4db12fa0c5389509dfe5" - integrity sha512-OznJUda/soKXv0XhpvzGWDnml4Qnwp16GN+D/kZIdLsWoHj05kyu8Rm5kXmMef+rVJZ0+4pSGLkeixdqNUATDA== - dependencies: - "@babel/helper-module-imports" "^7.13.12" - "@babel/helper-replace-supers" "^7.13.12" - "@babel/helper-simple-access" "^7.13.12" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/helper-validator-identifier" "^7.14.0" - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.14.2" - "@babel/types" "^7.14.2" - -"@babel/helper-optimise-call-expression@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz#5c02d171b4c8615b1e7163f888c1c81c30a2aaea" - integrity sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-replace-supers@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz#6442f4c1ad912502481a564a7386de0c77ff3804" - integrity sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.13.12" - "@babel/helper-optimise-call-expression" "^7.12.13" - "@babel/traverse" "^7.13.0" - "@babel/types" "^7.13.12" - -"@babel/helper-simple-access@^7.13.12": - version "7.13.12" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" - integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA== - dependencies: - "@babel/types" "^7.13.12" - -"@babel/helper-split-export-declaration@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz#e9430be00baf3e88b0e13e6f9d4eaf2136372b05" - integrity sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg== - dependencies: - "@babel/types" "^7.12.13" - -"@babel/helper-validator-identifier@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" - integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== - -"@babel/helper-validator-option@^7.12.17": - version "7.12.17" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz#d1fbf012e1a79b7eebbfdc6d270baaf8d9eb9831" - integrity sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw== - -"@babel/helpers@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.0.tgz#ea9b6be9478a13d6f961dbb5f36bf75e2f3b8f62" - integrity sha512-+ufuXprtQ1D1iZTO/K9+EBRn+qPWMJjZSw/S0KlFrxCw4tkrzv9grgpDHkY9MeQTjTY8i2sp7Jep8DfU6tN9Mg== - dependencies: - "@babel/template" "^7.12.13" - "@babel/traverse" "^7.14.0" - "@babel/types" "^7.14.0" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.12.13": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.14.0.tgz#3197e375711ef6bf834e67d0daec88e4f46113cf" - integrity sha512-YSCOwxvTYEIMSGaBQb5kDDsCopDdiUGsqpatp3fOlI4+2HQSkTmEVWnVuySdAC5EWCqSWWTv0ib63RjR7dTBdg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.0" +"@babel/helper-function-name@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" + integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== + dependencies: + "@babel/helper-get-function-arity" "^7.14.5" + "@babel/template" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/helper-get-function-arity@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" + integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-hoist-variables@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" + integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-member-expression-to-functions@^7.14.5": + version "7.14.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz#97e56244beb94211fe277bd818e3a329c66f7970" + integrity sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-module-imports@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" + integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-module-transforms@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz#7de42f10d789b423eb902ebd24031ca77cb1e10e" + integrity sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA== + dependencies: + "@babel/helper-module-imports" "^7.14.5" + "@babel/helper-replace-supers" "^7.14.5" + "@babel/helper-simple-access" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/helper-validator-identifier" "^7.14.5" + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/helper-optimise-call-expression@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" + integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-replace-supers@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz#0ecc0b03c41cd567b4024ea016134c28414abb94" + integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.14.5" + "@babel/helper-optimise-call-expression" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/helper-simple-access@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz#66ea85cf53ba0b4e588ba77fc813f53abcaa41c4" + integrity sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw== + dependencies: + "@babel/types" "^7.14.5" + +"@babel/helper-split-export-declaration@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" + integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== + dependencies: + "@babel/types" "^7.14.5" + +"@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/helper-validator-option@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" + integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== + +"@babel/helpers@^7.14.6": + version "7.14.6" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.6.tgz#5b58306b95f1b47e2a0199434fa8658fa6c21635" + integrity sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA== + dependencies: + "@babel/template" "^7.14.5" + "@babel/traverse" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": + 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" -"@babel/parser@^7.12.13", "@babel/parser@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.2.tgz#0c1680aa44ad4605b16cbdcc5c341a61bde9c746" - integrity sha512-IoVDIHpsgE/fu7eXBeRWt8zLbDrSvD7H1gpomOkPpBoEN8KCruCqSDdqo8dddwQQrui30KSvQBaMUOJiuFu6QQ== - -"@babel/template@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.13.tgz#530265be8a2589dbb37523844c5bcb55947fb327" - integrity sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/parser" "^7.12.13" - "@babel/types" "^7.12.13" - -"@babel/traverse@^7.13.0", "@babel/traverse@^7.14.0", "@babel/traverse@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.2.tgz#9201a8d912723a831c2679c7ebbf2fe1416d765b" - integrity sha512-TsdRgvBFHMyHOOzcP9S6QU0QQtjxlRpEYOy3mcCO5RgmC305ki42aSAmfZEMSSYBla2oZ9BMqYlncBaKmD/7iA== - dependencies: - "@babel/code-frame" "^7.12.13" - "@babel/generator" "^7.14.2" - "@babel/helper-function-name" "^7.14.2" - "@babel/helper-split-export-declaration" "^7.12.13" - "@babel/parser" "^7.14.2" - "@babel/types" "^7.14.2" +"@babel/parser@^7.14.5", "@babel/parser@^7.14.6", "@babel/parser@^7.14.7": + version "7.14.7" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.7.tgz#6099720c8839ca865a2637e6c85852ead0bdb595" + integrity sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA== + +"@babel/template@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" + integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/parser" "^7.14.5" + "@babel/types" "^7.14.5" + +"@babel/traverse@^7.14.5": + version "7.14.7" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.7.tgz#64007c9774cfdc3abd23b0780bc18a3ce3631753" + integrity sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ== + dependencies: + "@babel/code-frame" "^7.14.5" + "@babel/generator" "^7.14.5" + "@babel/helper-function-name" "^7.14.5" + "@babel/helper-hoist-variables" "^7.14.5" + "@babel/helper-split-export-declaration" "^7.14.5" + "@babel/parser" "^7.14.7" + "@babel/types" "^7.14.5" debug "^4.1.0" globals "^11.1.0" -"@babel/types@^7.12.13", "@babel/types@^7.13.12", "@babel/types@^7.14.0", "@babel/types@^7.14.2": - version "7.14.2" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.2.tgz#4208ae003107ef8a057ea8333e56eb64d2f6a2c3" - integrity sha512-SdjAG/3DikRHpUOjxZgnkbR11xUlyDMUFJdvnIgZEE16mqmY0BINMmc4//JMJglEmn6i7sq6p+mGrFWyZ98EEw== +"@babel/types@^7.14.5": + version "7.14.5" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff" + integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg== dependencies: - "@babel/helper-validator-identifier" "^7.14.0" + "@babel/helper-validator-identifier" "^7.14.5" to-fast-properties "^2.0.0" -"@eslint/eslintrc@^0.4.1": - version "0.4.1" - resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.1.tgz#442763b88cecbe3ee0ec7ca6d6dd6168550cbf14" - integrity sha512-5v7TDE9plVhvxQeWLXDTvFvJBdH6pEsdnl2g/dAptmuFEPedQ4Erq5rsDsX+mvAM610IhNaO2W5V1dOOnDKxkQ== +"@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 "^12.1.0" + globals "^13.9.0" ignore "^4.0.6" import-fresh "^3.2.1" js-yaml "^3.13.1" @@ -265,9 +273,9 @@ ajv@^6.10.0, ajv@^6.12.4: uri-js "^4.2.2" ajv@^8.0.1: - version "8.4.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-8.4.0.tgz#48984fdb2ce225cab15795f0772a8d85669075e4" - integrity sha512-7QD2l6+KBSLwf+7MuYocbWvRPdOu63/trReTLu2KFwkgctnub1auoF+Y1WYcm09CTM7quuscrzqmASaLHC/K4Q== + 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" @@ -1137,7 +1145,7 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserslist@^4.14.5: +browserslist@^4.16.6: version "4.16.6" resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== @@ -1243,9 +1251,9 @@ camelcase@^6.0.0: integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== caniuse-lite@^1.0.30001219: - version "1.0.30001228" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001228.tgz#bfdc5942cd3326fa51ee0b42fbef4da9d492a7fa" - integrity sha512-QQmLOGJ3DEgokHbMSA8cj2a+geXqmnpyOFT0lhQV6P3/YOJvGDEwoedcwxEQ30gJIwIIunHIicunJ2rzK5gB2A== + version "1.0.30001241" + resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001241.tgz#cd3fae47eb3d7691692b406568d7a3e5b23c7598" + integrity sha512-1uoSZ1Pq1VpH0WerIMqwptXHNNGfdl7d1cJUFs80CwQ/lVzdhTvsFZCeNFslze7AjsQnb4C85tzclPa1VShbeQ== center-align@^0.1.1, center-align@^0.1.3: version "0.1.3" @@ -1661,9 +1669,9 @@ continuation-local-storage@^3.1.1: emitter-listener "^1.1.1" convert-source-map@^1.5.0, convert-source-map@^1.7.0: - version "1.7.0" - resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" - integrity sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA== + 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" @@ -2011,9 +2019,9 @@ each-props@^1.3.2: object.defaults "^1.1.0" electron-to-chromium@^1.3.723: - version "1.3.728" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.728.tgz#dbedd6373f595ae10a13d146b66bece4c1afa5bd" - integrity sha512-SHv4ziXruBpb1Nz4aTuqEHBYi/9GNCJMYIJgDEXrp/2V01nFXMNFUTli5Z85f5ivSkioLilQatqBYFB44wNJrA== + version "1.3.761" + resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.761.tgz#6a1748bab8ed94984391ec8be8a7e7ec1fe3d843" + integrity sha512-7a/wV/plM/b95XjTdA2Q4zAxxExTDKkNQpTiaU/nVT8tGCQVtX9NsnTjhALBFICpOB58hU6xg5fFC3CT2Bybpg== emitter-listener@^1.1.1: version "1.1.2" @@ -2219,7 +2227,7 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-string-regexp@4.0.0: +escape-string-regexp@4.0.0, 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== @@ -2255,27 +2263,29 @@ eslint-visitor-keys@^2.0.0: integrity sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw== eslint@^7.26.0: - version "7.26.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.26.0.tgz#d416fdcdcb3236cd8f282065312813f8c13982f6" - integrity sha512-4R1ieRf52/izcZE7AlLy56uIHHDLT74Yzz2Iv2l6kDaYvEu9x+wMB5dZArVL8SYGXSYV2YAg70FcW5Y5nGGNIg== + 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.1" + "@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.0.0" + glob-parent "^5.1.2" globals "^13.6.0" ignore "^4.0.6" import-fresh "^3.0.0" @@ -2284,7 +2294,7 @@ eslint@^7.26.0: js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" levn "^0.4.1" - lodash "^4.17.21" + lodash.merge "^4.6.2" minimatch "^3.0.4" natural-compare "^1.4.0" optionator "^0.9.1" @@ -2293,7 +2303,7 @@ eslint@^7.26.0: semver "^7.2.1" strip-ansi "^6.0.0" strip-json-comments "^3.1.0" - table "^6.0.4" + table "^6.0.9" text-table "^0.2.0" v8-compile-cache "^2.0.3" @@ -2544,7 +2554,7 @@ fancy-log@^1.1.0, fancy-log@^1.3.2: parse-node-version "^1.0.0" time-stamp "^1.0.0" -fast-deep-equal@^3.1.1: +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== @@ -3136,7 +3146,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.0.0, glob-parent@~5.1.0: +glob-parent@^5.1.2, glob-parent@~5.1.0: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow== @@ -3320,17 +3330,10 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -globals@^12.1.0: - version "12.4.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-12.4.0.tgz#a18813576a41b00a24a97e7f815918c2e19925f8" - integrity sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg== - dependencies: - type-fest "^0.8.1" - -globals@^13.6.0: - version "13.8.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-13.8.0.tgz#3e20f504810ce87a8d72e55aecf8435b50f4c1b3" - integrity sha512-rHtdA6+PDBIjeEvA91rpqzEvk/k3/i7EeNQiryiWuJH0Hw9cpyJMAt2jtbAwUaRdhD+573X4vWw6IcjKPasi9Q== +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" @@ -5031,6 +5034,11 @@ lodash.keys@^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" @@ -5084,11 +5092,6 @@ lodash@^3.10.1, lodash@^3.5.0, lodash@^3.6.0, lodash@^3.7.0: resolved "https://registry.yarnpkg.com/lodash/-/lodash-3.10.1.tgz#5bf45e8e49ba4189e17d482789dfd15bd140b7b6" integrity sha1-W/Rejkm6QYnhfUgnid/RW9FAt7Y= -lodash@^4.17.21: - version "4.17.21" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c" - integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg== - lodash@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/lodash/-/lodash-1.0.2.tgz#8f57560c83b59fc270bd3d561b690043430e2551" @@ -5161,14 +5164,6 @@ logging-helpers@^0.4.0: dependencies: chalk "^1.0.0" -logging-helpers@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/logging-helpers/-/logging-helpers-1.0.0.tgz#b5a37b32ad53eb0137c58c7898a47b175ddb7c36" - integrity sha512-qyIh2goLt1sOgQQrrIWuwkRjUx4NUcEqEGAcYqD8VOnOC6ItwkrVE8/tA4smGpjzyp4Svhc6RodDp9IO5ghpyA== - dependencies: - isobject "^3.0.0" - log-utils "^0.2.1" - longest-value@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/longest-value/-/longest-value-0.2.0.tgz#b77832b0ea5fa5a2c4a1bea9e08d7d15be697b5b" @@ -5736,9 +5731,9 @@ node-preload@^0.2.1: process-on-spawn "^1.0.0" node-releases@^1.1.71: - version "1.1.72" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.72.tgz#14802ab6b1039a79a0c7d662b610a5bbd76eacbe" - integrity sha512-LLUo+PpH3dU6XizX3iVoubUNheF/owjXCZZ5yACDxNnPtgFuludV1ZL3ayK1kVep42Rmm0+R9/Y60NQbZ2bifw== + version "1.1.73" + resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" + integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== noncharacters@^1.1.0: version "1.1.0" @@ -6338,9 +6333,9 @@ path-key@^3.1.0: integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q== path-parse@^1.0.6: - version "1.0.6" - resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" - integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + 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" @@ -6386,9 +6381,9 @@ pick-from@^0.1.0: object.pick "^1.1.0" picomatch@^2.0.4, picomatch@^2.2.1: - version "2.2.3" - resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.3.tgz#465547f359ccc206d3c48e46a1bcb89bf7ee619d" - integrity sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg== + version "2.3.0" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.0.tgz#f1f061de8f6a4bf022892e2d128234fb98302972" + integrity sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw== pify@^2.0.0: version "2.3.0" @@ -6703,9 +6698,9 @@ regexp.prototype.flags@^1.2.0: define-properties "^1.1.3" regexpp@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" - integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + 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" @@ -7040,9 +7035,9 @@ set-blocking@^2.0.0: integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= set-getter@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/set-getter/-/set-getter-0.1.0.tgz#d769c182c9d5a51f409145f2fba82e5e86e80376" - integrity sha1-12nBgsnVpR9AkUXy+6guXoboA3Y= + 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" @@ -7298,9 +7293,9 @@ spdx-expression-parse@^3.0.0: spdx-license-ids "^3.0.0" spdx-license-ids@^3.0.0: - version "3.0.7" - resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" - integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== + 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" @@ -7498,9 +7493,9 @@ strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1. integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== striptags@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/striptags/-/striptags-3.1.1.tgz#c8c3e7fdd6fb4bb3a32a3b752e5b5e3e38093ebd" - integrity sha1-yMPn/db7S7OjKjt1LltePjgJPr0= + 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" @@ -7541,7 +7536,7 @@ sver-compat@^1.5.0: es6-iterator "^2.0.1" es6-symbol "^3.1.1" -table@^6.0.4: +table@^6.0.9: version "6.7.1" resolved "https://registry.yarnpkg.com/table/-/table-6.7.1.tgz#ee05592b7143831a8c94f3cee6aae4c1ccef33e2" integrity sha512-ZGum47Yi6KOOFDE8m223td53ath2enHcYLgOCjGr5ngu8bdIARQk6mN/wRMv4yMRcHnCSnHbCEha4sobQx5yWg== @@ -7953,7 +7948,7 @@ type-fest@^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-fest@^0.8.0, type-fest@^0.8.1: +type-fest@^0.8.0: version "0.8.1" resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== @@ -7988,9 +7983,9 @@ typeof-article@^0.1.1: kind-of "^3.1.0" uglify-js@^3.1.4: - version "3.13.6" - resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.13.6.tgz#6815ac7fdd155d03c83e2362bb717e5b39b74013" - integrity sha512-rRprLwl8RVaS+Qvx3Wh5hPfPBn9++G6xkGlUupya0s5aDmNjI7z3lnRLB3u7sN4OmbB0pWgzhM9BEJyiWAwtAA== + 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" @@ -8676,9 +8671,9 @@ yargs-parser@^18.1.2: decamelize "^1.2.0" yargs-parser@^20.2.2: - version "20.2.7" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.7.tgz#61df85c113edfb5a7a4e36eb8aa60ef423cbc90a" - integrity sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw== + 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" From 4a3f2c7e594d35d07122ac59dbcd5f3c6985b728 Mon Sep 17 00:00:00 2001 From: Maurits Lourens Date: Mon, 20 Sep 2021 16:14:30 +0200 Subject: [PATCH 027/133] fix example code for avg helper --- lib/math.js | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/lib/math.js b/lib/math.js index a0f01e04..281c5be8 100644 --- a/lib/math.js +++ b/lib/math.js @@ -43,7 +43,7 @@ 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}} * * ``` * @@ -54,7 +54,7 @@ helpers.add = function(a, b) { */ 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; @@ -138,7 +138,7 @@ helpers.minus = function(a, b) { * @param {Number} `b` * @return {Number} * @api public - * @example {{ modulo 10 5 }} -> 0 + * @example {{ modulo 10 5 }} -> 0 */ helpers.modulo = function(a, b) { @@ -198,7 +198,7 @@ helpers.plus = function(a, b) { * @param {Number} `max` * @return {String} * @api public - * @example {{ random 0 20 }} -> 10 + * @example {{ random 0 20 }} -> 10 */ helpers.random = function(min, max) { @@ -217,7 +217,7 @@ helpers.random = function(min, max) { * @param {Number} `a` a * @param {Number} `b` b * @api public - * @example {{ remainder 10 6 }} -> 4 + * @example {{ remainder 10 6 }} -> 4 */ helpers.remainder = function(a, b) { From 1d107cbc86884cbff4c1fa2c95fd546b49c7c698 Mon Sep 17 00:00:00 2001 From: Maurits Lourens Date: Mon, 20 Sep 2021 23:09:31 +0200 Subject: [PATCH 028/133] forgot to change the example doc --- lib/math.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/math.js b/lib/math.js index 281c5be8..6cac7710 100644 --- a/lib/math.js +++ b/lib/math.js @@ -50,7 +50,7 @@ helpers.add = function(a, b) { * @param {Array} `array` Array of numbers to add up. * @return {Number} * @api public - * @example {{ avg [1,2,3,4,5] }} -> 3 + * @example {{ avg 1 2 3 4 5 }} -> 3 */ helpers.avg = function() { From 7258ea3aa30e96963d31324a3b17beb4f058ca08 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Tue, 21 Sep 2021 17:40:14 +0100 Subject: [PATCH 029/133] Bumping version. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 86a5eefc..4582ab20 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.11.5", + "version": "0.11.6", "homepage": "https://github.com/Budibase/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ From 8f9811665aa9e5d0178f6adee26705226f9e550e Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 7 Oct 2021 12:48:10 +0100 Subject: [PATCH 030/133] Removing use of falsey module, which will not build due to programming errors. --- lib/comparison.js | 2 +- lib/utils/falsey.js | 37 +++++++++++++++++++++++++++++++++++++ package.json | 1 - 3 files changed, 38 insertions(+), 2 deletions(-) create mode 100644 lib/utils/falsey.js diff --git a/lib/comparison.js b/lib/comparison.js index 7916e7d5..962de3a3 100644 --- a/lib/comparison.js +++ b/lib/comparison.js @@ -3,7 +3,7 @@ var has = require('has-value'); var util = require('handlebars-utils'); var utils = require('./utils'); -const falsey = require('falsey'); +const falsey = require('./utils/falsey'); const isEven = require('is-even'); var helpers = module.exports; diff --git a/lib/utils/falsey.js b/lib/utils/falsey.js new file mode 100644 index 00000000..c3caa89a --- /dev/null +++ b/lib/utils/falsey.js @@ -0,0 +1,37 @@ +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/package.json b/package.json index 4582ab20..17f4d7b5 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,6 @@ "array-sort": "^1.0.0", "define-property": "^2.0.2", "extend-shallow": "^3.0.2", - "falsey": "^1.0.0", "for-in": "^1.0.2", "get-object": "^0.2.0", "get-value": "^3.0.1", From 3384005aa13c701895c14e970e36bad8b50da813 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 7 Oct 2021 12:49:03 +0100 Subject: [PATCH 031/133] bumping version. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 17f4d7b5..36a2b3e8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.11.6", + "version": "0.11.7", "homepage": "https://github.com/Budibase/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ From b46b83cf7328afaf6d513fb44c1caefee6f5fd74 Mon Sep 17 00:00:00 2001 From: Ilker Guller <694940+Sly777@users.noreply.github.com> Date: Sat, 16 Oct 2021 16:46:32 +0200 Subject: [PATCH 032/133] Updated commands on installation --- README.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index eda257cf..8b8feb1c 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Install with [yarn](https://yarnpkg.com): ```sh -$ yarn add handlebars-helpers +$ yarn add @budibase/handlebars-helpers ``` ## Usage @@ -32,7 +32,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 ``` @@ -41,11 +41,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 ``` @@ -55,7 +55,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 ``` @@ -63,7 +63,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 }); From 3c05692050ade9e661054425dc4f5138cf51ac3b Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Wed, 12 Jan 2022 15:16:13 +0000 Subject: [PATCH 033/133] Some minor tweaks. --- README.md | 10 ++-------- lib/utils/createFrame.js | 7 ------- lib/utils/falsey.js | 2 ++ package.json | 2 +- 4 files changed, 5 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index eda257cf..cd7e357b 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,6 @@ -## Budibase handlebars-helpers +## handlebars-helpers -*NOTE: This is a fork of the handlebars-helpers repo to prepare it for use with rollup as part of Budibase.* - -[![Prod Dependencies](https://github.com/Budibase/handlebars-helpers/status.svg)](https://github.com/Budibase/handlebars-helpers) -[![Dev Dependencies](https://github.com/Budibase/handlebars-helpers/dev-status.svg)](https://github.com/Budibase/handlebars-helpers#info=devDependencies) - -[![Build](https://github.com/Budibase/handlebars-helpers/actions/workflows/node.js.yml/badge.svg)](https://github.com/Budibase/handlebars-helpers/actions/workflows/node.js.yml) -[![Build Matrix](http://github-actions.40ants.com/Budibase/handlebars-helper/matrix.svg)](https://github.com/Budibase/handlebars-helpers +[![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) > 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. diff --git a/lib/utils/createFrame.js b/lib/utils/createFrame.js index da48993b..8792b526 100644 --- a/lib/utils/createFrame.js +++ b/lib/utils/createFrame.js @@ -1,10 +1,3 @@ -/*! - * create-frame - * - * Copyright (c) 2015, Jon Schlinkert. - * Licensed under the MIT License. - */ - 'use strict'; const define = require('define-property'); diff --git a/lib/utils/falsey.js b/lib/utils/falsey.js index c3caa89a..a0e43f85 100644 --- a/lib/utils/falsey.js +++ b/lib/utils/falsey.js @@ -1,3 +1,5 @@ +'use strict'; + function falsey(val, keywords) { if (!val) return true; let words = keywords || falsey.keywords; diff --git a/package.json b/package.json index 36a2b3e8..a10007f6 100644 --- a/package.json +++ b/package.json @@ -53,7 +53,7 @@ "Thomas Jaggi (http://responsive.ch)", "Tim Douglas (https://github.com/timdouglas)", "(https://github.com/homersimpsons)", - "Michael Drury (https://github.com/mike12345567" + "Michael Drury (https://github.com/mike12345567)" ], "repository": "helpers/handlebars-helpers", "bugs": { From 3725026b0dc244dde66528e6eebd2b81860817c0 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Wed, 12 Jan 2022 16:01:20 +0000 Subject: [PATCH 034/133] Updating comparisons to be inline with util usage. --- lib/comparison.js | 6 +++--- lib/utils/odd.js | 15 +++++++++++++++ 2 files changed, 18 insertions(+), 3 deletions(-) create mode 100644 lib/utils/odd.js diff --git a/lib/comparison.js b/lib/comparison.js index 962de3a3..e2765436 100644 --- a/lib/comparison.js +++ b/lib/comparison.js @@ -4,7 +4,7 @@ var has = require('has-value'); var util = require('handlebars-utils'); var utils = require('./utils'); const falsey = require('./utils/falsey'); -const isEven = require('is-even'); +const isOdd = require('./utils/odd'); var helpers = module.exports; /** @@ -321,7 +321,7 @@ helpers.isTruthy = function(val, options) { */ helpers.ifEven = function(num, options) { - return util.value(isEven(num), this, options); + return util.value(!isOdd(num), this, options); }; /** @@ -363,7 +363,7 @@ helpers.ifNth = function(a, b, options) { */ helpers.ifOdd = function(val, options) { - return util.value(!isEven(val), this, options); + return util.value(isOdd(val), this, options); }; /** diff --git a/lib/utils/odd.js b/lib/utils/odd.js new file mode 100644 index 00000000..6108d162 --- /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; +}; \ No newline at end of file From 7243aa2a793983db75a8d45cd96d5836a1329cd9 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Mon, 31 Jan 2022 10:24:44 +0000 Subject: [PATCH 035/133] Removing markdown and date helpers, which add nearly 2MB to the bundle size. --- README.md | 320 ----------------------------------------------- lib/date.js | 24 ---- lib/index.js | 6 +- lib/markdown.js | 55 -------- package.json | 3 - test/fs.js | 127 ------------------- test/markdown.js | 26 ---- test/match.js | 2 +- yarn.lock | 21 +--- 9 files changed, 5 insertions(+), 579 deletions(-) delete mode 100644 lib/date.js delete mode 100644 lib/markdown.js delete mode 100644 test/fs.js delete mode 100644 test/markdown.js diff --git a/README.md b/README.md index cd7e357b..2010b5f5 100644 --- a/README.md +++ b/README.md @@ -77,12 +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)) -* **[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)) @@ -173,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)) @@ -214,13 +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)) -### [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)) @@ -1361,51 +1335,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) @@ -1573,43 +1502,6 @@ Returns an ordinalized number as a string. ``` -## 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) @@ -3047,218 +2939,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 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/index.js b/lib/index.js index b2680b0c..bb267300 100644 --- a/lib/index.js +++ b/lib/index.js @@ -5,12 +5,12 @@ module.exports = { code: require('./code'), collection: require('./collection'), comparison: require('./comparison'), - date: require('./date'), - fs: require('./fs'), + //date: require('./date'), + //fs: require('./fs'), html: require('./html'), i18n: require('./i18n'), inflection: require('./inflection'), - markdown: require('./markdown'), + //markdown: require('./markdown'), match: require('./match'), math: require('./math'), misc: require('./misc'), diff --git a/lib/markdown.js b/lib/markdown.js deleted file mode 100644 index 0b589133..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/package.json b/package.json index a10007f6..9e96e033 100644 --- a/package.json +++ b/package.json @@ -84,8 +84,6 @@ "handlebars": "^4.7.7", "handlebars-utils": "^1.0.6", "has-value": "^2.0.2", - "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", @@ -169,7 +167,6 @@ }, "reflinks": [ "falsey", - "helper-date", "moment" ], "helpers": [ diff --git a/test/fs.js b/test/fs.js deleted file mode 100644 index 79fbaaf3..00000000 --- a/test/fs.js +++ /dev/null @@ -1,127 +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', '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', '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..90dac926 100644 --- a/test/match.js +++ b/test/match.js @@ -20,7 +20,7 @@ describe('matching', function() { 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'); }); it('should take options from the "options[helper name]" object', function() { diff --git a/yarn.lock b/yarn.lock index 7f150c90..4201ee85 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2539,11 +2539,6 @@ extract-gfm@^0.1.0: dependencies: kind-of "^5.0.2" -"falsey@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/falsey/-/falsey-1.0.0.tgz#71bdd775c24edad9f2f5c015ce8be24400bb5d7d" - integrity sha512-zMDNZ/Ipd8MY0+346CPvhzP1AsiVyNfTOayJza4reAIWf72xbkuFUDcJNxSAsQE1b9Bu0wijKb8Ngnh/a7fI5w== - 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" @@ -3524,7 +3519,7 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" -handlebars-utils@^1.0.2, handlebars-utils@^1.0.4, handlebars-utils@^1.0.6: +handlebars-utils@^1.0.4, handlebars-utils@^1.0.6: version "1.0.6" resolved "https://registry.yarnpkg.com/handlebars-utils/-/handlebars-utils-1.0.6.tgz#cb9db43362479054782d86ffe10f47abc76357f9" integrity sha512-d5mmoQXdeEqSKMtQQZ9WkiUcO1E3tPbWxluCK9hVgIDPzQa9WsKo3Lbe/sGflTe7TomHEeZaOgwIkyIr1kfzkw== @@ -3784,15 +3779,6 @@ helper-license@^0.2.1: markdown-utils "^0.6.0" mixin-deep "^1.0.1" -helper-markdown@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/helper-markdown/-/helper-markdown-1.0.0.tgz#ee7e9fc554675007d37eb90f7853b13ce74f3e10" - integrity sha512-AnDqMS4ejkQK0MXze7pA9TM3pu01ZY+XXsES6gEE0RmCGk5/NIfvTn0NmItfyDOjRAzyo9z6X7YHbHX4PzIvOA== - dependencies: - handlebars-utils "^1.0.2" - highlight.js "^9.12.0" - remarkable "^1.7.1" - helper-md@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/helper-md/-/helper-md-0.2.2.tgz#c1f59d7e55bbae23362fd8a0e971607aec69d41f" @@ -3881,11 +3867,6 @@ helper-toc@^0.2.0: mixin-deep "^1.1.0" relative "^3.0.0" -highlight.js@^9.12.0: - version "9.18.5" - resolved "https://registry.yarnpkg.com/highlight.js/-/highlight.js-9.18.5.tgz#d18a359867f378c138d6819edfc2a8acd5f29825" - integrity sha512-a5bFyofd/BHCX52/8i8uJkjr9DYwXIPnM/plwI6W7ezItLGqzt7X2G2nXuYSfsIJdkwwj/g9DG1LkcGJI/dDoA== - 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" From c4dd7aedace94808b20482803d7e5edfe630c4c5 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Mon, 31 Jan 2022 10:25:09 +0000 Subject: [PATCH 036/133] v0.11.8 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9e96e033..af613bb3 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.11.7", + "version": "0.11.8", "homepage": "https://github.com/Budibase/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ From 5ba93f50854d3c35a0a6e122e9b8ce6fe8570379 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Mon, 31 Jan 2022 10:27:25 +0000 Subject: [PATCH 037/133] Linting fix. --- lib/utils/odd.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utils/odd.js b/lib/utils/odd.js index 6108d162..38595046 100644 --- a/lib/utils/odd.js +++ b/lib/utils/odd.js @@ -12,4 +12,4 @@ module.exports = function isOdd(value) { throw new Error('value exceeds maximum safe integer'); } return (n % 2) === 1; -}; \ No newline at end of file +}; From 16b7deea2e2675b1519b44adf16141853bf2ad5e Mon Sep 17 00:00:00 2001 From: David Pfahler Date: Thu, 13 Oct 2022 17:16:57 +0200 Subject: [PATCH 038/133] fix(README): fix incorrect syntax for ellipsis length argument --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2010b5f5..806a2126 100644 --- a/README.md +++ b/README.md @@ -2366,9 +2366,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}} ``` From c3ffbdf6c8f365bf7609b72f4c092d559445cfdf Mon Sep 17 00:00:00 2001 From: Connor Skees Date: Wed, 11 Jan 2023 16:08:16 -0500 Subject: [PATCH 039/133] remove unused dependencies --- package.json | 7 ++----- yarn.lock | 31 +------------------------------ 2 files changed, 3 insertions(+), 35 deletions(-) diff --git a/package.json b/package.json index af613bb3..1495cbc9 100644 --- a/package.json +++ b/package.json @@ -84,16 +84,13 @@ "handlebars": "^4.7.7", "handlebars-utils": "^1.0.6", "has-value": "^2.0.2", - "helper-md": "^0.2.2", "html-tag": "^2.0.0", - "is-even": "^1.0.0", "is-glob": "^4.0.1", "kind-of": "^6.0.3", "micromatch": "^3.1.5", "relative": "^3.0.2", "striptags": "^3.1.1", - "to-gfm-code-block": "^0.1.1", - "year": "^0.2.1" + "to-gfm-code-block": "^0.1.1" }, "devDependencies": { "engine-handlebars": "^0.8.2", @@ -187,4 +184,4 @@ } } } -} +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 4201ee85..8922966e 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2164,11 +2164,6 @@ enquirer@^2.3.5: dependencies: ansi-colors "^4.1.1" -ent@^2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/ent/-/ent-2.2.0.tgz#e964219325a21d05f44466a2f686ed6ce5f5dd1d" - integrity sha1-6WQhkyWiHQX0RGai9obtbOX13R0= - error-ex@^1.2.0: version "1.3.2" resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" @@ -3779,16 +3774,6 @@ helper-license@^0.2.1: markdown-utils "^0.6.0" mixin-deep "^1.0.1" -helper-md@^0.2.2: - version "0.2.2" - resolved "https://registry.yarnpkg.com/helper-md/-/helper-md-0.2.2.tgz#c1f59d7e55bbae23362fd8a0e971607aec69d41f" - integrity sha1-wfWdflW7riM2L9ig6XFgeuxp1B8= - dependencies: - ent "^2.2.0" - extend-shallow "^2.0.1" - fs-exists-sync "^0.1.0" - remarkable "^1.6.2" - helper-reflinks@^1.4.1: version "1.4.2" resolved "https://registry.yarnpkg.com/helper-reflinks/-/helper-reflinks-1.4.2.tgz#75927c81561c44aabaf44a457f4fd54eff4a50d8" @@ -4092,13 +4077,6 @@ is-equal-shallow@^0.1.3: dependencies: is-primitive "^2.0.0" -is-even@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-even/-/is-even-1.0.0.tgz#76b5055fbad8d294a86b6a949015e1c97b717c06" - integrity sha1-drUFX7rY0pSoa2qUkBXhyXtxfAY= - dependencies: - is-odd "^0.1.2" - 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" @@ -4213,13 +4191,6 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== -is-odd@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/is-odd/-/is-odd-0.1.2.tgz#bc573b5ce371ef2aad6e6f49799b72bef13978a7" - integrity sha1-vFc7XONx7yqtbm9JeZtyvvE5eKc= - dependencies: - is-number "^3.0.0" - 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" @@ -6709,7 +6680,7 @@ release-zalgo@^1.0.0: dependencies: es6-error "^4.0.1" -remarkable@^1.6.0, remarkable@^1.6.1, remarkable@^1.6.2, remarkable@^1.7.1: +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== From 8c40ab8ee2d4c8f11caa630745452189d48a1910 Mon Sep 17 00:00:00 2001 From: Conor Webb Date: Wed, 21 Jun 2023 13:53:03 +0100 Subject: [PATCH 040/133] Minor amends - removed duplicated helpers --- CHANGELOG | 6 ++++++ README.md | 17 +---------------- lib/math.js | 23 ++++------------------- lib/url.js | 20 +------------------- package.json | 2 +- 5 files changed, 13 insertions(+), 55 deletions(-) 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 313d82d5..7d2285ca 100644 --- a/README.md +++ b/README.md @@ -222,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) @@ -335,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)) @@ -1626,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** @@ -1697,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 @@ -2848,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 diff --git a/lib/math.js b/lib/math.js index 6cac7710..3994fb06 100644 --- a/lib/math.js +++ b/lib/math.js @@ -152,14 +152,14 @@ helpers.modulo = function(a, 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 {{ product 10 5 }} -> 50 + * @example {{ times 10 5 }} -> 50 */ helpers.multiply = function(a, b) { @@ -285,19 +285,4 @@ helpers.sum = function() { } } return sum; -}; - -/** - * Multiply number `a` by number `b`. - * - * @param {Number} `a` factor - * @param {Number} `b` multiplier - * @return {Number} - * @alias multiply - * @api public - * @example {{ times 10 5 }} -> 50 - */ - -helpers.times = function() { - return helpers.multiply.apply(this, arguments); -}; +}; \ No newline at end of file diff --git a/lib/url.js b/lib/url.js index 5a26789e..9951ae07 100644 --- a/lib/url.js +++ b/lib/url.js @@ -45,7 +45,7 @@ helpers.escape = function(str) { * @param {String} `str` * @return {String} * @api public - * @example {{ escape 'https://myurl?Hello%20There' }} -> https://myurl?Hello+There + * @example {{ decodeURI 'https://myurl?Hello%20There' }} -> https://myurl?=Hello There */ helpers.decodeURI = function(str) { @@ -54,24 +54,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. diff --git a/package.json b/package.json index 1495cbc9..95590757 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.11.8", + "version": "0.11.9", "homepage": "https://github.com/Budibase/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ From 5594282efaa99358a0b5b6ef15314dd1e45f5d3b Mon Sep 17 00:00:00 2001 From: Conor Webb Date: Wed, 21 Jun 2023 14:02:56 +0100 Subject: [PATCH 041/133] Added line break to the end of math.js --- lib/math.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/math.js b/lib/math.js index 3994fb06..d93990d2 100644 --- a/lib/math.js +++ b/lib/math.js @@ -285,4 +285,4 @@ helpers.sum = function() { } } return sum; -}; \ No newline at end of file +}; From 134183ad70717230a461295ce2c97dce40cee74b Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Fri, 23 Jun 2023 09:50:46 +0100 Subject: [PATCH 042/133] Removing mac os build checks. --- .github/workflows/helpers_ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/helpers_ci.yml b/.github/workflows/helpers_ci.yml index 030c5812..07aba29d 100644 --- a/.github/workflows/helpers_ci.yml +++ b/.github/workflows/helpers_ci.yml @@ -29,7 +29,7 @@ jobs: matrix: # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ node-version: [10.x, 12.x, 14.x, 16.x] - os: [ubuntu-20.04, windows-2019, macos-10.15] + os: [ubuntu-20.04, windows-2019] steps: - name: Checkout GITHub code From 7aa4282de4b55c9d1e137bbc07347c6495cdf052 Mon Sep 17 00:00:00 2001 From: Conor Webb <126772285+ConorWebb96@users.noreply.github.com> Date: Fri, 23 Jun 2023 14:39:26 +0100 Subject: [PATCH 043/133] Fixed example error in multiply helper. (#10) Fixed example error where times was used for the multiply example. --- lib/math.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/math.js b/lib/math.js index d93990d2..77884435 100644 --- a/lib/math.js +++ b/lib/math.js @@ -159,7 +159,7 @@ helpers.modulo = function(a, b) { * @return {Number} * @alias multiply * @api public - * @example {{ times 10 5 }} -> 50 + * @example {{ multiply 10 5 }} -> 50 */ helpers.multiply = function(a, b) { From 8dc0503c3183335110dcf0f70fa120935c2c5ae3 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Wed, 13 Dec 2023 17:39:00 +0000 Subject: [PATCH 044/133] Adding UUID functionality to helpers, so that it can easily be used on backend as well as frontned (rather than depending on crypto). --- lib/index.js | 3 ++- lib/uuid.js | 22 ++++++++++++++++++++++ package.json | 7 ++++--- test/match.js | 6 +++--- test/uuid.js | 13 +++++++++++++ yarn.lock | 5 +++++ 6 files changed, 49 insertions(+), 7 deletions(-) create mode 100644 lib/uuid.js create mode 100644 test/uuid.js diff --git a/lib/index.js b/lib/index.js index bb267300..2bd6c3a4 100644 --- a/lib/index.js +++ b/lib/index.js @@ -19,5 +19,6 @@ module.exports = { path: require('./path'), regex: require('./regex'), string: require('./string'), - url: require('./url') + url: require('./url'), + uuid: require('./uuid'), }; diff --git a/lib/uuid.js b/lib/uuid.js new file mode 100644 index 00000000..a443400f --- /dev/null +++ b/lib/uuid.js @@ -0,0 +1,22 @@ +const uuid = require('uuid'); +const helpers = module.exports; + +function baseUUID() { + return uuid.v4(); +} + +/** + * Generates a UUID, using the V4 method (identical to the browser crypto.randomUUID function). + * + * @return {String} A newly generated UUID. + * @api public + * @example {{ UUID }} -> + */ +helpers.uuid = function() { + return baseUUID(); +}; + +// upper case coverage just incase +helpers.UUID = function() { + return baseUUID(); +}; \ No newline at end of file diff --git a/package.json b/package.json index 95590757..2af0d21a 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.11.9", + "version": "0.11.10", "homepage": "https://github.com/Budibase/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ @@ -90,7 +90,8 @@ "micromatch": "^3.1.5", "relative": "^3.0.2", "striptags": "^3.1.1", - "to-gfm-code-block": "^0.1.1" + "to-gfm-code-block": "^0.1.1", + "uuid": "^9.0.1" }, "devDependencies": { "engine-handlebars": "^0.8.2", @@ -184,4 +185,4 @@ } } } -} \ No newline at end of file +} diff --git a/test/match.js b/test/match.js index 90dac926..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'); + 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/uuid.js b/test/uuid.js new file mode 100644 index 00000000..5093874b --- /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 return an empty string if undefined', 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 index 8922966e..44d30301 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8110,6 +8110,11 @@ uuid@^3.3.3: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +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" From dc568b70d29fcca3428df6698a9fb0fcb47db90e Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Wed, 13 Dec 2023 17:51:57 +0000 Subject: [PATCH 045/133] Updating example. --- lib/uuid.js | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/lib/uuid.js b/lib/uuid.js index a443400f..6c6a5bdd 100644 --- a/lib/uuid.js +++ b/lib/uuid.js @@ -1,22 +1,14 @@ const uuid = require('uuid'); const helpers = module.exports; -function baseUUID() { - return uuid.v4(); -} - /** * Generates a UUID, using the V4 method (identical to the browser crypto.randomUUID function). * * @return {String} A newly generated UUID. * @api public - * @example {{ UUID }} -> + * @example {{ uuid }} -> f34ebc66-93bd-4f7c-b79b-92b5569138bc */ helpers.uuid = function() { - return baseUUID(); + return uuid.v4(); }; -// upper case coverage just incase -helpers.UUID = function() { - return baseUUID(); -}; \ No newline at end of file From ae4d40ea721f2b58cc72c8f2c88c8fd5854390b5 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Wed, 13 Dec 2023 17:53:11 +0000 Subject: [PATCH 046/133] v0.11.11 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2af0d21a..220ef829 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.11.10", + "version": "0.11.11", "homepage": "https://github.com/Budibase/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ From e5174af9f7dd3f344e2a9c71d42f9c9b7ac3f053 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Wed, 13 Dec 2023 17:54:56 +0000 Subject: [PATCH 047/133] Fixing test case. --- test/uuid.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/uuid.js b/test/uuid.js index 5093874b..5d845780 100644 --- a/test/uuid.js +++ b/test/uuid.js @@ -6,8 +6,8 @@ const uuid = require('../lib/uuid'); describe('uuid', function() { describe('generate', function() { - it('should return an empty string if undefined', 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); + 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); }); }); }); From 2a8ba8498608ceb89f02441d76bad3b795bf9b8e Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Wed, 13 Dec 2023 18:19:32 +0000 Subject: [PATCH 048/133] Updating tests to use latest Node versions. --- .github/workflows/helpers_ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/helpers_ci.yml b/.github/workflows/helpers_ci.yml index 07aba29d..44bdee00 100644 --- a/.github/workflows/helpers_ci.yml +++ b/.github/workflows/helpers_ci.yml @@ -28,7 +28,7 @@ jobs: fail-fast: false matrix: # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ - node-version: [10.x, 12.x, 14.x, 16.x] + node-version: [18.x, 20.x] os: [ubuntu-20.04, windows-2019] steps: From c267bd58ed4a895e61ea64e98e3b2e14e2d2671c Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Wed, 13 Dec 2023 18:34:38 +0000 Subject: [PATCH 049/133] Removing dangling comma (lint). --- lib/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/index.js b/lib/index.js index 2bd6c3a4..f5ab2e30 100644 --- a/lib/index.js +++ b/lib/index.js @@ -20,5 +20,5 @@ module.exports = { regex: require('./regex'), string: require('./string'), url: require('./url'), - uuid: require('./uuid'), + uuid: require('./uuid') }; From 9c8ea54fb206e3f3e8a98c685f7bb4425084238b Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 9 Jan 2024 13:24:07 +0100 Subject: [PATCH 050/133] Remove array-sort usage --- lib/array.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/array.js b/lib/array.js index ab4ce01a..8dcb8272 100644 --- a/lib/array.js +++ b/lib/array.js @@ -2,7 +2,6 @@ var util = require('handlebars-utils'); var helpers = module.exports; -const arraySort = require('array-sort'); const getValue = require('get-value'); const createFrame = require('./utils/createFrame'); @@ -642,7 +641,12 @@ helpers.sortBy = function(array, prop, options) { if (!util.isString(prop) && typeof prop !== 'function') { return array.sort(); } - return arraySort.apply(null, args); + + if (typeof prop === 'function') { + return array.sort(prop); + } + + return array.sort((a, b) => (a[prop] > b[prop] ? 1 : -1)); } return ''; }; From d980f9539bd628db5513228bcc0227d614f8c198 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 9 Jan 2024 13:34:20 +0100 Subject: [PATCH 051/133] Remove kind-of usage --- lib/html.js | 5 ++--- lib/misc.js | 2 +- lib/object.js | 3 +-- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/lib/html.js b/lib/html.js index 291fed16..db23caf1 100644 --- a/lib/html.js +++ b/lib/html.js @@ -5,7 +5,6 @@ var util = require('handlebars-utils'); var html = require('./utils/html'); var parseAttr = html.parseAttributes; var helpers = module.exports; -const kindOf = require('kind-of'); const htmlTag = require('html-tag'); /** @@ -88,12 +87,12 @@ helpers.css = function(list, options) { */ helpers.js = function(context) { - if (kindOf(context) === 'object') { + if (typeof context === 'object' && context.hash) { var attr = parseAttr(context.hash); return ``; } - if (kindOf(context) === 'string') { + if (typeof context === 'string') { return ``; } diff --git a/lib/misc.js b/lib/misc.js index 906a932a..a132ef13 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -71,7 +71,7 @@ helpers.noop = function(options) { * @api public */ -helpers.typeOf = require('kind-of'); +helpers.typeOf = (val) => typeof val /** * Block helper that builds the context for the block diff --git a/lib/object.js b/lib/object.js index 32cbca40..97a79b84 100644 --- a/lib/object.js +++ b/lib/object.js @@ -5,7 +5,6 @@ var util = require('handlebars-utils'); var array = require('./array'); var helpers = module.exports; const getValue = require('get-value'); -const kindOf = require('kind-of'); const getObject = require('get-object'); const createFrame = require('./utils/createFrame'); @@ -184,7 +183,7 @@ helpers.hasOwn = function(context, key) { */ helpers.isObject = function(value) { - return kindOf(value) === 'object'; + return typeof value === 'object'; }; /** From 87673f539f6740d54faf655155c458bd49b360b4 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 9 Jan 2024 16:33:26 +0100 Subject: [PATCH 052/133] Remove array-sort package --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 220ef829..8ab93bef 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,6 @@ "clean": "./node_modules/.bin/rimraf .nyc_output" }, "dependencies": { - "array-sort": "^1.0.0", "define-property": "^2.0.2", "extend-shallow": "^3.0.2", "for-in": "^1.0.2", From 0a685a46a4ca11362b3401b3b8ae90e5e1572be7 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 10 Jan 2024 09:23:04 +0100 Subject: [PATCH 053/133] Remove define-property usages --- lib/utils/createFrame.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/utils/createFrame.js b/lib/utils/createFrame.js index 8792b526..0b78f703 100644 --- a/lib/utils/createFrame.js +++ b/lib/utils/createFrame.js @@ -1,19 +1,18 @@ 'use strict'; -const define = require('define-property'); const extend = require('extend-shallow'); module.exports = function createFrame(data) { - if (typeof(data) !== 'object') { + if (typeof (data) !== 'object') { throw new TypeError('createFrame expects data to be an object'); } var frame = extend({}, data); frame._parent = data; - define(frame, 'extend', function(data) { + frame.extend = function (data) { extend(this, data); - }); + }; if (arguments.length > 1) { var args = [].slice.call(arguments, 1); From cf69ff20d537422b0fa3deb5ce68d0c1a080cb69 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 10 Jan 2024 09:32:29 +0100 Subject: [PATCH 054/133] Remove define-property usages --- index.js | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index 4ede8993..fdfc2857 100644 --- a/index.js +++ b/index.js @@ -8,7 +8,6 @@ 'use strict'; var forIn = require('for-in'); -var define = require('define-property'); var lib = require('./lib/'); /** @@ -25,7 +24,7 @@ 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) { @@ -45,13 +44,13 @@ module.exports = function helpers(groups, options) { */ 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; - }); + }; }); /** From d9a6a642f11eee13e61fca4a8512075d52b502f1 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 10 Jan 2024 09:32:35 +0100 Subject: [PATCH 055/133] Lint --- lib/utils/createFrame.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/utils/createFrame.js b/lib/utils/createFrame.js index 0b78f703..aa3c3dbc 100644 --- a/lib/utils/createFrame.js +++ b/lib/utils/createFrame.js @@ -3,14 +3,14 @@ const extend = require('extend-shallow'); module.exports = function createFrame(data) { - if (typeof (data) !== 'object') { + if (typeof(data) !== 'object') { throw new TypeError('createFrame expects data to be an object'); } var frame = extend({}, data); frame._parent = data; - frame.extend = function (data) { + frame.extend = function(data) { extend(this, data); }; From e6ceb065c0964eeb26a6090a5904d8bf09b59f05 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 10 Jan 2024 09:33:21 +0100 Subject: [PATCH 056/133] Remove define-property package --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 8ab93bef..36507247 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,6 @@ "clean": "./node_modules/.bin/rimraf .nyc_output" }, "dependencies": { - "define-property": "^2.0.2", "extend-shallow": "^3.0.2", "for-in": "^1.0.2", "get-object": "^0.2.0", From d9b18bdaefbb265e2eefad7902017c613274464c Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 10 Jan 2024 09:40:59 +0100 Subject: [PATCH 057/133] Remove extend-shallow usages --- lib/utils/createFrame.js | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/lib/utils/createFrame.js b/lib/utils/createFrame.js index aa3c3dbc..ba552b11 100644 --- a/lib/utils/createFrame.js +++ b/lib/utils/createFrame.js @@ -1,17 +1,15 @@ 'use strict'; -const extend = require('extend-shallow'); - module.exports = function createFrame(data) { if (typeof(data) !== 'object') { throw new TypeError('createFrame expects data to be an object'); } - var frame = extend({}, data); + var frame = Object.assign({}, data); frame._parent = data; frame.extend = function(data) { - extend(this, data); + Object.assign(this, data); }; if (arguments.length > 1) { From 1fea98473cd73cd7bd41065a48c04ef55a31b74f Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 10 Jan 2024 09:41:26 +0100 Subject: [PATCH 058/133] Remove extend-shallow package --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 36507247..51cab525 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,6 @@ "clean": "./node_modules/.bin/rimraf .nyc_output" }, "dependencies": { - "extend-shallow": "^3.0.2", "for-in": "^1.0.2", "get-object": "^0.2.0", "get-value": "^3.0.1", From 282a2917c9a6f05074ac360991dfa825707e38c3 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 10 Jan 2024 09:46:42 +0100 Subject: [PATCH 059/133] Replace for-in usages in favour of native implementation --- index.js | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/index.js b/index.js index fdfc2857..265c1a6e 100644 --- a/index.js +++ b/index.js @@ -7,7 +7,6 @@ 'use strict'; -var forIn = require('for-in'); var lib = require('./lib/'); /** @@ -31,9 +30,10 @@ module.exports = function helpers(groups, options) { 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; @@ -42,8 +42,9 @@ module.exports = function helpers(groups, options) { /** * Expose helper groups */ +for (const key in lib) { + const group = lib[key]; -forIn(lib, function(group, key) { module.exports[key] = function(options) { options = options || {}; var hbs = options.handlebars || options.hbs || require('handlebars'); @@ -51,7 +52,7 @@ forIn(lib, function(group, key) { hbs.registerHelper(group); return hbs.helpers; }; -}); +} /** * Expose `utils` From ed83eb46a5d0937796adc5ea8b64a5cc5dd22f1b Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 10 Jan 2024 09:47:03 +0100 Subject: [PATCH 060/133] Remove for-in package --- package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/package.json b/package.json index 51cab525..425ec234 100644 --- a/package.json +++ b/package.json @@ -75,7 +75,6 @@ "clean": "./node_modules/.bin/rimraf .nyc_output" }, "dependencies": { - "for-in": "^1.0.2", "get-object": "^0.2.0", "get-value": "^3.0.1", "handlebars": "^4.7.7", From debd223bf220077a6850ce8f9a557f2090b3c725 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 10 Jan 2024 10:13:09 +0100 Subject: [PATCH 061/133] Rename test --- test/path.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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')); }); From 690b67b66f89177a582d4e63de4612e73c4969de Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 10 Jan 2024 11:37:31 +0100 Subject: [PATCH 062/133] Rename ci --- .github/workflows/helpers_ci.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/helpers_ci.yml b/.github/workflows/helpers_ci.yml index 44bdee00..339f8a1a 100644 --- a/.github/workflows/helpers_ci.yml +++ b/.github/workflows/helpers_ci.yml @@ -18,7 +18,7 @@ on: workflow_dispatch: jobs: - build: + build-and-test: runs-on: ${{ matrix.os }} From acc3a18bd8f0577e6ab17544e9cd2f98f3de2f58 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 10 Jan 2024 11:55:26 +0100 Subject: [PATCH 063/133] Remove helper-coverage --- package.json | 1 - yarn.lock | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index 425ec234..52e4b6c8 100644 --- a/package.json +++ b/package.json @@ -96,7 +96,6 @@ "global-modules": "^2.0.0", "gulp": "^4.0.2", "gulp-unused": "^0.2.1", - "helper-coverage": "^0.1.3", "is-valid-app": "^0.3.0", "js-yaml": "^4.1.0", "markdown-link": "^0.1.1", diff --git a/yarn.lock b/yarn.lock index 44d30301..f0abf14a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3731,7 +3731,7 @@ helper-copyright@^2.1.2: update-copyright "^0.2.3" year "^0.2.1" -helper-coverage@^0.1.2, helper-coverage@^0.1.3: +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= From db2c4311aea178aaf4d81a233b6169aca9eb180b Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 10 Jan 2024 12:33:56 +0100 Subject: [PATCH 064/133] Update micromatch package --- package.json | 2 +- yarn.lock | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index 220ef829..74298def 100644 --- a/package.json +++ b/package.json @@ -87,7 +87,7 @@ "html-tag": "^2.0.0", "is-glob": "^4.0.1", "kind-of": "^6.0.3", - "micromatch": "^3.1.5", + "micromatch": "^4.0.5", "relative": "^3.0.2", "striptags": "^3.1.1", "to-gfm-code-block": "^0.1.1", diff --git a/yarn.lock b/yarn.lock index 44d30301..62cbc057 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1133,7 +1133,7 @@ braces@^2.3.1, braces@^2.3.2: split-string "^3.0.2" to-regex "^3.0.1" -braces@~3.0.2: +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== @@ -5443,6 +5443,14 @@ micromatch@^3.0.4, micromatch@^3.1.10, micromatch@^3.1.4, micromatch@^3.1.5: 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" @@ -6337,6 +6345,11 @@ picomatch@^2.0.4, picomatch@^2.2.1: 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" From ce05df172aec84dad8e0b20cc41abf5cab289be0 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 10 Jan 2024 14:03:40 +0100 Subject: [PATCH 065/133] Remove es6 usages --- lib/misc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/misc.js b/lib/misc.js index a132ef13..faf709c9 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -71,7 +71,7 @@ helpers.noop = function(options) { * @api public */ -helpers.typeOf = (val) => typeof val +helpers.typeOf = function(val) { return typeof val } /** * Block helper that builds the context for the block From 054d8f5ccdd5d81a30f8eddf5d9f20ed29c46c82 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 10 Jan 2024 14:08:18 +0100 Subject: [PATCH 066/133] Lint --- lib/misc.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/misc.js b/lib/misc.js index faf709c9..1fee16c6 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -71,7 +71,7 @@ helpers.noop = function(options) { * @api public */ -helpers.typeOf = function(val) { return typeof val } +helpers.typeOf = function(val) { return typeof val; }; /** * Block helper that builds the context for the block From 3e131763531e7529d1bfb0dc675b70215cc64339 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 10 Jan 2024 14:14:44 +0100 Subject: [PATCH 067/133] v0.12.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 274c2e7d..b3d841a8 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.11.11", + "version": "0.12.0", "homepage": "https://github.com/Budibase/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ From 3dd6c9f30457311bb5eff1caf03c93ca2d06a1f2 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 15 Jan 2024 13:27:29 +0100 Subject: [PATCH 068/133] Remove uuid --- package.json | 3 +-- yarn.lock | 5 ----- 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/package.json b/package.json index b3d841a8..fcdaf342 100644 --- a/package.json +++ b/package.json @@ -86,8 +86,7 @@ "micromatch": "^4.0.5", "relative": "^3.0.2", "striptags": "^3.1.1", - "to-gfm-code-block": "^0.1.1", - "uuid": "^9.0.1" + "to-gfm-code-block": "^0.1.1" }, "devDependencies": { "engine-handlebars": "^0.8.2", diff --git a/yarn.lock b/yarn.lock index 82f2bf42..1d454af5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8123,11 +8123,6 @@ uuid@^3.3.3: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -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" From 3a334ba4e5a86b17efd9168f45856228ee3b8aef Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 15 Jan 2024 13:28:45 +0100 Subject: [PATCH 069/133] Remove uuid usage --- lib/uuid.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/uuid.js b/lib/uuid.js index 6c6a5bdd..7f696218 100644 --- a/lib/uuid.js +++ b/lib/uuid.js @@ -1,4 +1,3 @@ -const uuid = require('uuid'); const helpers = module.exports; /** @@ -9,6 +8,6 @@ const helpers = module.exports; * @example {{ uuid }} -> f34ebc66-93bd-4f7c-b79b-92b5569138bc */ helpers.uuid = function() { - return uuid.v4(); + return crypto.randomUUID(); }; From f77d32a728565378d772c806935b241a4ee54993 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 15 Jan 2024 18:55:47 +0100 Subject: [PATCH 070/133] Add missing require --- lib/uuid.js | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/uuid.js b/lib/uuid.js index 7f696218..c0152f8f 100644 --- a/lib/uuid.js +++ b/lib/uuid.js @@ -1,3 +1,4 @@ +const crypto = require('crypto') const helpers = module.exports; /** From 97f39755fcc2cd7997357e19fa98ae4817154020 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 16 Jan 2024 12:45:18 +0100 Subject: [PATCH 071/133] Lint --- lib/uuid.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/uuid.js b/lib/uuid.js index c0152f8f..bf9345e0 100644 --- a/lib/uuid.js +++ b/lib/uuid.js @@ -1,4 +1,4 @@ -const crypto = require('crypto') +const crypto = require('crypto'); const helpers = module.exports; /** From 69bae0691bc3ec7911115a9c43ccca667e4a233f Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 16 Jan 2024 12:48:58 +0100 Subject: [PATCH 072/133] v0.12.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index fcdaf342..d7bbf08e 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.12.0", + "version": "0.12.1", "homepage": "https://github.com/Budibase/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ From 8ec946de13b3c1987b95c163cfa9d1fbaeea86de Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 16 Jan 2024 17:35:43 +0100 Subject: [PATCH 073/133] Remove handlebars-utils.identity usage --- lib/utils/index.js | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/lib/utils/index.js b/lib/utils/index.js index b83ba09f..0ad95ebd 100644 --- a/lib/utils/index.js +++ b/lib/utils/index.js @@ -1,7 +1,5 @@ 'use strict'; -const util = require('handlebars-utils'); - /** * Returns true if the given value contains the given * `object`, optionally passing a starting index. @@ -58,7 +56,7 @@ exports.changecase = function(str, fn) { str = exports.chop(str).toLowerCase(); if (typeof fn !== 'function') { - fn = util.identity; + fn = (val) => val; } var re = /[-_.\W\s]+(\w|$)/g; From d03ea93835d1e2b13b16da0787bc582a34619988 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 17 Jan 2024 11:39:47 +0100 Subject: [PATCH 074/133] Copy handlebars-utils in --- lib/array.js | 2 +- lib/collection.js | 2 +- lib/comparison.js | 2 +- lib/fs.js | 2 +- lib/html.js | 2 +- lib/i18n.js | 2 +- lib/inflection.js | 2 +- lib/match.js | 2 +- lib/misc.js | 2 +- lib/number.js | 2 +- lib/object.js | 2 +- lib/path.js | 2 +- lib/regex.js | 2 +- lib/string.js | 2 +- lib/url.js | 2 +- lib/utils/handlebarsUtils.js | 532 +++++++++++++++++++++++++++++++++++ lib/utils/html.js | 2 +- 17 files changed, 548 insertions(+), 16 deletions(-) create mode 100644 lib/utils/handlebarsUtils.js diff --git a/lib/array.js b/lib/array.js index 8dcb8272..1ee9ceb8 100644 --- a/lib/array.js +++ b/lib/array.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('handlebars-utils'); +var util = require('./utils/handlebarsUtils');; var helpers = module.exports; const getValue = require('get-value'); const createFrame = require('./utils/createFrame'); diff --git a/lib/collection.js b/lib/collection.js index b5648eeb..85e7cefe 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 e2765436..b81fc02a 100644 --- a/lib/comparison.js +++ b/lib/comparison.js @@ -1,7 +1,7 @@ 'use strict'; var has = require('has-value'); -var util = require('handlebars-utils'); +var util = require('./utils/handlebarsUtils');; var utils = require('./utils'); const falsey = require('./utils/falsey'); const isOdd = require('./utils/odd'); diff --git a/lib/fs.js b/lib/fs.js index 4f6c1083..1ef5427f 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -2,7 +2,7 @@ var fs = require('fs'); var path = require('path'); -var util = require('handlebars-utils'); +var util = require('./utils/handlebarsUtils');; var number = require('./number'); var helpers = module.exports; const kindOf = require('kind-of'); diff --git a/lib/html.js b/lib/html.js index db23caf1..cf1c0e73 100644 --- a/lib/html.js +++ b/lib/html.js @@ -1,7 +1,7 @@ 'use strict'; var path = require('path'); -var util = require('handlebars-utils'); +var util = require('./utils/handlebarsUtils');; var html = require('./utils/html'); var parseAttr = html.parseAttributes; var helpers = module.exports; diff --git a/lib/i18n.js b/lib/i18n.js index 7d706238..1fd4cfec 100644 --- a/lib/i18n.js +++ b/lib/i18n.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('handlebars-utils'); +var util = require('./utils/handlebarsUtils');; var helpers = module.exports; const getValue = require('get-value'); diff --git a/lib/inflection.js b/lib/inflection.js index c642ae14..f4d1c2e6 100644 --- a/lib/inflection.js +++ b/lib/inflection.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('handlebars-utils'); +var util = require('./utils/handlebarsUtils');; var helpers = module.exports; /** diff --git a/lib/match.js b/lib/match.js index 970b107f..cc179421 100644 --- a/lib/match.js +++ b/lib/match.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('handlebars-utils'); +var util = require('./utils/handlebarsUtils');; var helpers = module.exports; const micromatch = require('micromatch'); diff --git a/lib/misc.js b/lib/misc.js index 1fee16c6..4a0165f8 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('handlebars-utils'); +var util = require('./utils/handlebarsUtils');; var helpers = module.exports; const getValue = require('get-value'); const createFrame = require('./utils/createFrame'); diff --git a/lib/number.js b/lib/number.js index 5bc70a41..d15649e6 100644 --- a/lib/number.js +++ b/lib/number.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('handlebars-utils'); +var util = require('./utils/handlebarsUtils'); var helpers = module.exports; /** diff --git a/lib/object.js b/lib/object.js index 97a79b84..0a75c400 100644 --- a/lib/object.js +++ b/lib/object.js @@ -1,7 +1,7 @@ 'use strict'; var hasOwn = Object.hasOwnProperty; -var util = require('handlebars-utils'); +var util = require('./utils/handlebarsUtils');; var array = require('./array'); var helpers = module.exports; const getValue = require('get-value'); diff --git a/lib/path.js b/lib/path.js index e9cfbea3..7b55f99c 100644 --- a/lib/path.js +++ b/lib/path.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('handlebars-utils'); +var util = require('./utils/handlebarsUtils');; var path = require('path'); const relative = require('relative'); var helpers = module.exports; diff --git a/lib/regex.js b/lib/regex.js index 9881973b..3ae153e9 100644 --- a/lib/regex.js +++ b/lib/regex.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('handlebars-utils'); +var util = require('./utils/handlebarsUtils');; var helpers = module.exports; const kindOf = require('kind-of'); diff --git a/lib/string.js b/lib/string.js index 5f35dc04..962cfaa0 100644 --- a/lib/string.js +++ b/lib/string.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('handlebars-utils'); +var util = require('./utils/handlebarsUtils');; var utils = require('./utils'); var helpers = module.exports; diff --git a/lib/url.js b/lib/url.js index 9951ae07..d939e4ae 100644 --- a/lib/url.js +++ b/lib/url.js @@ -1,7 +1,7 @@ 'use strict'; var url = require('url'); -var util = require('handlebars-utils'); +var util = require('./utils/handlebarsUtils');; var querystring = require('querystring'); var helpers = module.exports; diff --git a/lib/utils/handlebarsUtils.js b/lib/utils/handlebarsUtils.js new file mode 100644 index 00000000..51550e61 --- /dev/null +++ b/lib/utils/handlebarsUtils.js @@ -0,0 +1,532 @@ +'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 + */ + + +var util = require('util'); +var type = require('typeof-article'); +var typeOf = require('kind-of'); +var utils = exports = module.exports; + + +utils.extend = extend; +utils.indexOf = indexOf; +utils.escapeExpression = escapeExpression; +utils.isEmpty = isEmpty; +utils.createFrame = createFrame; +utils.blockParams = blockParams; +utils.appendContextPath = appendContextPath; +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; +// Older IE versions do not directly support indexOf so we must implement our own, sadly. + +function indexOf(array, value) { + for (var i = 0, len = array.length; i < len; i++) { + if (array[i] === value) { + return i; + } + } + return -1; +} + +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 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 + */ + +utils.isBlock = function(options) { + return utils.isOptions(options) + && typeof options.fn === 'function' + && typeof options.inverse === 'function'; +}; + +/** + * 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 + */ + +utils.fn = function(val, context, options) { + if (utils.isOptions(val)) { + return utils.fn('', val, options); + } + if (utils.isOptions(context)) { + return utils.fn(val, {}, context); + } + return utils.isBlock(options) ? options.fn(context) : val; +}; + +/** + * 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 + */ + +utils.inverse = function(val, context, options) { + if (utils.isOptions(val)) { + return utils.identity('', val, options); + } + if (utils.isOptions(context)) { + return utils.inverse(val, {}, context); + } + return utils.isBlock(options) ? options.inverse(context) : val; +}; + +/** + * 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 + */ + +utils.value = function(val, context, options) { + if (utils.isOptions(val)) { + return utils.value(null, val, options); + } + if (utils.isOptions(context)) { + return utils.value(val, {}, context); + } + if (utils.isBlock(options)) { + return !!val ? options.fn(context) : options.inverse(context); + } + return val; +}; + +/** + * 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 + */ + +utils.isOptions = function(val) { + return utils.isObject(val) && utils.isObject(val.hash); +}; + +/** + * 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 + */ + +utils.isUndefined = function(val) { + return val == null || (utils.isOptions(val) && val.hash != null); +}; + +/** + * 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); +}; + +/** + * 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 + */ + +utils.options = function(thisArg, locals, options) { + if (utils.isOptions(thisArg)) { + return utils.options({}, locals, thisArg); + } + if (utils.isOptions(locals)) { + return utils.options(thisArg, options, locals); + } + options = options || {}; + if (!utils.isOptions(options)) { + locals = Object.assign({}, locals, options); + } + var opts = Object.assign({}, locals, options.hash); + if (utils.isObject(thisArg)) { + opts = Object.assign({}, thisArg.options, opts); + } + if (opts[options.name]) { + opts = Object.assign({}, opts[options.name], opts); + } + return opts; +}; + +/** + * 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 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 + */ + +utils.isObject = function(val) { + return typeOf(val) === 'object'; +}; + +/** + * 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; +} + +/** + * 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 + */ + +utils.result = function(val) { + if (typeof val === 'function') { + return val.apply(this, [].slice.call(arguments, 1)); + } + return val; +}; + +/** + * 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 + */ + +utils.identity = function(val) { + return val; +}; + +/** + * Return true if `val` is a non-empty string. + * + * @param {any} `val` The value to check + * @return {Boolean} + * @api public + */ + +utils.isString = function(val) { + return typeof val === 'string' && val !== ''; +}; + +/** + * 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 {}; +}; \ No newline at end of file diff --git a/lib/utils/html.js b/lib/utils/html.js index 2d2ff6db..96a5c9af 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'); /** From 9a910c5ab16409e79dc538f38dae38705825b309 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 17 Jan 2024 11:39:56 +0100 Subject: [PATCH 075/133] Remove handlebars-utils --- package.json | 1 - yarn.lock | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/package.json b/package.json index d7bbf08e..75b70d32 100644 --- a/package.json +++ b/package.json @@ -78,7 +78,6 @@ "get-object": "^0.2.0", "get-value": "^3.0.1", "handlebars": "^4.7.7", - "handlebars-utils": "^1.0.6", "has-value": "^2.0.2", "html-tag": "^2.0.0", "is-glob": "^4.0.1", diff --git a/yarn.lock b/yarn.lock index 1d454af5..b64f971c 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3514,7 +3514,7 @@ gulplog@^1.0.0: dependencies: glogg "^1.0.0" -handlebars-utils@^1.0.4, handlebars-utils@^1.0.6: +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== From 4f5ef39d2489d7f4ecb69a6bcf4a214dfefe882f Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 17 Jan 2024 12:31:36 +0100 Subject: [PATCH 076/133] Tree-shake number --- lib/number.js | 4 ++- lib/utils/handlebarsUtils.js | 69 +++--------------------------------- lib/utils/isObject.js | 37 +++++++++++++++++++ lib/utils/isOptions.js | 38 ++++++++++++++++++++ lib/utils/isUndefined.js | 39 ++++++++++++++++++++ 5 files changed, 121 insertions(+), 66 deletions(-) create mode 100644 lib/utils/isObject.js create mode 100644 lib/utils/isOptions.js create mode 100644 lib/utils/isUndefined.js diff --git a/lib/number.js b/lib/number.js index d15649e6..69639d9b 100644 --- a/lib/number.js +++ b/lib/number.js @@ -1,6 +1,8 @@ 'use strict'; -var util = require('./utils/handlebarsUtils'); +var util = { + isUndefined: require('./utils/isUndefined') +} var helpers = module.exports; /** diff --git a/lib/utils/handlebarsUtils.js b/lib/utils/handlebarsUtils.js index 51550e61..0b275773 100644 --- a/lib/utils/handlebarsUtils.js +++ b/lib/utils/handlebarsUtils.js @@ -1,7 +1,7 @@ 'use strict'; /** - * This code was taken directly from handlebars-helpers, + * 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. @@ -13,10 +13,12 @@ var util = require('util'); var type = require('typeof-article'); -var typeOf = require('kind-of'); var utils = exports = module.exports; +utils.isObject = require('./isObject'); +utils.isOptions = require('./isOptions'); +utils.isUndefined = require('./isUndefined'); utils.extend = extend; utils.indexOf = indexOf; utils.escapeExpression = escapeExpression; @@ -244,48 +246,6 @@ utils.value = function(val, context, options) { return val; }; -/** - * 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 - */ - -utils.isOptions = function(val) { - return utils.isObject(val) && utils.isObject(val.hash); -}; - -/** - * 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 - */ - -utils.isUndefined = function(val) { - return val == null || (utils.isOptions(val) && val.hash != null); -}; - /** * Returns true if an `app` propery is on the context, which means * the context was created by [assemble][], [templates][], [verb][], @@ -382,27 +342,6 @@ utils.context = function(thisArg, locals, options) { return context; }; -/** - * 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 - */ - -utils.isObject = function(val) { - return typeOf(val) === 'object'; -}; /** * Returns true if the given value is "empty". diff --git a/lib/utils/isObject.js b/lib/utils/isObject.js new file mode 100644 index 00000000..37b8135e --- /dev/null +++ b/lib/utils/isObject.js @@ -0,0 +1,37 @@ +'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 + */ + + +var utils = exports = module.exports; + + +/** + * 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 + */ + +utils.isObject = function(val) { + return typeof val === 'object'; +}; diff --git a/lib/utils/isOptions.js b/lib/utils/isOptions.js new file mode 100644 index 00000000..82cc94fd --- /dev/null +++ b/lib/utils/isOptions.js @@ -0,0 +1,38 @@ +'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 + */ + + +var utils = exports = module.exports; + + +/** + * 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 + */ + +utils.isOptions = function(val) { + return isObject(val) && isObject(val.hash); +}; diff --git a/lib/utils/isUndefined.js b/lib/utils/isUndefined.js new file mode 100644 index 00000000..1099bf2e --- /dev/null +++ b/lib/utils/isUndefined.js @@ -0,0 +1,39 @@ +'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 + */ + + +var utils = exports = module.exports; + + + +/** + * 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 + */ + +utils.isUndefined = function(val) { + return val == null || (isOptions(val) && val.hash != null); +}; From e7d88835df13fecba27c3846fb567cca56dcd564 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 17 Jan 2024 12:53:34 +0100 Subject: [PATCH 077/133] Tree-shake array --- lib/array.js | 10 ++++- lib/utils/handlebarsUtils.js | 77 ++---------------------------------- lib/utils/indexOf.js | 25 ++++++++++++ lib/utils/isObject.js | 3 +- lib/utils/isOptions.js | 5 +-- lib/utils/isString.js | 27 +++++++++++++ lib/utils/isUndefined.js | 6 +-- lib/utils/result.js | 38 ++++++++++++++++++ lib/utils/value.js | 49 +++++++++++++++++++++++ 9 files changed, 157 insertions(+), 83 deletions(-) create mode 100644 lib/utils/indexOf.js create mode 100644 lib/utils/isString.js create mode 100644 lib/utils/result.js create mode 100644 lib/utils/value.js diff --git a/lib/array.js b/lib/array.js index 1ee9ceb8..6dbb7d81 100644 --- a/lib/array.js +++ b/lib/array.js @@ -1,6 +1,14 @@ 'use strict'; -var util = require('./utils/handlebarsUtils');; +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'); diff --git a/lib/utils/handlebarsUtils.js b/lib/utils/handlebarsUtils.js index 0b275773..7f13353c 100644 --- a/lib/utils/handlebarsUtils.js +++ b/lib/utils/handlebarsUtils.js @@ -19,8 +19,9 @@ var utils = exports = module.exports; utils.isObject = require('./isObject'); utils.isOptions = require('./isOptions'); utils.isUndefined = require('./isUndefined'); +utils.result = require('./result'); utils.extend = extend; -utils.indexOf = indexOf; +utils.indexOf = require('./indexOf'); utils.escapeExpression = escapeExpression; utils.isEmpty = isEmpty; utils.createFrame = createFrame; @@ -83,16 +84,7 @@ var isArray = Array.isArray || function(value) { }; utils.isArray = isArray; -// Older IE versions do not directly support indexOf so we must implement our own, sadly. -function indexOf(array, value) { - for (var i = 0, len = array.length; i < len; i++) { - if (array[i] === value) { - return i; - } - } - return -1; -} function escapeExpression(string) { if (typeof string !== 'string') { @@ -216,35 +208,7 @@ utils.inverse = function(val, context, options) { return utils.isBlock(options) ? options.inverse(context) : val; }; -/** - * 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 - */ - -utils.value = function(val, context, options) { - if (utils.isOptions(val)) { - return utils.value(null, val, options); - } - if (utils.isOptions(context)) { - return utils.value(val, {}, context); - } - if (utils.isBlock(options)) { - return !!val ? options.fn(context) : options.inverse(context); - } - return val; -}; +utils.value = require('./value') /** * Returns true if an `app` propery is on the context, which means @@ -378,30 +342,6 @@ function isEmpty(val) { return false; } -/** - * 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 - */ - -utils.result = function(val) { - if (typeof val === 'function') { - return val.apply(this, [].slice.call(arguments, 1)); - } - return val; -}; - /** * Returns the given value as-is, unchanged. * @@ -422,17 +362,8 @@ utils.identity = function(val) { return val; }; -/** - * Return true if `val` is a non-empty string. - * - * @param {any} `val` The value to check - * @return {Boolean} - * @api public - */ -utils.isString = function(val) { - return typeof val === 'string' && val !== ''; -}; +utils.isString = require('./isString') /** * Cast the given `val` to an array. diff --git a/lib/utils/indexOf.js b/lib/utils/indexOf.js new file mode 100644 index 00000000..2a610ae5 --- /dev/null +++ b/lib/utils/indexOf.js @@ -0,0 +1,25 @@ +'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; +} \ No newline at end of file diff --git a/lib/utils/isObject.js b/lib/utils/isObject.js index 37b8135e..2475335c 100644 --- a/lib/utils/isObject.js +++ b/lib/utils/isObject.js @@ -11,7 +11,6 @@ */ -var utils = exports = module.exports; /** @@ -32,6 +31,6 @@ var utils = exports = module.exports; * @api public */ -utils.isObject = function(val) { +module.exports = function(val) { return typeof val === 'object'; }; diff --git a/lib/utils/isOptions.js b/lib/utils/isOptions.js index 82cc94fd..00cee42e 100644 --- a/lib/utils/isOptions.js +++ b/lib/utils/isOptions.js @@ -1,6 +1,6 @@ 'use strict'; -const { isObject } = require("./isObject"); +const isObject = require("./isObject"); /** * This code was taken directly from handlebars-helpers, @@ -13,7 +13,6 @@ const { isObject } = require("./isObject"); */ -var utils = exports = module.exports; /** @@ -33,6 +32,6 @@ var utils = exports = module.exports; * @api public */ -utils.isOptions = function(val) { +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..5d1bbc94 --- /dev/null +++ b/lib/utils/isString.js @@ -0,0 +1,27 @@ +'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 !== ''; +}; \ No newline at end of file diff --git a/lib/utils/isUndefined.js b/lib/utils/isUndefined.js index 1099bf2e..54a97aef 100644 --- a/lib/utils/isUndefined.js +++ b/lib/utils/isUndefined.js @@ -1,6 +1,6 @@ 'use strict'; -const { isOptions } = require("./isOptions"); +const isOptions = require("./isOptions"); /** * This code was taken directly from handlebars-helpers, @@ -13,8 +13,6 @@ const { isOptions } = require("./isOptions"); */ -var utils = exports = module.exports; - /** @@ -34,6 +32,6 @@ var utils = exports = module.exports; * @api public */ -utils.isUndefined = function(val) { +module.exports = function(val) { return val == null || (isOptions(val) && val.hash != null); }; diff --git a/lib/utils/result.js b/lib/utils/result.js new file mode 100644 index 00000000..3f3e683a --- /dev/null +++ b/lib/utils/result.js @@ -0,0 +1,38 @@ +'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; +}; \ No newline at end of file diff --git a/lib/utils/value.js b/lib/utils/value.js new file mode 100644 index 00000000..38a163fa --- /dev/null +++ b/lib/utils/value.js @@ -0,0 +1,49 @@ +'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 + */ + + + +/** + * 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 (utils.isOptions(context)) { + return value(val, {}, context); + } + if (utils.isBlock(options)) { + return !!val ? options.fn(context) : options.inverse(context); + } + return val; +}; + + +module.exports = value \ No newline at end of file From 9fd63a8ff574c3d9571e58a9abbe01257cd88973 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 17 Jan 2024 12:56:26 +0100 Subject: [PATCH 078/133] Lint --- lib/utils/handlebarsUtils.js | 36 +++++----------------------------- lib/utils/html.js | 2 +- lib/utils/indexOf.js | 5 +---- lib/utils/isBlock.js | 38 ++++++++++++++++++++++++++++++++++++ lib/utils/isObject.js | 3 --- lib/utils/isOptions.js | 5 +---- lib/utils/isString.js | 6 +----- lib/utils/isUndefined.js | 5 +---- lib/utils/result.js | 5 +---- lib/utils/value.js | 15 ++++++-------- 10 files changed, 55 insertions(+), 65 deletions(-) create mode 100644 lib/utils/isBlock.js diff --git a/lib/utils/handlebarsUtils.js b/lib/utils/handlebarsUtils.js index 7f13353c..6edfc4b9 100644 --- a/lib/utils/handlebarsUtils.js +++ b/lib/utils/handlebarsUtils.js @@ -10,12 +10,10 @@ * Copyright (C) 2011-2016 by Yehuda Katz */ - var util = require('util'); var type = require('typeof-article'); var utils = exports = module.exports; - utils.isObject = require('./isObject'); utils.isOptions = require('./isOptions'); utils.isUndefined = require('./isUndefined'); @@ -85,7 +83,6 @@ var isArray = Array.isArray || function(value) { utils.isArray = isArray; - function escapeExpression(string) { if (typeof string !== 'string') { // don't escape SafeStrings, since they're already safe @@ -132,31 +129,10 @@ function appendContextPath(contextPath, id) { 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; + return 'expected ' + param + ' to be ' + exp + ' but received ' + type(actual) + ': ' + val; }; -/** - * 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 - */ - -utils.isBlock = function(options) { - return utils.isOptions(options) - && typeof options.fn === 'function' - && typeof options.inverse === 'function'; -}; +utils.isBlock = require('./isBlock'); /** * Returns the given value or renders the block if it's a block helper. @@ -208,7 +184,7 @@ utils.inverse = function(val, context, options) { return utils.isBlock(options) ? options.inverse(context) : val; }; -utils.value = require('./value') +utils.value = require('./value'); /** * Returns true if an `app` propery is on the context, which means @@ -306,7 +282,6 @@ utils.context = function(thisArg, locals, options) { return context; }; - /** * Returns true if the given value is "empty". * @@ -362,8 +337,7 @@ utils.identity = function(val) { return val; }; - -utils.isString = require('./isString') +utils.isString = require('./isString'); /** * Cast the given `val` to an array. @@ -399,4 +373,4 @@ utils.tryParse = function(str) { return JSON.parse(str); } catch (err) {} return {}; -}; \ No newline at end of file +}; diff --git a/lib/utils/html.js b/lib/utils/html.js index 96a5c9af..39fe2604 100644 --- a/lib/utils/html.js +++ b/lib/utils/html.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('./handlebarsUtils');; +var util = require('./handlebarsUtils'); ; var striptags = require('striptags'); /** diff --git a/lib/utils/indexOf.js b/lib/utils/indexOf.js index 2a610ae5..b2693a4e 100644 --- a/lib/utils/indexOf.js +++ b/lib/utils/indexOf.js @@ -1,7 +1,5 @@ 'use strict'; - - /** * This code was taken directly from handlebars-helpers, * https://github.com/helpers/handlebars-utils/blob/master/index.js#L398 @@ -12,7 +10,6 @@ * 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) { @@ -22,4 +19,4 @@ module.exports = function(array, value) { } } return -1; -} \ No newline at end of file +}; 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 index 2475335c..5753fa87 100644 --- a/lib/utils/isObject.js +++ b/lib/utils/isObject.js @@ -10,9 +10,6 @@ * Copyright (C) 2011-2016 by Yehuda Katz */ - - - /** * Returns true if the given value is an object. * diff --git a/lib/utils/isOptions.js b/lib/utils/isOptions.js index 00cee42e..329bcc8b 100644 --- a/lib/utils/isOptions.js +++ b/lib/utils/isOptions.js @@ -1,6 +1,6 @@ 'use strict'; -const isObject = require("./isObject"); +const isObject = require('./isObject'); /** * This code was taken directly from handlebars-helpers, @@ -12,9 +12,6 @@ const isObject = require("./isObject"); * Copyright (C) 2011-2016 by Yehuda Katz */ - - - /** * Returns true if the given value is a handlebar `options` object. * diff --git a/lib/utils/isString.js b/lib/utils/isString.js index 5d1bbc94..678a5f52 100644 --- a/lib/utils/isString.js +++ b/lib/utils/isString.js @@ -1,8 +1,5 @@ 'use strict'; - - - /** * This code was taken directly from handlebars-helpers, * https://github.com/helpers/handlebars-utils/blob/master/index.js#L398 @@ -13,7 +10,6 @@ * Copyright (C) 2011-2016 by Yehuda Katz */ - /** * Return true if `val` is a non-empty string. * @@ -24,4 +20,4 @@ module.exports = function(val) { return typeof val === 'string' && val !== ''; -}; \ No newline at end of file +}; diff --git a/lib/utils/isUndefined.js b/lib/utils/isUndefined.js index 54a97aef..f094fdfd 100644 --- a/lib/utils/isUndefined.js +++ b/lib/utils/isUndefined.js @@ -1,6 +1,6 @@ 'use strict'; -const isOptions = require("./isOptions"); +const isOptions = require('./isOptions'); /** * This code was taken directly from handlebars-helpers, @@ -12,9 +12,6 @@ const isOptions = require("./isOptions"); * 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). diff --git a/lib/utils/result.js b/lib/utils/result.js index 3f3e683a..ec60e2e3 100644 --- a/lib/utils/result.js +++ b/lib/utils/result.js @@ -1,6 +1,5 @@ 'use strict'; - /** * This code was taken directly from handlebars-helpers, * https://github.com/helpers/handlebars-utils/blob/master/index.js#L398 @@ -11,8 +10,6 @@ * 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. @@ -35,4 +32,4 @@ module.exports = function(val) { return val.apply(this, [].slice.call(arguments, 1)); } return val; -}; \ No newline at end of file +}; diff --git a/lib/utils/value.js b/lib/utils/value.js index 38a163fa..d52aa55e 100644 --- a/lib/utils/value.js +++ b/lib/utils/value.js @@ -1,7 +1,7 @@ 'use strict'; -const isOptions = require("./isOptions"); - +const isBlock = require('./isBlock'); +const isOptions = require('./isOptions'); /** * This code was taken directly from handlebars-helpers, @@ -13,8 +13,6 @@ const isOptions = require("./isOptions"); * 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 @@ -36,14 +34,13 @@ const value = function(val, context, options) { if (isOptions(val)) { return value(null, val, options); } - if (utils.isOptions(context)) { + if (isOptions(context)) { return value(val, {}, context); } - if (utils.isBlock(options)) { - return !!val ? options.fn(context) : options.inverse(context); + if (isBlock(options)) { + return val ? options.fn(context) : options.inverse(context); } return val; }; - -module.exports = value \ No newline at end of file +module.exports = value; From 4bd65d8c3d22f9ffddbbbe8bc9e53b2c09328857 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 17 Jan 2024 13:23:06 +0100 Subject: [PATCH 079/133] Lint --- lib/array.js | 4 ++-- lib/collection.js | 2 +- lib/comparison.js | 2 +- lib/fs.js | 2 +- lib/html.js | 6 +++--- lib/i18n.js | 2 +- lib/inflection.js | 2 +- lib/match.js | 2 +- lib/misc.js | 4 ++-- lib/number.js | 2 +- lib/object.js | 6 +++--- lib/path.js | 4 ++-- lib/regex.js | 2 +- lib/string.js | 2 +- lib/url.js | 2 +- lib/utils/html.js | 2 +- package.json | 4 ++-- 17 files changed, 25 insertions(+), 25 deletions(-) diff --git a/lib/array.js b/lib/array.js index 6dbb7d81..52977924 100644 --- a/lib/array.js +++ b/lib/array.js @@ -7,8 +7,8 @@ var util = { indexOf: require('./utils/indexOf'), isString: require('./utils/isString'), isOptions: require('./utils/isOptions'), - isObject: require('./utils/isObject'), -} + isObject: require('./utils/isObject') +}; var helpers = module.exports; const getValue = require('get-value'); const createFrame = require('./utils/createFrame'); diff --git a/lib/collection.js b/lib/collection.js index 85e7cefe..6cb87f1d 100644 --- a/lib/collection.js +++ b/lib/collection.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('./utils/handlebarsUtils');; +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 b81fc02a..3d8122f3 100644 --- a/lib/comparison.js +++ b/lib/comparison.js @@ -1,7 +1,7 @@ 'use strict'; var has = require('has-value'); -var util = require('./utils/handlebarsUtils');; +var util = require('./utils/handlebarsUtils'); var utils = require('./utils'); const falsey = require('./utils/falsey'); const isOdd = require('./utils/odd'); diff --git a/lib/fs.js b/lib/fs.js index 1ef5427f..6460a6de 100644 --- a/lib/fs.js +++ b/lib/fs.js @@ -2,7 +2,7 @@ var fs = require('fs'); var path = require('path'); -var util = require('./utils/handlebarsUtils');; +var util = require('./utils/handlebarsUtils'); var number = require('./number'); var helpers = module.exports; const kindOf = require('kind-of'); diff --git a/lib/html.js b/lib/html.js index cf1c0e73..208ee07a 100644 --- a/lib/html.js +++ b/lib/html.js @@ -1,7 +1,7 @@ 'use strict'; var path = require('path'); -var util = require('./utils/handlebarsUtils');; +var util = require('./utils/handlebarsUtils'); var html = require('./utils/html'); var parseAttr = html.parseAttributes; var helpers = module.exports; @@ -99,8 +99,8 @@ helpers.js = function(context) { context = util.arrayify(context); return context.map(function(fp) { return (path.extname(fp) === '.coffee') - ? htmlTag('script', {type: 'text/coffeescript', src: fp}) - : htmlTag('script', {src: fp}); + ? htmlTag('script', { type: 'text/coffeescript', src: fp }) + : htmlTag('script', { src: fp }); }).join('\n'); }; diff --git a/lib/i18n.js b/lib/i18n.js index 1fd4cfec..1b4a8d66 100644 --- a/lib/i18n.js +++ b/lib/i18n.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('./utils/handlebarsUtils');; +var util = require('./utils/handlebarsUtils'); var helpers = module.exports; const getValue = require('get-value'); diff --git a/lib/inflection.js b/lib/inflection.js index f4d1c2e6..b518b98e 100644 --- a/lib/inflection.js +++ b/lib/inflection.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('./utils/handlebarsUtils');; +var util = require('./utils/handlebarsUtils'); var helpers = module.exports; /** diff --git a/lib/match.js b/lib/match.js index cc179421..049c99ff 100644 --- a/lib/match.js +++ b/lib/match.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('./utils/handlebarsUtils');; +var util = require('./utils/handlebarsUtils'); var helpers = module.exports; const micromatch = require('micromatch'); diff --git a/lib/misc.js b/lib/misc.js index 4a0165f8..79110038 100644 --- a/lib/misc.js +++ b/lib/misc.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('./utils/handlebarsUtils');; +var util = require('./utils/handlebarsUtils'); var helpers = module.exports; const getValue = require('get-value'); const createFrame = require('./utils/createFrame'); @@ -22,7 +22,7 @@ helpers.frame = function(context, options) { // extend the frame with hash arguments frame.extend(options.hash); - return options.fn(this, {data: frame}); + return options.fn(this, { data: frame }); }; /** diff --git a/lib/number.js b/lib/number.js index 69639d9b..6628e04a 100644 --- a/lib/number.js +++ b/lib/number.js @@ -2,7 +2,7 @@ var util = { isUndefined: require('./utils/isUndefined') -} +}; var helpers = module.exports; /** diff --git a/lib/object.js b/lib/object.js index 0a75c400..b4709a20 100644 --- a/lib/object.js +++ b/lib/object.js @@ -1,7 +1,7 @@ 'use strict'; var hasOwn = Object.hasOwnProperty; -var util = require('./utils/handlebarsUtils');; +var util = require('./utils/handlebarsUtils'); var array = require('./array'); var helpers = module.exports; const getValue = require('get-value'); @@ -64,7 +64,7 @@ helpers.forIn = function(obj, options) { for (var key in obj) { data.key = key; - result += options.fn(obj[key], {data: data}); + result += options.fn(obj[key], { data: data }); } return result; }; @@ -91,7 +91,7 @@ helpers.forOwn = function(obj, options) { 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; diff --git a/lib/path.js b/lib/path.js index 7b55f99c..6af69c4e 100644 --- a/lib/path.js +++ b/lib/path.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('./utils/handlebarsUtils');; +var util = require('./utils/handlebarsUtils'); var path = require('path'); const relative = require('relative'); var helpers = module.exports; @@ -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(); diff --git a/lib/regex.js b/lib/regex.js index 3ae153e9..878a6f81 100644 --- a/lib/regex.js +++ b/lib/regex.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('./utils/handlebarsUtils');; +var util = require('./utils/handlebarsUtils'); var helpers = module.exports; const kindOf = require('kind-of'); diff --git a/lib/string.js b/lib/string.js index 962cfaa0..46ddd7ac 100644 --- a/lib/string.js +++ b/lib/string.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('./utils/handlebarsUtils');; +var util = require('./utils/handlebarsUtils'); var utils = require('./utils'); var helpers = module.exports; diff --git a/lib/url.js b/lib/url.js index d939e4ae..6f289a27 100644 --- a/lib/url.js +++ b/lib/url.js @@ -1,7 +1,7 @@ 'use strict'; var url = require('url'); -var util = require('./utils/handlebarsUtils');; +var util = require('./utils/handlebarsUtils'); var querystring = require('querystring'); var helpers = module.exports; diff --git a/lib/utils/html.js b/lib/utils/html.js index 39fe2604..75758c99 100644 --- a/lib/utils/html.js +++ b/lib/utils/html.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('./handlebarsUtils'); ; +var util = require('./handlebarsUtils'); var striptags = require('striptags'); /** diff --git a/package.json b/package.json index 75b70d32..21ad8e10 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "node": ">=10.12.0" }, "scripts": { - "lint": "./node_modules/.bin/eslint *.js lib/**/*.js test/**/*.js", + "lint": "./node_modules/.bin/eslint --ext js .", "test": "./node_modules/.bin/rimraf .nyc_output && ./node_modules/.bin/nyc ./node_modules/.bin/mocha", "update:readmemd": "verb", "clean": "./node_modules/.bin/rimraf .nyc_output" @@ -178,4 +178,4 @@ } } } -} +} \ No newline at end of file From 18c5f471e9a730d82f9f5fafa99e0388deb312c7 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 17 Jan 2024 13:31:14 +0100 Subject: [PATCH 080/133] Tree-shake string --- lib/string.js | 6 ++++- lib/utils/handlebarsUtils.js | 34 +----------------------- lib/utils/options.js | 50 ++++++++++++++++++++++++++++++++++++ 3 files changed, 56 insertions(+), 34 deletions(-) create mode 100644 lib/utils/options.js diff --git a/lib/string.js b/lib/string.js index 46ddd7ac..992a689c 100644 --- a/lib/string.js +++ b/lib/string.js @@ -1,6 +1,10 @@ 'use strict'; -var util = require('./utils/handlebarsUtils'); +var util = { + isString: require('./utils/isString'), + isObject: require('./utils/isObject'), + options: require('./utils/options') +}; var utils = require('./utils'); var helpers = module.exports; diff --git a/lib/utils/handlebarsUtils.js b/lib/utils/handlebarsUtils.js index 6edfc4b9..913b332f 100644 --- a/lib/utils/handlebarsUtils.js +++ b/lib/utils/handlebarsUtils.js @@ -211,39 +211,7 @@ utils.isApp = function(thisArg) { && utils.isObject(thisArg.app); }; -/** - * 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 - */ - -utils.options = function(thisArg, locals, options) { - if (utils.isOptions(thisArg)) { - return utils.options({}, locals, thisArg); - } - if (utils.isOptions(locals)) { - return utils.options(thisArg, options, locals); - } - options = options || {}; - if (!utils.isOptions(options)) { - locals = Object.assign({}, locals, options); - } - var opts = Object.assign({}, locals, options.hash); - if (utils.isObject(thisArg)) { - opts = Object.assign({}, thisArg.options, opts); - } - if (opts[options.name]) { - opts = Object.assign({}, opts[options.name], opts); - } - return opts; -}; +utils.options = require('./options'); /** * Get the context to use for rendering. 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; From eba6f9acfe09c9c8b61671c686a7c3ae08a02be7 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 17 Jan 2024 13:38:52 +0100 Subject: [PATCH 081/133] Fix tests --- lib/utils/isObject.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utils/isObject.js b/lib/utils/isObject.js index 5753fa87..f202bb9a 100644 --- a/lib/utils/isObject.js +++ b/lib/utils/isObject.js @@ -29,5 +29,5 @@ */ module.exports = function(val) { - return typeof val === 'object'; + return !!val && typeof val === 'object'; }; From ef95f3e5f09fe2a76c8dee1c447494321c9eb14c Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 17 Jan 2024 13:48:01 +0100 Subject: [PATCH 082/133] Tree-shake object --- lib/object.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lib/object.js b/lib/object.js index b4709a20..3cd17757 100644 --- a/lib/object.js +++ b/lib/object.js @@ -1,7 +1,10 @@ 'use strict'; var hasOwn = Object.hasOwnProperty; -var util = require('./utils/handlebarsUtils'); +var util = { + isOptions: require('./utils/isOptions'), + isObject: require('./utils/isObject') +}; var array = require('./array'); var helpers = module.exports; const getValue = require('get-value'); From a0d9f06fb31e6ee4aee64c44bcccb1f0b2f2f1eb Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 17 Jan 2024 14:05:51 +0100 Subject: [PATCH 083/133] Tree-shake url --- lib/url.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/lib/url.js b/lib/url.js index 6f289a27..c47d5a3b 100644 --- a/lib/url.js +++ b/lib/url.js @@ -1,7 +1,9 @@ 'use strict'; var url = require('url'); -var util = require('./utils/handlebarsUtils'); +var util = { + isString: require('./utils/isString') +}; var querystring = require('querystring'); var helpers = module.exports; From 60f39e52087a3d8d9c7170267cb68315ce537285 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 17 Jan 2024 14:25:11 +0100 Subject: [PATCH 084/133] Tree-shake regex --- lib/regex.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/regex.js b/lib/regex.js index 878a6f81..5cba5f6d 100644 --- a/lib/regex.js +++ b/lib/regex.js @@ -1,6 +1,6 @@ 'use strict'; -var util = require('./utils/handlebarsUtils'); +var util = { options: require('./utils/options') }; var helpers = module.exports; const kindOf = require('kind-of'); From 800e3642bb60b57a3184084c4a7a8fc32081130c Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 17 Jan 2024 14:36:41 +0100 Subject: [PATCH 085/133] Tree-shake comparison --- lib/comparison.js | 9 ++++- lib/utils/fn.js | 40 ++++++++++++++++++++ lib/utils/handlebarsUtils.js | 72 ++---------------------------------- lib/utils/identity.js | 35 ++++++++++++++++++ lib/utils/inverse.js | 41 ++++++++++++++++++++ 5 files changed, 128 insertions(+), 69 deletions(-) create mode 100644 lib/utils/fn.js create mode 100644 lib/utils/identity.js create mode 100644 lib/utils/inverse.js diff --git a/lib/comparison.js b/lib/comparison.js index 3d8122f3..1d693793 100644 --- a/lib/comparison.js +++ b/lib/comparison.js @@ -1,7 +1,14 @@ 'use strict'; var has = require('has-value'); -var util = require('./utils/handlebarsUtils'); +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'); 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 index 913b332f..58b6db90 100644 --- a/lib/utils/handlebarsUtils.js +++ b/lib/utils/handlebarsUtils.js @@ -134,55 +134,9 @@ utils.expectedType = function(param, expected, actual) { utils.isBlock = require('./isBlock'); -/** - * 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 - */ +utils.fn = require('./fn'); -utils.fn = function(val, context, options) { - if (utils.isOptions(val)) { - return utils.fn('', val, options); - } - if (utils.isOptions(context)) { - return utils.fn(val, {}, context); - } - return utils.isBlock(options) ? options.fn(context) : val; -}; - -/** - * 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 - */ - -utils.inverse = function(val, context, options) { - if (utils.isOptions(val)) { - return utils.identity('', val, options); - } - if (utils.isOptions(context)) { - return utils.inverse(val, {}, context); - } - return utils.isBlock(options) ? options.inverse(context) : val; -}; +utils.inverse = require('./inverse'); utils.value = require('./value'); @@ -285,25 +239,7 @@ function isEmpty(val) { return false; } -/** - * 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 - */ - -utils.identity = function(val) { - return val; -}; +utils.identity = require('./identity'); utils.isString = require('./isString'); @@ -339,6 +275,6 @@ utils.arrayify = function(val) { utils.tryParse = function(str) { try { return JSON.parse(str); - } catch (err) {} + } catch (err) { } return {}; }; diff --git a/lib/utils/identity.js b/lib/utils/identity.js new file mode 100644 index 00000000..45597e45 --- /dev/null +++ b/lib/utils/identity.js @@ -0,0 +1,35 @@ +'use strict'; + +const { inverse } = require('./handlebarsUtils'); +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 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/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; +}; From 5bc63aaa52feaf6e0f2b7c9a238c7d16453a933d Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 17 Jan 2024 14:37:32 +0100 Subject: [PATCH 086/133] Lint --- lib/utils/identity.js | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/lib/utils/identity.js b/lib/utils/identity.js index 45597e45..dcb2cc68 100644 --- a/lib/utils/identity.js +++ b/lib/utils/identity.js @@ -1,9 +1,5 @@ 'use strict'; -const { inverse } = require('./handlebarsUtils'); -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 @@ -30,6 +26,6 @@ const isOptions = require('./isOptions'); * @api public */ -module.exports = function(val) { +module.exports = function (val) { return val; }; From be3297c28774061ef4c049310d85e89b3d599d9b Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 17 Jan 2024 14:42:32 +0100 Subject: [PATCH 087/133] Lint --- lib/utils/identity.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/utils/identity.js b/lib/utils/identity.js index dcb2cc68..b06ef3ba 100644 --- a/lib/utils/identity.js +++ b/lib/utils/identity.js @@ -26,6 +26,6 @@ * @api public */ -module.exports = function (val) { +module.exports = function(val) { return val; }; From cb8a1b2358860769f2b4a2c0605d11ec386a55a8 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Wed, 17 Jan 2024 15:45:33 +0100 Subject: [PATCH 088/133] Add uuid back --- lib/comparison.js | 4 ++-- lib/uuid.js | 4 ++-- package.json | 5 +++-- yarn.lock | 5 +++++ 4 files changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/comparison.js b/lib/comparison.js index 1d693793..90b4e4cd 100644 --- a/lib/comparison.js +++ b/lib/comparison.js @@ -449,8 +449,8 @@ helpers.lt = function(a, b, options) { * 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 diff --git a/lib/uuid.js b/lib/uuid.js index bf9345e0..2df5216b 100644 --- a/lib/uuid.js +++ b/lib/uuid.js @@ -1,4 +1,4 @@ -const crypto = require('crypto'); +const { v4 } = require('uuid'); const helpers = module.exports; /** @@ -9,6 +9,6 @@ const helpers = module.exports; * @example {{ uuid }} -> f34ebc66-93bd-4f7c-b79b-92b5569138bc */ helpers.uuid = function() { - return crypto.randomUUID(); + return v4(); }; diff --git a/package.json b/package.json index 21ad8e10..4a7fedec 100644 --- a/package.json +++ b/package.json @@ -85,7 +85,8 @@ "micromatch": "^4.0.5", "relative": "^3.0.2", "striptags": "^3.1.1", - "to-gfm-code-block": "^0.1.1" + "to-gfm-code-block": "^0.1.1", + "uuid": "^9.0.1" }, "devDependencies": { "engine-handlebars": "^0.8.2", @@ -178,4 +179,4 @@ } } } -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index b64f971c..66f0d3e7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8123,6 +8123,11 @@ uuid@^3.3.3: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +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" From 9b61cf3ee367b6997d7c6ede245e271103ffc7d9 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Thu, 18 Jan 2024 15:51:09 +0100 Subject: [PATCH 089/133] Lint --- lib/utils/handlebarsUtils.js | 33 ++++++++++++++------------------- 1 file changed, 14 insertions(+), 19 deletions(-) diff --git a/lib/utils/handlebarsUtils.js b/lib/utils/handlebarsUtils.js index 58b6db90..d23cbe7a 100644 --- a/lib/utils/handlebarsUtils.js +++ b/lib/utils/handlebarsUtils.js @@ -14,17 +14,26 @@ var util = require('util'); var type = require('typeof-article'); var utils = exports = module.exports; -utils.isObject = require('./isObject'); -utils.isOptions = require('./isOptions'); -utils.isUndefined = require('./isUndefined'); -utils.result = require('./result'); utils.extend = extend; -utils.indexOf = require('./indexOf'); 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 = { '&': '&', '<': '<', @@ -132,14 +141,6 @@ utils.expectedType = function(param, expected, actual) { return 'expected ' + param + ' to be ' + exp + ' but received ' + type(actual) + ': ' + val; }; -utils.isBlock = require('./isBlock'); - -utils.fn = require('./fn'); - -utils.inverse = require('./inverse'); - -utils.value = require('./value'); - /** * Returns true if an `app` propery is on the context, which means * the context was created by [assemble][], [templates][], [verb][], @@ -165,8 +166,6 @@ utils.isApp = function(thisArg) { && utils.isObject(thisArg.app); }; -utils.options = require('./options'); - /** * Get the context to use for rendering. * @@ -239,10 +238,6 @@ function isEmpty(val) { return false; } -utils.identity = require('./identity'); - -utils.isString = require('./isString'); - /** * Cast the given `val` to an array. * From 78c97f59d8ec5e9ba1c8a6ff4eb835b959cfcdf0 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Fri, 19 Jan 2024 11:34:02 +0100 Subject: [PATCH 090/133] Revert "Remove UUID dependency" --- lib/uuid.js | 4 ++-- package.json | 3 ++- yarn.lock | 5 +++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/lib/uuid.js b/lib/uuid.js index bf9345e0..6c6a5bdd 100644 --- a/lib/uuid.js +++ b/lib/uuid.js @@ -1,4 +1,4 @@ -const crypto = require('crypto'); +const uuid = require('uuid'); const helpers = module.exports; /** @@ -9,6 +9,6 @@ const helpers = module.exports; * @example {{ uuid }} -> f34ebc66-93bd-4f7c-b79b-92b5569138bc */ helpers.uuid = function() { - return crypto.randomUUID(); + return uuid.v4(); }; diff --git a/package.json b/package.json index d7bbf08e..3d319c3e 100644 --- a/package.json +++ b/package.json @@ -86,7 +86,8 @@ "micromatch": "^4.0.5", "relative": "^3.0.2", "striptags": "^3.1.1", - "to-gfm-code-block": "^0.1.1" + "to-gfm-code-block": "^0.1.1", + "uuid": "^9.0.1" }, "devDependencies": { "engine-handlebars": "^0.8.2", diff --git a/yarn.lock b/yarn.lock index 1d454af5..82f2bf42 100644 --- a/yarn.lock +++ b/yarn.lock @@ -8123,6 +8123,11 @@ uuid@^3.3.3: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== +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" From c5b78ccb1af8a8b95c4f286719f753c8984e6329 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Fri, 19 Jan 2024 11:44:25 +0100 Subject: [PATCH 091/133] v0.12.2 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3d319c3e..c07f93b4 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.12.1", + "version": "0.12.2", "homepage": "https://github.com/Budibase/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ From c353df41d98884d24e6263c0352aa8e599a28be8 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 22 Jan 2024 15:30:21 +0100 Subject: [PATCH 092/133] Update array doc --- lib/array.js | 48 ++++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 22 deletions(-) diff --git a/lib/array.js b/lib/array.js index 8dcb8272..0a6476a7 100644 --- a/lib/array.js +++ b/lib/array.js @@ -18,7 +18,7 @@ const createFrame = require('./utils/createFrame'); * @param {Number} `n` Starting index (number of items to exclude) * @return {Array} Array exluding `n` items. * @api public - * @example {{ after [1, 2, 3] 1}} -> [3] + * @example {{ after [1, 2, 3] 1}} -> [2, 3] */ helpers.after = function(array, n) { @@ -94,7 +94,7 @@ helpers.eachIndex = function(array, options) { array = util.result(array); if (Array.isArray(array)) { for (var i = 0; i < array.length; i++) { - result += options.fn({item: array[i], index: i}); + result += options.fn({ item: array[i], index: i }); } } return result; @@ -122,7 +122,6 @@ helpers.filter = function(array, value, options) { if (util.isUndefined(array)) return options.inverse(this); array = util.result(array); if (Array.isArray(array)) { - var content = ''; var results = []; @@ -133,7 +132,6 @@ helpers.filter = function(array, value, options) { return value === getValue(val, prop); }); } else { - // filter on a string value results = array.filter(function(v) { return value === v; @@ -161,7 +159,7 @@ helpers.filter = function(array, value, options) { * @param {Number} `n` Number of items to return, starting at `0`. * @return {Array} * @api public - * @example {{first [1, 2, 3, 4] 2}} -> [1, 2] + * @example {{first [1, 2, 3, 4] 2}} -> 1,2 */ helpers.first = function(array, n) { @@ -226,8 +224,8 @@ helpers.forEach = function(array, options) { item.index = i + 1; item.total = len; item.isFirst = i === 0; - item.isLast = i === (len - 1); - buffer += options.fn(item, {data: data}); + item.isLast = i === len - 1; + buffer += options.fn(item, { data: data }); } return buffer; } @@ -334,7 +332,7 @@ 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' + * @example {{join [1, 2, 3]}} -> 1, 2, 3 */ helpers.join = function(array, separator) { @@ -358,7 +356,7 @@ helpers.join = function(array, separator) { * @return {String} * @block * @api public - * @example {{equalsLength '[1,2,3]' 3}} -> true + * @example {{equalsLength [1, 2, 3] 3}} -> true */ helpers.equalsLength = function(value, length, options) { @@ -424,7 +422,7 @@ helpers.last = function(array, n) { * @param {Array|Object|String} `value` * @return {Number} The length of the value. * @api public - * @example {{length '[1, 2, 3]'}} -> 3 + * @example {{length [1, 2, 3]}} -> 3 */ helpers.length = function(array) { @@ -433,7 +431,11 @@ helpers.length = function(array) { array = Object.keys(array); } // this is an inline array, split it - if (typeof array === 'string' && array.startsWith('[') && array.endsWith(']')) { + if ( + typeof array === 'string' && + array.startsWith('[') && + array.endsWith(']') + ) { return array.split(',').length; } if (typeof array === 'string' || Array.isArray(array)) { @@ -641,7 +643,7 @@ helpers.sortBy = function(array, prop, options) { if (!util.isString(prop) && typeof prop !== 'function') { return array.sort(); } - + if (typeof prop === 'function') { return array.sort(prop); } @@ -795,7 +797,7 @@ helpers.withGroup = function(array, size, options) { 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 = []; } @@ -839,7 +841,8 @@ helpers.withLast = function(array, idx, options) { } array = array.slice(-idx); - var len = array.length, i = -1; + var len = array.length, + i = -1; var result = ''; while (++i < len) { result += options.fn(array[i]); @@ -875,7 +878,7 @@ helpers.withSort = function(array, prop, options) { if (util.isUndefined(prop)) { options = prop; - + array = array.sort(); if (getValue(options, 'hash.reverse')) { array = array.reverse(); @@ -890,14 +893,15 @@ helpers.withSort = function(array, prop, options) { array.sort(function(a, b) { a = getValue(a, prop); b = getValue(b, prop); - return a > b ? 1 : (a < b ? -1 : 0); + return a > b ? 1 : a < b ? -1 : 0; }); if (getValue(options, 'hash.reverse')) { array = array.reverse(); } - var alen = array.length, j = -1; + var alen = array.length, + j = -1; while (++j < alen) { result += options.fn(array[j]); } @@ -910,11 +914,11 @@ helpers.withSort = function(array, prop, options) { * 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} From ead77b1ab09025a95ea4241edaeb3db84aca6833 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 22 Jan 2024 16:07:24 +0100 Subject: [PATCH 093/133] Fix string examples --- lib/string.js | 30 +++++++++++++++--------------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/lib/string.js b/lib/string.js index 5f35dc04..50f2bcfe 100644 --- a/lib/string.js +++ b/lib/string.js @@ -124,7 +124,7 @@ helpers.center = function(str, spaces) { * @param {String} `string` The string to chop. * @return {String} * @api public - * @example {{ chop ' ABC '}} -> 'ABC' + * @example {{ chop ' ABC '}} -> ABC */ helpers.chop = function(str) { @@ -206,7 +206,7 @@ helpers.downcase = function() { * @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… + * @example {{ellipsis 'foo bar baz' 7}} -> foo bar… */ helpers.ellipsis = function(str, limit) { @@ -427,7 +427,7 @@ helpers.raw = function(options) { * @param {String} `substring` * @return {String} * @api public - * @example {{remove 'a b a b a b' 'a '}} -> b b b + * @example {{remove 'a b a b a b' 'a '}} -> b b b */ helpers.remove = function(str, ch) { @@ -447,7 +447,7 @@ helpers.remove = function(str, ch) { * @param {String} `substring` * @return {String} * @api public - * @example {{remove 'a b a b a b' 'a'}} -> b a b a b + * @example {{removeFirst 'a b a b a b' 'a'}} -> ' b a b a b' */ helpers.removeFirst = function(str, ch) { @@ -468,7 +468,7 @@ 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 + * @example {{replace 'a b a b a b' 'a' 'z'}} -> z b z b z b */ helpers.replace = function(str, a, b) { @@ -490,7 +490,7 @@ helpers.replace = function(str, a, b) { * @param {String} `b` * @return {String} * @api public - * @example {{replace 'a b a b a b' 'a' 'z'}} -> z b a b a b + * @example {{replaceFirst 'a b a b a b' 'a' 'z'}} -> z b a b a b */ helpers.replaceFirst = function(str, a, b) { @@ -510,7 +510,7 @@ helpers.replaceFirst = function(str, a, b) { * @param {String} `str` * @return {String} * @api public - * @example {{reverse 'abcde'}} -> edcba + * @example {{reverse 'abcde'}} -> edcba */ helpers.reverse = function(str) { @@ -528,7 +528,7 @@ helpers.reverse = function(str) { * @param {String} `str` * @return {String} * @api public - * @example {{sentence 'hello world. goodbye world.'}} -> Hello world. Goodbye world. + * @example {{sentence 'hello world. goodbye world.'}} -> Hello world. Goodbye world. */ helpers.sentence = function(str) { @@ -568,7 +568,7 @@ helpers.snakecase = function(str) { * @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'] + * @example {{split 'a,b,c'}} -> ['a', 'b', 'c'] */ helpers.split = function(str, ch) { @@ -594,7 +594,7 @@ helpers.split = function(str, ch) { * @return {String} * @block * @api public - * @example {{#startsWith 'Goodbye' 'Hello, world!'}} Yep {{else}} Nope {{/startsWith}} -> Nope + * @example {{#startsWith 'Goodbye' 'Hello, world!'}}Yep{{else}}Nope{{/startsWith}} -> Nope */ helpers.startsWith = function(prefix, str, options) { @@ -619,7 +619,7 @@ helpers.startsWith = function(prefix, str, options) { * @param {String} `str` * @return {String} * @api public - * @example {{#titleize 'this is title case' }} -> This Is Title Case + * @example {{titleize 'this is title case' }} -> This Is Title Case */ helpers.titleize = function(str) { @@ -683,7 +683,7 @@ helpers.trimLeft = function(str) { * @param {String} `string` The string to trim. * @return {String} * @api public - * @example {{trimRight ' ABC ' }} -> ' ABC ' + * @example {{trimRight ' ABC ' }} -> ' ABC' */ helpers.trimRight = function(str) { @@ -707,7 +707,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 + * @example {{truncate 'foo bar baz' 7 }} -> foo bar */ helpers.truncate = function(str, limit, suffix) { @@ -740,7 +740,7 @@ 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 + * @example {{truncateWords 'foo bar baz' 1 }} -> foo… */ helpers.truncateWords = function(str, count, suffix) { @@ -751,7 +751,7 @@ helpers.truncateWords = function(str, count, suffix) { var num = Number(count); var arr = str.split(/[ \t]/); - if (num > arr.length) { + if (num < arr.length) { arr = arr.slice(0, num); } From 53ebf314da0dc8216e98fde04655904658550459 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 22 Jan 2024 22:26:46 +0100 Subject: [PATCH 094/133] Fix url --- lib/url.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/url.js b/lib/url.js index 9951ae07..f97673a9 100644 --- a/lib/url.js +++ b/lib/url.js @@ -14,7 +14,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://myurl?Hello%20There + * @example {{ encodeURI 'https://myurl?Hello There' }} -> https%3A%2F%2Fmyurl%3FHello%20There */ helpers.encodeURI = function(str) { @@ -30,7 +30,7 @@ helpers.encodeURI = function(str) { * @param {String} `str` * @return {String} Escaped string. * @api public - * @example {{ escape 'https://myurl?Hello+There' }} -> https://myurl?Hello%20There + * @example {{ escape 'https://myurl?Hello+There' }} -> https%3A%2F%2Fmyurl%3FHello%2BThere */ helpers.escape = function(str) { @@ -45,7 +45,7 @@ helpers.escape = function(str) { * @param {String} `str` * @return {String} * @api public - * @example {{ decodeURI 'https://myurl?Hello%20There' }} -> https://myurl?=Hello There + * @example {{ decodeURI 'https://myurl?Hello%20There' }} -> https://myurl?Hello There */ helpers.decodeURI = function(str) { @@ -109,7 +109,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' + * @example {{ stripProtocol 'https://myurl/api/test' }} -> '//myurl/api/test' */ helpers.stripProtocol = function(str) { From 0c0a6aa05746eb2df39915b124ea33003d20c340 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 10:22:16 +0100 Subject: [PATCH 095/133] Fix comparasion --- lib/comparison.js | 51 ++++++++++++++++++++++++++--------------------- 1 file changed, 28 insertions(+), 23 deletions(-) diff --git a/lib/comparison.js b/lib/comparison.js index e2765436..3acc3ed0 100644 --- a/lib/comparison.js +++ b/lib/comparison.js @@ -55,7 +55,7 @@ helpers.and = function() { * @return {String} Block, or if specified the inverse block is rendered if falsey. * @block * @api public - * @example {{compare 10 '<' 5 }} -> true + * @example {{compare 10 '<' 5 }} -> false */ helpers.compare = function(a, operator, b, options) { @@ -95,7 +95,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 + '`' + ); } } @@ -143,7 +145,7 @@ helpers.contains = function(collection, value, startIndex, options) { * @return {String} * @alias .or * @api public - * @example {{default null null 'default'}} -> default + * @example {{default null null 'default'}} -> default */ helpers.default = function() { @@ -166,7 +168,7 @@ helpers.default = function() { * @alias is * @block * @api public - * @example {{#eq 3 3}} equal{{else}} not equal{{/eq}} -> equal + * @example {{#eq 3 3}}equal{{else}}not equal{{/eq}} -> equal */ helpers.eq = function(a, b, options) { @@ -190,7 +192,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 + * @example {{#gt 4 3}} greater than{{else}} not greater than{{/gt}} -> ' greater than' */ helpers.gt = function(a, b, options) { @@ -215,7 +217,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 + * @example {{#gte 4 3}} greater than or equal{{else}} not greater than{{/gte}} -> ' greater than or equal' */ helpers.gte = function(a, b, options) { @@ -236,7 +238,7 @@ helpers.gte = function(a, b, options) { * @return {String} * @block * @api public - * @example {{#has 'foobar' 'foo'}} has it{{else}} doesn't{{/has}} -> has it + * @example {{#has 'foobar' 'foo'}}has it{{else}}doesn't{{/has}} -> has it */ helpers.has = function(value, pattern, options) { @@ -259,7 +261,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); } @@ -317,7 +322,7 @@ 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 + * @example {{#ifEven 2}} even {{else}} odd {{/ifEven}} -> ' even ' */ helpers.ifEven = function(num, options) { @@ -335,7 +340,7 @@ helpers.ifEven = function(num, options) { * @return {String} Block, or inverse block if specified and falsey. * @block * @api public - * @example {{#ifNth 10 2}} remainder {{else}} no remainder {{/ifNth}} -> remainder + * @example {{#ifNth 2 10}}remainder{{else}}no remainder{{/ifNth}} -> remainder */ helpers.ifNth = function(a, b, options) { @@ -359,7 +364,7 @@ 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 + * @example {{#ifOdd 3}}odd{{else}}even{{/ifOdd}} -> odd */ helpers.ifOdd = function(val, options) { @@ -377,7 +382,7 @@ helpers.ifOdd = function(val, options) { * @return {String} * @block * @api public - * @example {{#is 3 3}} is {{else}} is not {{/is}} -> is + * @example {{#is 3 3}} is {{else}} is not {{/is}} -> ' is ' */ helpers.is = function(a, b, options) { @@ -400,7 +405,7 @@ helpers.is = function(a, b, options) { * @return {String} * @block * @api public - * @example {{#isnt 3 3}} isnt {{else}} is {{/isnt}} -> is + * @example {{#isnt 3 3}} isnt {{else}} is {{/isnt}} -> ' is ' */ helpers.isnt = function(a, b, options) { @@ -423,7 +428,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 + * @example {{#lt 2 3}} less than {{else}} more than or equal {{/lt}} -> ' less than ' */ helpers.lt = function(a, b, options) { @@ -448,7 +453,7 @@ helpers.lt = function(a, b, options) { * @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 + * @example {{#lte 2 3}} less than or equal {{else}} more than {{/lte}} -> ' less than or equal ' */ helpers.lte = function(a, b, options) { @@ -470,7 +475,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 + * @example {{#neither null null}}both falsey{{else}}both not falsey{{/neither}} -> both falsey */ helpers.neither = function(a, b, options) { @@ -485,7 +490,7 @@ helpers.neither = function(a, b, options) { * @return {String} * @block * @api public - * @example {{#not undefined }} falsey {{else}} not falsey {{/not}} -> falsey + * @example {{#not undefined }}falsey{{else}}not falsey{{/not}} -> falsey */ helpers.not = function(val, options) { @@ -508,7 +513,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 + * @example {{#or 1 2 undefined }} at least one truthy {{else}} all falsey {{/or}} -> ' at least one truthy ' */ helpers.or = function(/* any, any, ..., options */) { @@ -535,7 +540,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 + * @example {{#unlessEq 2 1 }} not equal {{else}} equal {{/unlessEq}} -> ' not equal ' */ helpers.unlessEq = function(a, b, options) { @@ -556,7 +561,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 + * @example {{#unlessGt 20 1 }} not greater than {{else}} greater than {{/unlessGt}} -> ' greater than ' */ helpers.unlessGt = function(a, b, options) { @@ -577,7 +582,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 + * @example {{#unlessLt 20 1 }}greater than or equal{{else}}less than{{/unlessLt}} -> greater than or equal */ helpers.unlessLt = function(a, b, options) { @@ -598,7 +603,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 + * @example {{#unlessGteq 20 1 }} less than {{else}}greater than or equal to{{/unlessGteq}} -> greater than or equal to */ helpers.unlessGteq = function(a, b, options) { @@ -619,7 +624,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 + * @example {{#unlessLteq 20 1 }} greater than {{else}} less than or equal to {{/unlessLteq}} -> ' greater than ' */ helpers.unlessLteq = function(a, b, options) { From b356ed6e27101936204370da6af4e97e40267c65 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 11:11:30 +0100 Subject: [PATCH 096/133] Create tests --- package.json | 3 +- test/examples/index.js | 131 +++++++++++++++++++++++++++++++++++++++++ yarn.lock | 85 +++++++++++++++++++++++++- 3 files changed, 217 insertions(+), 2 deletions(-) create mode 100644 test/examples/index.js diff --git a/package.json b/package.json index c07f93b4..4cfb2595 100644 --- a/package.json +++ b/package.json @@ -102,6 +102,7 @@ "mocha": "^8.4.0", "nyc": "^15.1.0", "rimraf": "^3.0.2", + "sinon": "^17.0.1", "template-helpers": "^1.0.1", "templates": "^1.2.9", "through2": "^4.0.2", @@ -180,4 +181,4 @@ } } } -} +} \ No newline at end of file diff --git a/test/examples/index.js b/test/examples/index.js new file mode 100644 index 00000000..10a4e54d --- /dev/null +++ b/test/examples/index.js @@ -0,0 +1,131 @@ + +'use strict'; + +require('mocha'); + +const sinon = require('sinon'); +sinon.stub(require('../../lib/uuid'), 'uuid').returns('f34ebc66-93bd-4f7c-b79b-92b5569138bc'); + +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) { + + it(func, function () { + const { example } = getCommentInfo(fileContent, func); + + let [hbs, expectedResult] = example.split('->').map(x => x.trim()); + + const context = { + double: i => i * 2 + }; + + 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(/ /g, ' '); + assert.equal(result, expectedResult); + }); + } + }); + } +}); diff --git a/yarn.lock b/yarn.lock index 82f2bf42..cc3037c4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -239,6 +239,41 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== +"@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== + "@ungap/promise-all-settled@1.1.2": version "1.1.2" resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" @@ -1981,6 +2016,11 @@ diff@^2.0.2: 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== + doctrine@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" @@ -4574,6 +4614,11 @@ just-debounce@^1.0.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" @@ -4967,6 +5012,11 @@ lodash.flattendeep@^4.4.0: resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= +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" @@ -5676,6 +5726,17 @@ next-tick@~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" @@ -6316,6 +6377,11 @@ path-to-regexp@^1.0.3, path-to-regexp@^1.2.1: 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" @@ -7139,6 +7205,18 @@ simple-get@^2.5.1: 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" @@ -7486,7 +7564,7 @@ supports-color@^5.3.0: dependencies: has-flag "^3.0.0" -supports-color@^7.1.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== @@ -7908,6 +7986,11 @@ type-check@^0.4.0, type-check@~0.4.0: 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" From 3bfcbd78d8d7ebf8a5b28ae0e42eb6dff4dd5d09 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 11:11:45 +0100 Subject: [PATCH 097/133] Lint --- test/examples/index.js | 196 ++++++++++++++++++++--------------------- 1 file changed, 98 insertions(+), 98 deletions(-) diff --git a/test/examples/index.js b/test/examples/index.js index 10a4e54d..59e4b996 100644 --- a/test/examples/index.js +++ b/test/examples/index.js @@ -17,115 +17,115 @@ 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; - } + 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; + } + 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'); + 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; + } + 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 + 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) { - - it(func, function () { - const { example } = getCommentInfo(fileContent, func); - - let [hbs, expectedResult] = example.split('->').map(x => x.trim()); - - const context = { - double: i => i * 2 - }; - - 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(/ /g, ' '); - assert.equal(result, expectedResult); - }); +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) { + + it(func, function() { + const { example } = getCommentInfo(fileContent, func); + + let [hbs, expectedResult] = example.split('->').map(x => x.trim()); + + const context = { + double: i => i * 2 + }; + + 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(/ /g, ' '); + assert.equal(result, expectedResult); }); - } + } + }); + } }); From b614cbecc1d7ccf72aaf7c77b7563e35ebd69b2c Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 11:14:02 +0100 Subject: [PATCH 098/133] Fix random test --- test/examples/index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/examples/index.js b/test/examples/index.js index 59e4b996..4c378ec9 100644 --- a/test/examples/index.js +++ b/test/examples/index.js @@ -6,6 +6,8 @@ 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/'); From e9df816477202b67087877ded31e93fdcad1c500 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 11:26:43 +0100 Subject: [PATCH 099/133] Fix toExponential --- lib/number.js | 2 +- test/examples/index.js | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/lib/number.js b/lib/number.js index 5bc70a41..966a2005 100644 --- a/lib/number.js +++ b/lib/number.js @@ -127,7 +127,7 @@ 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 }} -> 101e+4 + * @example {{ toExponential 10123 2 }} -> 1.01e+4 */ helpers.toExponential = function(number, digits) { diff --git a/test/examples/index.js b/test/examples/index.js index 4c378ec9..85d4952e 100644 --- a/test/examples/index.js +++ b/test/examples/index.js @@ -90,10 +90,9 @@ describe('examples', function() { describe(key, function() { for (const func in group) { + const { example } = getCommentInfo(fileContent, func); - it(func, function() { - const { example } = getCommentInfo(fileContent, func); - + example && it(func, function() { let [hbs, expectedResult] = example.split('->').map(x => x.trim()); const context = { From b6a7a899359d2199bbcc726d8696fbfe26168868 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 11:43:55 +0100 Subject: [PATCH 100/133] Fix loading tests --- test/examples/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/examples/index.js b/test/examples/index.js index 85d4952e..d95b781f 100644 --- a/test/examples/index.js +++ b/test/examples/index.js @@ -90,7 +90,7 @@ describe('examples', function() { describe(key, function() { for (const func in group) { - const { example } = getCommentInfo(fileContent, func); + const { example } = getCommentInfo(fileContent, lib[key][func].toString()); example && it(func, function() { let [hbs, expectedResult] = example.split('->').map(x => x.trim()); From f9b425789333046afa20876684053366ca4932f4 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 11:47:40 +0100 Subject: [PATCH 101/133] Fix test --- lib/number.js | 2 +- test/examples/index.js | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/number.js b/lib/number.js index 966a2005..a0c5391b 100644 --- a/lib/number.js +++ b/lib/number.js @@ -17,7 +17,7 @@ var helpers = module.exports; * @param {Number|String} `number` * @return {String} * @api public - * @example {{ bytes 1386 }} -> 1.4Kb + * @example {{ bytes 1386 1 }} -> 1.4 kB */ helpers.bytes = function(number, precision, options) { diff --git a/test/examples/index.js b/test/examples/index.js index d95b781f..e535a139 100644 --- a/test/examples/index.js +++ b/test/examples/index.js @@ -88,7 +88,6 @@ describe('examples', function() { 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()); From e711d8ebab8be548d8d0642b0774341efc13dfa8 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 11:49:43 +0100 Subject: [PATCH 102/133] Fix center test --- test/examples/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/examples/index.js b/test/examples/index.js index e535a139..492cbaa1 100644 --- a/test/examples/index.js +++ b/test/examples/index.js @@ -122,7 +122,7 @@ describe('examples', function() { } catch (e) { // Nothing to parse } - result = result.replace(/ /g, ' '); + result = result.replace(/&nbsp;/g, ' '); assert.equal(result, expectedResult); }); } From 1b00f0704011b083767fca8b7edb4db174d2ce5e Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 11:57:59 +0100 Subject: [PATCH 103/133] Fix before and after examples and code --- lib/array.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/array.js b/lib/array.js index 0a6476a7..a5aeeedd 100644 --- a/lib/array.js +++ b/lib/array.js @@ -18,7 +18,7 @@ const createFrame = require('./utils/createFrame'); * @param {Number} `n` Starting index (number of items to exclude) * @return {Array} Array exluding `n` items. * @api public - * @example {{ after [1, 2, 3] 1}} -> [2, 3] + * @example {{ after ['a', 'b', 'c', 'd'] 2}} -> ['c', 'd'] */ helpers.after = function(array, n) { @@ -55,20 +55,20 @@ 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 [1, 2, 3] 2}} -> [1, 2] + * @example {{ before ['a', 'b', 'c', 'd'] 3}} -> ['a', 'b'] */ helpers.before = function(array, n) { if (util.isUndefined(array)) return ''; array = util.result(array); if (Array.isArray(array)) { - return array.slice(0, -n); + return array.slice(0, n - 1); } return ''; }; From 0228980bc6757db8ad3cee67032ef4c0ee805cce Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 12:12:10 +0100 Subject: [PATCH 104/133] Fix stripQuerystring docs --- lib/url.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/url.js b/lib/url.js index f97673a9..fbf32f4c 100644 --- a/lib/url.js +++ b/lib/url.js @@ -88,7 +88,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' + * @example {{ stripQuerystring 'https://myurl/api/test?foo=bar' }} -> 'https://myurl/api/test' */ helpers.stripQuerystring = function(str) { From f119b5c7c900630d7eac8787b5c7f2b74d0a1f14 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 12:38:49 +0100 Subject: [PATCH 105/133] Fix array examples --- lib/array.js | 18 +++++++++--------- lib/string.js | 18 ------------------ test/examples/index.js | 3 ++- 3 files changed, 11 insertions(+), 28 deletions(-) diff --git a/lib/array.js b/lib/array.js index a5aeeedd..1b9de1d0 100644 --- a/lib/array.js +++ b/lib/array.js @@ -252,7 +252,7 @@ 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 + * @example {{#inArray [1, 2, 3] 2}} 2 exists {{else}} 2 does not exist {{/inArray}} -> ' 2 exists ' */ helpers.inArray = function(array, value, options) { @@ -568,7 +568,7 @@ helpers.reverse = function(array) { * @return {String} * @block * @api public - * @example {{#some [1, 'b', 3] isString}} string found {{else}} No string found {{/some}} -> string found + * @example {{#some [1, "b", 3] isString}} string found {{else}} No string found {{/some}} -> ' string found ' */ helpers.some = function(array, iter, options) { @@ -629,7 +629,7 @@ helpers.sort = function(array, options) { * @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'}] + * @example {{ sortBy [{'a': 'zzz'}, {'a': 'aaa'}] 'a' }} -> [{'a':'aaa'}, {'a':'zzz'}] */ helpers.sortBy = function(array, prop, options) { @@ -740,7 +740,7 @@ helpers.withBefore = function(array, idx, options) { * @return {String} * @block * @api public - * @example {{ withFirst [1, 2, 3] }} {{this}} {{/withFirst}} + * @example {{#withFirst [1, 2, 3] }}{{this}}{{/withFirst}} -> 1 */ helpers.withFirst = function(array, idx, options) { @@ -774,7 +774,7 @@ helpers.withFirst = function(array, idx, options) { * {{#withGroup array 4}} * {{#each this}} * {{.}} - * {{each}} + * {{/each}} *
* {{/withGroup}} * @@ -787,7 +787,7 @@ helpers.withFirst = function(array, idx, options) { * @return {String} * @block * @api public - * @example {{#withGroup [1, 2, 3, 4] 2}} {{#each this}} {{.}} {{each}}
{{/withGroup}} -> 1,2
3,4
+ * @example {{#withGroup [1, 2, 3, 4] 2}}{{#each this}}{{.}}{{/each}}
{{/withGroup}} -> 12
34
* */ helpers.withGroup = function(array, size, options) { @@ -824,7 +824,7 @@ helpers.withGroup = function(array, size, options) { * @param {Object} `options` * @return {String} * @block - * @example {{#withLast [1, 2, 3, 4]}} {{this}} {{/withLast}} -> 4 + * @example {{#withLast [1, 2, 3, 4]}}{{this}}{{/withLast}} -> 4 */ helpers.withLast = function(array, idx, options) { @@ -867,7 +867,7 @@ helpers.withLast = function(array, idx, options) { * @return {String} * @block * @api public - * @example {{#withSort ['b', 'a', 'c']}} {{this}} {{/withSort}} -> abc + * @example {{#withSort ['b', 'a', 'c']}}{{this}}{{/withSort}} -> abc */ helpers.withSort = function(array, prop, options) { @@ -923,7 +923,7 @@ helpers.withSort = function(array, prop, options) { * @param {Object} `options` * @return {Array} * @api public - * @example {{#each (unique ['a', 'a', 'c', 'b', 'e', 'e']) }} {{.}} {{/each}} -> acbe + * @example {{#each (unique ['a', 'a', 'c', 'b', 'e', 'e']) }}{{.}}{{/each}} -> acbe */ helpers.unique = function(array, options) { diff --git a/lib/string.js b/lib/string.js index 50f2bcfe..7891717e 100644 --- a/lib/string.js +++ b/lib/string.js @@ -500,24 +500,6 @@ helpers.replaceFirst = function(str, a, b) { return str.replace(a, b); }; -/** - * Reverse a string. - * - * ```handlebars - * {{reverse 'abcde'}} - * - * ``` - * @param {String} `str` - * @return {String} - * @api public - * @example {{reverse 'abcde'}} -> edcba - */ - -helpers.reverse = function(str) { - if (typeof(str) !== 'string') return ''; - return str.split('').reverse().join(''); -}; - /** * Sentence case the given string * diff --git a/test/examples/index.js b/test/examples/index.js index 492cbaa1..bb4bec66 100644 --- a/test/examples/index.js +++ b/test/examples/index.js @@ -95,7 +95,8 @@ describe('examples', function() { let [hbs, expectedResult] = example.split('->').map(x => x.trim()); const context = { - double: i => i * 2 + double: i => i * 2, + isString: (x) => typeof(x) === 'string' }; const arrays = hbs.match(/\[[^/\]]+\]/); From e61495477b072372cdeb9eecedf686e9759fdf20 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 13:30:48 +0100 Subject: [PATCH 106/133] Fixing array.before tests and code --- test/array.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/test/array.js b/test/array.js index 5939deed..b5ca626f 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'); }); }); From 05ab084753a45169179b32958beca4c8adaa4d4b Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 13:44:09 +0100 Subject: [PATCH 107/133] Fix raw example --- lib/string.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/string.js b/lib/string.js index 7891717e..44de7877 100644 --- a/lib/string.js +++ b/lib/string.js @@ -388,7 +388,7 @@ helpers.prepend = function(str, prefix) { * Render a block without processing mustache templates inside the block. * * ```handlebars - * {{{{#raw}}}} + * {{{{raw}}}} * {{foo}} * {{{{/raw}}}} * @@ -398,7 +398,7 @@ helpers.prepend = function(str, prefix) { * @return {String} * @block * @api public - * @example {{{{#raw}}}} {{foo}} {{{{/raw}}}} -> {{foo}} + * @example {{{{raw}}}}{{foo}}{{{{/raw}}}} -> {{foo}} */ helpers.raw = function(options) { From 8f173ba6e983639bfe5770e290cb181f9f51191b Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 13:46:33 +0100 Subject: [PATCH 108/133] Fix reverse test --- lib/string.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/lib/string.js b/lib/string.js index 44de7877..410634e1 100644 --- a/lib/string.js +++ b/lib/string.js @@ -500,6 +500,21 @@ helpers.replaceFirst = function(str, a, b) { return str.replace(a, b); }; +/** + * Reverse a string. + * + * ```handlebars + * {{reverse 'abcde'}} + * + * ``` + * @param {String} `str` + * @return {String} + * @api public + * @example {{reverse 'abcde'}} -> edcba + */ + +helpers.reverse = require('./array').reverse; + /** * Sentence case the given string * From 03640974f3e6bcb123d31b1726d87ae172ef4c23 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 13:52:02 +0100 Subject: [PATCH 109/133] Fix raw test --- lib/string.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/string.js b/lib/string.js index 410634e1..6b1064ce 100644 --- a/lib/string.js +++ b/lib/string.js @@ -398,7 +398,7 @@ helpers.prepend = function(str, prefix) { * @return {String} * @block * @api public - * @example {{{{raw}}}}{{foo}}{{{{/raw}}}} -> {{foo}} + * @example {{{{raw}}}}{{foo}}{{{{/raw}}}} -> \{{foo}} */ helpers.raw = function(options) { From 948c8504c036a33367d053be524bfd4b8836be54 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 13:57:09 +0100 Subject: [PATCH 110/133] Fix, run all tests --- package.json | 8 +- yarn.lock | 692 +-------------------------------------------------- 2 files changed, 13 insertions(+), 687 deletions(-) diff --git a/package.json b/package.json index 4cfb2595..f6e6cb2b 100644 --- a/package.json +++ b/package.json @@ -69,10 +69,9 @@ "node": ">=10.12.0" }, "scripts": { - "lint": "./node_modules/.bin/eslint *.js lib/**/*.js test/**/*.js", - "test": "./node_modules/.bin/rimraf .nyc_output && ./node_modules/.bin/nyc ./node_modules/.bin/mocha", - "update:readmemd": "verb", - "clean": "./node_modules/.bin/rimraf .nyc_output" + "lint": "eslint *.js lib/**/*.js test/**/*.js", + "test": "mocha", + "update:readmemd": "verb" }, "dependencies": { "get-object": "^0.2.0", @@ -100,7 +99,6 @@ "js-yaml": "^4.1.0", "markdown-link": "^0.1.1", "mocha": "^8.4.0", - "nyc": "^15.1.0", "rimraf": "^3.0.2", "sinon": "^17.0.1", "template-helpers": "^1.0.1", diff --git a/yarn.lock b/yarn.lock index cc3037c4..315ce653 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9,160 +9,12 @@ dependencies: "@babel/highlight" "^7.10.4" -"@babel/code-frame@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.14.5.tgz#23b08d740e83f49c5e59945fbf1b43e80bbf4edb" - integrity sha512-9pzDqyc6OLDaqe+zbACgFkb6fKMNG6CObKpnYXChRsvYGyEdc7CA2BaqeOM+vOtCS5ndmJicPJhKAwYRI6UfFw== - dependencies: - "@babel/highlight" "^7.14.5" - -"@babel/compat-data@^7.14.5": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.7.tgz#7b047d7a3a89a67d2258dc61f604f098f1bc7e08" - integrity sha512-nS6dZaISCXJ3+518CWiBfEr//gHyMO02uDxBkXTKZDN5POruCnOZ1N4YBRZDCabwF8nZMWBpRxIicmXtBs+fvw== - -"@babel/core@^7.7.5": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.14.6.tgz#e0814ec1a950032ff16c13a2721de39a8416fcab" - integrity sha512-gJnOEWSqTk96qG5BoIrl5bVtc23DCycmIePPYnamY9RboYdI4nFy5vAQMSl81O5K/W0sLDWfGysnOECC+KUUCA== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.5" - "@babel/helper-compilation-targets" "^7.14.5" - "@babel/helper-module-transforms" "^7.14.5" - "@babel/helpers" "^7.14.6" - "@babel/parser" "^7.14.6" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - convert-source-map "^1.7.0" - debug "^4.1.0" - gensync "^1.0.0-beta.2" - json5 "^2.1.2" - semver "^6.3.0" - source-map "^0.5.0" - -"@babel/generator@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.14.5.tgz#848d7b9f031caca9d0cd0af01b063f226f52d785" - integrity sha512-y3rlP+/G25OIX3mYKKIOlQRcqj7YgrvHxOLbVmyLJ9bPmi5ttvUmpydVjcFjZphOktWuA7ovbx91ECloWTfjIA== - dependencies: - "@babel/types" "^7.14.5" - jsesc "^2.5.1" - source-map "^0.5.0" - -"@babel/helper-compilation-targets@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.14.5.tgz#7a99c5d0967911e972fe2c3411f7d5b498498ecf" - integrity sha512-v+QtZqXEiOnpO6EYvlImB6zCD2Lel06RzOPzmkz/D/XgQiUu3C/Jb1LOqSt/AIA34TYi/Q+KlT8vTQrgdxkbLw== - dependencies: - "@babel/compat-data" "^7.14.5" - "@babel/helper-validator-option" "^7.14.5" - browserslist "^4.16.6" - semver "^6.3.0" - -"@babel/helper-function-name@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.14.5.tgz#89e2c474972f15d8e233b52ee8c480e2cfcd50c4" - integrity sha512-Gjna0AsXWfFvrAuX+VKcN/aNNWonizBj39yGwUzVDVTlMYJMK2Wp6xdpy72mfArFq5uK+NOuexfzZlzI1z9+AQ== - dependencies: - "@babel/helper-get-function-arity" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-get-function-arity@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.14.5.tgz#25fbfa579b0937eee1f3b805ece4ce398c431815" - integrity sha512-I1Db4Shst5lewOM4V+ZKJzQ0JGGaZ6VY1jYvMghRjqs6DWgxLCIyFt30GlnKkfUeFLpJt2vzbMVEXVSXlIFYUg== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-hoist-variables@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.14.5.tgz#e0dd27c33a78e577d7c8884916a3e7ef1f7c7f8d" - integrity sha512-R1PXiz31Uc0Vxy4OEOm07x0oSjKAdPPCh3tPivn/Eo8cvz6gveAeuyUUPB21Hoiif0uoPQSSdhIPS3352nvdyQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-member-expression-to-functions@^7.14.5": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.14.7.tgz#97e56244beb94211fe277bd818e3a329c66f7970" - integrity sha512-TMUt4xKxJn6ccjcOW7c4hlwyJArizskAhoSTOCkA0uZ+KghIaci0Qg9R043kUMWI9mtQfgny+NQ5QATnZ+paaA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-module-imports@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.14.5.tgz#6d1a44df6a38c957aa7c312da076429f11b422f3" - integrity sha512-SwrNHu5QWS84XlHwGYPDtCxcA0hrSlL2yhWYLgeOc0w7ccOl2qv4s/nARI0aYZW+bSwAL5CukeXA47B/1NKcnQ== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-module-transforms@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.14.5.tgz#7de42f10d789b423eb902ebd24031ca77cb1e10e" - integrity sha512-iXpX4KW8LVODuAieD7MzhNjmM6dzYY5tfRqT+R9HDXWl0jPn/djKmA+G9s/2C2T9zggw5tK1QNqZ70USfedOwA== - dependencies: - "@babel/helper-module-imports" "^7.14.5" - "@babel/helper-replace-supers" "^7.14.5" - "@babel/helper-simple-access" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/helper-validator-identifier" "^7.14.5" - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-optimise-call-expression@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.14.5.tgz#f27395a8619e0665b3f0364cddb41c25d71b499c" - integrity sha512-IqiLIrODUOdnPU9/F8ib1Fx2ohlgDhxnIDU7OEVi+kAbEZcyiF7BLU8W6PfvPi9LzztjS7kcbzbmL7oG8kD6VA== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-replace-supers@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.14.5.tgz#0ecc0b03c41cd567b4024ea016134c28414abb94" - integrity sha512-3i1Qe9/8x/hCHINujn+iuHy+mMRLoc77b2nI9TB0zjH1hvn9qGlXjWlggdwUcju36PkPCy/lpM7LLUdcTyH4Ow== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.14.5" - "@babel/helper-optimise-call-expression" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/helper-simple-access@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.14.5.tgz#66ea85cf53ba0b4e588ba77fc813f53abcaa41c4" - integrity sha512-nfBN9xvmCt6nrMZjfhkl7i0oTV3yxR4/FztsbOASyTvVcoYd0TRHh7eMLdlEcCqobydC0LAF3LtC92Iwxo0wyw== - dependencies: - "@babel/types" "^7.14.5" - -"@babel/helper-split-export-declaration@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.14.5.tgz#22b23a54ef51c2b7605d851930c1976dd0bc693a" - integrity sha512-hprxVPu6e5Kdp2puZUmvOGjaLv9TCe58E/Fl6hRq4YiVQxIcNvuq6uTM2r1mT/oPskuS9CgR+I94sqAYv0NGKA== - dependencies: - "@babel/types" "^7.14.5" - "@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/helper-validator-option@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.14.5.tgz#6e72a1fff18d5dfcb878e1e62f1a021c4b72d5a3" - integrity sha512-OX8D5eeX4XwcroVW45NMvoYaIuFI+GQpA2a8Gi+X/U/cDUIRsV37qQfF905F0htTRCREQIB4KqPeaveRJUl3Ow== - -"@babel/helpers@^7.14.6": - version "7.14.6" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.14.6.tgz#5b58306b95f1b47e2a0199434fa8658fa6c21635" - integrity sha512-yesp1ENQBiLI+iYHSJdoZKUtRpfTlL1grDIX9NRlAVppljLw/4tTyYupIB7uIYmC3stW/imAv8EqaKaS/ibmeA== - dependencies: - "@babel/template" "^7.14.5" - "@babel/traverse" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/highlight@^7.10.4", "@babel/highlight@^7.14.5": +"@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== @@ -171,43 +23,6 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.14.5", "@babel/parser@^7.14.6", "@babel/parser@^7.14.7": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.7.tgz#6099720c8839ca865a2637e6c85852ead0bdb595" - integrity sha512-X67Z5y+VBJuHB/RjwECp8kSl5uYi0BvRbNeWqkaJCVh+LiTPl19WBUfG627psSgp9rSf6ojuXghQM3ha6qHHdA== - -"@babel/template@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.14.5.tgz#a9bc9d8b33354ff6e55a9c60d1109200a68974f4" - integrity sha512-6Z3Po85sfxRGachLULUhOmvAaOo7xCvqGQtxINai2mEGPFm6pQ4z5QInFnUrRpfoSV60BnjyF5F3c+15fxFV1g== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/parser" "^7.14.5" - "@babel/types" "^7.14.5" - -"@babel/traverse@^7.14.5": - version "7.14.7" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.14.7.tgz#64007c9774cfdc3abd23b0780bc18a3ce3631753" - integrity sha512-9vDr5NzHu27wgwejuKL7kIOm4bwEtaPQ4Z6cpCmjSuaRqpH/7xc4qcGEscwMqlkwgcXl6MvqoAjZkQ24uSdIZQ== - dependencies: - "@babel/code-frame" "^7.14.5" - "@babel/generator" "^7.14.5" - "@babel/helper-function-name" "^7.14.5" - "@babel/helper-hoist-variables" "^7.14.5" - "@babel/helper-split-export-declaration" "^7.14.5" - "@babel/parser" "^7.14.7" - "@babel/types" "^7.14.5" - debug "^4.1.0" - globals "^11.1.0" - -"@babel/types@^7.14.5": - version "7.14.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.5.tgz#3bb997ba829a2104cedb20689c4a5b8121d383ff" - integrity sha512-M/NzBpEL95I5Hh4dwhin5JlE7EzO5PHMAuzjxss3tiOBD46KfQvVedN/3jEPZvdRvtsK2222XfdHogNIttFgcg== - dependencies: - "@babel/helper-validator-identifier" "^7.14.5" - to-fast-properties "^2.0.0" - "@eslint/eslintrc@^0.4.2": version "0.4.2" resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.4.2.tgz#f63d0ef06f5c0c57d76c4ab5f63d3835c51b0179" @@ -223,22 +38,6 @@ minimatch "^3.0.4" strip-json-comments "^3.1.1" -"@istanbuljs/load-nyc-config@^1.0.0": - version "1.1.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" - integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== - dependencies: - camelcase "^5.3.1" - find-up "^4.1.0" - get-package-type "^0.1.0" - js-yaml "^3.13.1" - resolve-from "^5.0.0" - -"@istanbuljs/schema@^0.1.2": - version "0.1.3" - resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.3.tgz#e45e384e4b8ec16bce2fd903af78450f6bf7ec98" - integrity sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA== - "@sinonjs/commons@^2.0.0": version "2.0.0" resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-2.0.0.tgz#fd4ca5b063554307e8327b4564bd56d3b73924a3" @@ -289,14 +88,6 @@ acorn@^7.4.0: resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -aggregate-error@^3.0.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" - integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== - dependencies: - clean-stack "^2.0.0" - indent-string "^4.0.0" - ajv@^6.10.0, ajv@^6.12.4: version "6.12.6" resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" @@ -651,13 +442,6 @@ append-buffer@^1.0.2: dependencies: buffer-equal "^1.0.0" -append-transform@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/append-transform/-/append-transform-2.0.0.tgz#99d9d29c7b38391e6f428d28ce136551f0b77e12" - integrity sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg== - dependencies: - default-require-extensions "^3.0.0" - archy@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/archy/-/archy-1.0.0.tgz#f9c8c13757cc1dd7bc379ac77b2c62a5c2868c40" @@ -1180,17 +964,6 @@ browser-stdout@1.3.1: resolved "https://registry.yarnpkg.com/browser-stdout/-/browser-stdout-1.3.1.tgz#baa559ee14ced73452229bad7326467c61fabd60" integrity sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw== -browserslist@^4.16.6: - version "4.16.6" - resolved "https://registry.yarnpkg.com/browserslist/-/browserslist-4.16.6.tgz#d7901277a5a88e554ed305b183ec9b0c08f66fa2" - integrity sha512-Wspk/PqO+4W9qp5iUTJsa1B/QrYn1keNCcEP5OvP7WBwT4KaDly0uONYmC6Xa3Z5IqnUgS0KcgLYu1l74x0ZXQ== - dependencies: - caniuse-lite "^1.0.30001219" - colorette "^1.2.2" - electron-to-chromium "^1.3.723" - escalade "^3.1.1" - node-releases "^1.1.71" - 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" @@ -1239,16 +1012,6 @@ cache-base@^1.0.0, cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" -caching-transform@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/caching-transform/-/caching-transform-4.0.0.tgz#00d297a4206d71e2163c39eaffa8157ac0651f0f" - integrity sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA== - dependencies: - hasha "^5.0.0" - make-dir "^3.0.0" - package-hash "^4.0.0" - write-file-atomic "^3.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" @@ -1275,21 +1038,11 @@ camelcase@^3.0.0: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-3.0.0.tgz#32fc4b9fcdaf845fcdf7e73bb97cac2261f0ab0a" integrity sha1-MvxLn82vhF/N9+c7uXysImHwqwo= -camelcase@^5.0.0, camelcase@^5.3.1: - version "5.3.1" - resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" - integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== - camelcase@^6.0.0: version "6.2.0" resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== -caniuse-lite@^1.0.30001219: - version "1.0.30001241" - resolved "https://registry.yarnpkg.com/caniuse-lite/-/caniuse-lite-1.0.30001241.tgz#cd3fae47eb3d7691692b406568d7a3e5b23c7598" - integrity sha512-1uoSZ1Pq1VpH0WerIMqwptXHNNGfdl7d1cJUFs80CwQ/lVzdhTvsFZCeNFslze7AjsQnb4C85tzclPa1VShbeQ== - 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" @@ -1401,11 +1154,6 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" -clean-stack@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" - integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== - cli-cursor@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-2.1.0.tgz#b35dac376479facc3e94747d41d0d0f5238ffcb5" @@ -1427,15 +1175,6 @@ cliui@^3.2.0: strip-ansi "^3.0.1" wrap-ansi "^2.0.0" -cliui@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" - integrity sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ== - dependencies: - string-width "^4.2.0" - strip-ansi "^6.0.0" - wrap-ansi "^6.2.0" - cliui@^7.0.2: version "7.0.4" resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f" @@ -1590,11 +1329,6 @@ color-support@^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== -colorette@^1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.2.tgz#cbcc79d5e99caea2dbf10eb3a26fd8b3e6acfa94" - integrity sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w== - columnify@^1.5.4: version "1.5.4" resolved "https://registry.yarnpkg.com/columnify/-/columnify-1.5.4.tgz#4737ddf1c7b69a8a7c340570782e947eec8e78bb" @@ -1619,11 +1353,6 @@ common-middleware@^0.4.1: mixin-deep "^1.1.3" parser-front-matter "^1.5.0" -commondir@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/commondir/-/commondir-1.0.1.tgz#ddd800da0c66127393cca5950ea968a3aaf1253b" - integrity sha1-3dgA2gxmEnOTzKWVDqloo6rxJTs= - 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" @@ -1703,7 +1432,7 @@ continuation-local-storage@^3.1.1: async-listener "^0.6.0" emitter-listener "^1.1.1" -convert-source-map@^1.5.0, convert-source-map@^1.7.0: +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== @@ -1733,7 +1462,7 @@ core-util-is@~1.0.0: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= -cross-spawn@^7.0.0, cross-spawn@^7.0.2: +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== @@ -1833,7 +1562,7 @@ dateformat@^2.0.0: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" integrity sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI= -debug@4.3.1, debug@^4.0.1, debug@^4.1.0, debug@^4.1.1: +debug@4.3.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== @@ -1861,7 +1590,7 @@ debug@^3.1.0: dependencies: ms "^2.1.1" -decamelize@^1.1.1, decamelize@^1.2.0: +decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= @@ -1914,13 +1643,6 @@ default-compare@^1.0.0: dependencies: kind-of "^5.0.2" -default-require-extensions@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/default-require-extensions/-/default-require-extensions-3.0.0.tgz#e03f93aac9b2b6443fc52e5e4a37b3ad9ad8df96" - integrity sha512-ek6DpXq/SCpvjhpFsLFRVtIxJCRw6fUR42lYMVZuUMK7n8eMz4Uh5clckdBjEpLhn/gEBZo7hDJnJcwdKLKQjg== - dependencies: - strip-bom "^4.0.0" - default-resolution@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/default-resolution/-/default-resolution-2.0.0.tgz#bcb82baa72ad79b426a76732f1a81ad6df26d684" @@ -2058,11 +1780,6 @@ each-props@^1.3.2: is-plain-object "^2.0.1" object.defaults "^1.1.0" -electron-to-chromium@^1.3.723: - version "1.3.761" - resolved "https://registry.yarnpkg.com/electron-to-chromium/-/electron-to-chromium-1.3.761.tgz#6a1748bab8ed94984391ec8be8a7e7ec1fe3d843" - integrity sha512-7a/wV/plM/b95XjTdA2Q4zAxxExTDKkNQpTiaU/nVT8tGCQVtX9NsnTjhALBFICpOB58hU6xg5fFC3CT2Bybpg== - emitter-listener@^1.1.1: version "1.1.2" resolved "https://registry.yarnpkg.com/emitter-listener/-/emitter-listener-1.1.2.tgz#56b140e8f6992375b3d7cb2cab1cc7432d9632e8" @@ -2225,11 +1942,6 @@ es5-ext@^0.10.35, es5-ext@^0.10.46, es5-ext@^0.10.50: es6-symbol "~3.1.3" next-tick "~1.0.0" -es6-error@^4.0.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/es6-error/-/es6-error-4.1.1.tgz#9e3af407459deed47e9a91f9b885a84eb05c561d" - integrity sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg== - 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" @@ -2688,15 +2400,6 @@ filter-values@^0.4.0: for-own "^0.1.3" is-match "^0.4.0" -find-cache-dir@^3.2.0: - version "3.3.1" - resolved "https://registry.yarnpkg.com/find-cache-dir/-/find-cache-dir-3.3.1.tgz#89b33fad4a4670daa94f855f7fbe31d6d84fe880" - integrity sha512-t2GDMt3oGC/v+BMwzmllWDuJF/xcDtE5j/fCGbqDD7OLuJkj0cfh1YSA5VKPvwMeLFLNDBkwOKZ2X85jGLVftQ== - dependencies: - commondir "^1.0.1" - make-dir "^3.0.2" - pkg-dir "^4.1.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" @@ -2733,14 +2436,6 @@ find-up@^1.0.0: path-exists "^2.0.0" pinkie-promise "^2.0.0" -find-up@^4.0.0, find-up@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" - integrity sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw== - dependencies: - locate-path "^5.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" @@ -2839,14 +2534,6 @@ for-own@^1.0.0: dependencies: for-in "^1.0.1" -foreground-child@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-2.0.0.tgz#71b32800c9f15aa8f2f83f4a6bd9bff35d861a53" - integrity sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA== - dependencies: - cross-spawn "^7.0.0" - signal-exit "^3.0.2" - format-people@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/format-people/-/format-people-0.1.4.tgz#b1da1aad853e967426cceaf9f6a635a8eeaad97d" @@ -2868,11 +2555,6 @@ from@^0.1.7: resolved "https://registry.yarnpkg.com/from/-/from-0.1.7.tgz#83c60afc58b9c56997007ed1a768b3ab303a44fe" integrity sha1-g8YK/Fi5xWmXAH7Rp2izqzA6RP4= -fromentries@^1.2.0: - version "1.3.2" - resolved "https://registry.yarnpkg.com/fromentries/-/fromentries-1.3.2.tgz#e4bca6808816bf8f93b52750f1127f5a6fd86e3a" - integrity sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg== - 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" @@ -2947,17 +2629,12 @@ generate-data@^0.1.7: namify "^0.1.3" repo-utils "^0.3.7" -gensync@^1.0.0-beta.2: - version "1.0.0-beta.2" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" - integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== - 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.1, get-caller-file@^2.0.5: +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== @@ -2986,11 +2663,6 @@ get-object@^0.2.0: is-number "^2.0.2" isobject "^0.2.0" -get-package-type@^0.1.0: - version "0.1.0" - resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" - integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== - 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" @@ -3280,7 +2952,7 @@ glob@^5.0.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, glob@^7.1.4, glob@^7.1.6: +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== @@ -3355,11 +3027,6 @@ global-prefix@^3.0.0: kind-of "^6.0.2" which "^1.3.1" -globals@^11.1.0: - version "11.12.0" - resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" - integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== - globals@^13.6.0, globals@^13.9.0: version "13.9.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.9.0.tgz#4bf2bf635b334a173fb1daf7c5e6b218ecdc06cb" @@ -3400,7 +3067,7 @@ graceful-fs@^3.0.0: dependencies: natives "^1.1.3" -graceful-fs@^4.0.0, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.3, graceful-fs@^4.1.6: +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== @@ -3700,14 +3367,6 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -hasha@^5.0.0: - version "5.2.2" - resolved "https://registry.yarnpkg.com/hasha/-/hasha-5.2.2.tgz#a48477989b3b327aea3c04f53096d816d97522a1" - integrity sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ== - dependencies: - is-stream "^2.0.0" - type-fest "^0.8.0" - he@1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -3904,11 +3563,6 @@ hosted-git-info@^2.1.4: resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.9.tgz#dffc0bf9a21c02209090f2aa69429e1414daf3f9" integrity sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw== -html-escaper@^2.0.0: - version "2.0.2" - resolved "https://registry.yarnpkg.com/html-escaper/-/html-escaper-2.0.2.tgz#dfd60027da36a36dfcbe236262c00a5822681453" - integrity sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg== - html-tag@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/html-tag/-/html-tag-2.0.0.tgz#36c3bc8d816fd30b570d5764a497a641640c2fed" @@ -3935,11 +3589,6 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= -indent-string@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" - integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== - inflection@^1.12.0, inflection@^1.7.0: version "1.13.1" resolved "https://registry.yarnpkg.com/inflection/-/inflection-1.13.1.tgz#c5cadd80888a90cf84c2e96e340d7edc85d5f0cb" @@ -4312,11 +3961,6 @@ is-stream@^1.0.1: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= -is-stream@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" - integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== - is-true@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/is-true/-/is-true-0.1.1.tgz#db863da8968928bb86a4da4a9c6e6564b573dbcd" @@ -4324,11 +3968,6 @@ is-true@^0.1.0: dependencies: isobject "^2.0.0" -is-typedarray@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" - integrity sha1-5HnICFjfDBsR3dppQPlgEfzaSpo= - 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" @@ -4471,67 +4110,6 @@ isobject@^3.0.0, isobject@^3.0.1: resolved "https://registry.yarnpkg.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df" integrity sha1-TkMekrEalzFjaqH5yNHMvP2reN8= -istanbul-lib-coverage@^3.0.0, istanbul-lib-coverage@^3.0.0-alpha.1: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" - integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== - -istanbul-lib-hook@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz#8f84c9434888cc6b1d0a9d7092a76d239ebf0cc6" - integrity sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ== - dependencies: - append-transform "^2.0.0" - -istanbul-lib-instrument@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" - integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== - dependencies: - "@babel/core" "^7.7.5" - "@istanbuljs/schema" "^0.1.2" - istanbul-lib-coverage "^3.0.0" - semver "^6.3.0" - -istanbul-lib-processinfo@^2.0.2: - version "2.0.2" - resolved "https://registry.yarnpkg.com/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.2.tgz#e1426514662244b2f25df728e8fd1ba35fe53b9c" - integrity sha512-kOwpa7z9hme+IBPZMzQ5vdQj8srYgAtaRqeI48NGmAQ+/5yKiHLV0QbYqQpxsdEF0+w14SoB8YbnHKcXE2KnYw== - dependencies: - archy "^1.0.0" - cross-spawn "^7.0.0" - istanbul-lib-coverage "^3.0.0-alpha.1" - make-dir "^3.0.0" - p-map "^3.0.0" - rimraf "^3.0.0" - uuid "^3.3.3" - -istanbul-lib-report@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz#7518fe52ea44de372f460a76b5ecda9ffb73d8a6" - integrity sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw== - dependencies: - istanbul-lib-coverage "^3.0.0" - make-dir "^3.0.0" - supports-color "^7.1.0" - -istanbul-lib-source-maps@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz#75743ce6d96bb86dc7ee4352cf6366a23f0b1ad9" - integrity sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg== - dependencies: - debug "^4.1.1" - istanbul-lib-coverage "^3.0.0" - source-map "^0.6.1" - -istanbul-reports@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-3.0.2.tgz#d593210e5000683750cb09fc0644e4b6e27fd53b" - integrity sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw== - dependencies: - html-escaper "^2.0.0" - istanbul-lib-report "^3.0.0" - 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" @@ -4582,11 +4160,6 @@ js-yaml@^4.1.0: dependencies: argparse "^2.0.1" -jsesc@^2.5.1: - version "2.5.2" - resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" - integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== - 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" @@ -4602,13 +4175,6 @@ json-stable-stringify-without-jsonify@^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= -json5@^2.1.2: - version "2.2.0" - resolved "https://registry.yarnpkg.com/json5/-/json5-2.2.0.tgz#2dfefe720c6ba525d9ebd909950f0515316c89a3" - integrity sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA== - dependencies: - minimist "^1.2.5" - just-debounce@^1.0.0: version "1.1.0" resolved "https://registry.yarnpkg.com/just-debounce/-/just-debounce-1.1.0.tgz#2f81a3ad4121a76bc7cb45dbf704c0d76a8e5ddf" @@ -4867,13 +4433,6 @@ loader-cache@^0.4.0: event-stream "^3.1.7" kind-of "^0.1.2" -locate-path@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" - integrity sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g== - dependencies: - p-locate "^4.1.0" - locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -5007,11 +4566,6 @@ lodash.escape@^3.0.0: dependencies: lodash._root "^3.0.0" -lodash.flattendeep@^4.4.0: - version "4.4.0" - resolved "https://registry.yarnpkg.com/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz#fb030917f86a3134e5bc9bec0d69e0013ddfedb2" - integrity sha1-+wMJF/hqMTTlvJvsDWngAT3f7bI= - lodash.get@^4.4.2: version "4.4.2" resolved "https://registry.yarnpkg.com/lodash.get/-/lodash.get-4.4.2.tgz#2d177f652fa31e939b4438d5341499dfa3825e99" @@ -5220,13 +4774,6 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" -make-dir@^3.0.0, make-dir@^3.0.2: - version "3.1.0" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" - integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== - dependencies: - semver "^6.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" @@ -5744,18 +5291,6 @@ no-case@^2.2.0: dependencies: lower-case "^1.1.1" -node-preload@^0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/node-preload/-/node-preload-0.2.1.tgz#c03043bb327f417a18fee7ab7ee57b408a144301" - integrity sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ== - dependencies: - process-on-spawn "^1.0.0" - -node-releases@^1.1.71: - version "1.1.73" - resolved "https://registry.yarnpkg.com/node-releases/-/node-releases-1.1.73.tgz#dd4e81ddd5277ff846b80b52bb40c49edf7a7b20" - integrity sha512-uW7fodD6pyW2FZNZnp/Z3hvWKeEW1Y8R1+1CnErE8cXFXzl5blBOoVB41CvMer6P6Q0S5FXDwcHgFd1Wj0U9zg== - noncharacters@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/noncharacters/-/noncharacters-1.1.0.tgz#af33df30fd50ed3c53cd202258f25ada90b540d2" @@ -5826,39 +5361,6 @@ number-is-nan@^1.0.0: resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= -nyc@^15.1.0: - version "15.1.0" - resolved "https://registry.yarnpkg.com/nyc/-/nyc-15.1.0.tgz#1335dae12ddc87b6e249d5a1994ca4bdaea75f02" - integrity sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A== - dependencies: - "@istanbuljs/load-nyc-config" "^1.0.0" - "@istanbuljs/schema" "^0.1.2" - caching-transform "^4.0.0" - convert-source-map "^1.7.0" - decamelize "^1.2.0" - find-cache-dir "^3.2.0" - find-up "^4.1.0" - foreground-child "^2.0.0" - get-package-type "^0.1.0" - glob "^7.1.6" - istanbul-lib-coverage "^3.0.0" - istanbul-lib-hook "^3.0.0" - istanbul-lib-instrument "^4.0.0" - istanbul-lib-processinfo "^2.0.2" - istanbul-lib-report "^3.0.0" - istanbul-lib-source-maps "^4.0.0" - istanbul-reports "^3.0.2" - make-dir "^3.0.0" - node-preload "^0.2.1" - p-map "^3.0.0" - process-on-spawn "^1.0.0" - resolve-from "^5.0.0" - rimraf "^3.0.0" - signal-exit "^3.0.2" - spawn-wrap "^2.0.0" - test-exclude "^6.0.0" - yargs "^15.0.2" - object-assign@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-2.1.1.tgz#43c36e5d569ff8e4816c4efa8be02d26967c18aa" @@ -6095,13 +5597,6 @@ os-locale@^1.4.0: dependencies: lcid "^1.0.0" -p-limit@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.3.0.tgz#3dd33c647a214fdfffd835933eb086da0dc21db1" - integrity sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w== - dependencies: - p-try "^2.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" @@ -6109,13 +5604,6 @@ p-limit@^3.0.2: dependencies: yocto-queue "^0.1.0" -p-locate@^4.1.0: - version "4.1.0" - resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" - integrity sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A== - dependencies: - p-limit "^2.2.0" - p-locate@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" @@ -6123,28 +5611,6 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" -p-map@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/p-map/-/p-map-3.0.0.tgz#d704d9af8a2ba684e2600d9a215983d4141a979d" - integrity sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ== - dependencies: - aggregate-error "^3.0.0" - -p-try@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" - integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== - -package-hash@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/package-hash/-/package-hash-4.0.0.tgz#3537f654665ec3cc38827387fc904c163c54f506" - integrity sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ== - dependencies: - graceful-fs "^4.1.15" - hasha "^5.0.0" - lodash.flattendeep "^4.4.0" - release-zalgo "^1.0.0" - pad-left@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/pad-left/-/pad-left-1.0.2.tgz#19e5735ea98395a26cedc6ab926ead10f3100d4c" @@ -6433,13 +5899,6 @@ pinkie@^2.0.0: resolved "https://registry.yarnpkg.com/pinkie/-/pinkie-2.0.4.tgz#72556b80cfa0d48a974e80e77248e80ed4f7f870" integrity sha1-clVrgM+g1IqXToDnckjoDtT3+HA= -pkg-dir@^4.1.0: - version "4.2.0" - resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" - integrity sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ== - dependencies: - find-up "^4.0.0" - pkg-homepage@^0.1.1: version "0.1.1" resolved "https://registry.yarnpkg.com/pkg-homepage/-/pkg-homepage-0.1.1.tgz#cc8c1e0e6b5000afe8942077946b2761ca526c74" @@ -6514,13 +5973,6 @@ process-nextick-args@^2.0.0, process-nextick-args@~2.0.0: resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== -process-on-spawn@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/process-on-spawn/-/process-on-spawn-1.0.0.tgz#95b05a23073d30a17acfdc92a440efd2baefdc93" - integrity sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg== - dependencies: - fromentries "^1.2.0" - progress@^2.0.0: version "2.0.3" resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" @@ -6752,13 +6204,6 @@ relative@^3.0.0, relative@^3.0.1, relative@^3.0.2: dependencies: isobject "^2.0.0" -release-zalgo@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" - integrity sha1-CXALflB0Mpc5Mw5TXFqQ+2eFFzA= - dependencies: - es6-error "^4.0.1" - 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" @@ -6858,11 +6303,6 @@ require-main-filename@^1.0.1: resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= -require-main-filename@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" - integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== - reserved@^0.1.0: version "0.1.2" resolved "https://registry.yarnpkg.com/reserved/-/reserved-0.1.2.tgz#707b1246a3269f755da7cfcf9af6f4983bef105c" @@ -6889,11 +6329,6 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - resolve-glob@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/resolve-glob/-/resolve-glob-1.0.0.tgz#c6142b0f850367607aae27506be7985d3a8c6931" @@ -6978,7 +6413,7 @@ rimraf@^2.4.2, rimraf@^2.6.1: dependencies: glob "^7.1.3" -rimraf@^3.0.0, rimraf@^3.0.2: +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== @@ -7034,11 +6469,6 @@ semver-greatest-satisfied-range@^1.1.0: resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== -semver@^6.0.0, semver@^6.3.0: - version "6.3.0" - resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" - integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== - semver@^7.2.1: version "7.3.5" resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.5.tgz#0b621c879348d8998e4b0e4be94b3f12e6018ef7" @@ -7287,7 +6717,7 @@ source-map-url@^0.4.0: resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56" integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw== -source-map@^0.5.0, source-map@^0.5.6: +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= @@ -7302,18 +6732,6 @@ sparkles@^1.0.0: resolved "https://registry.yarnpkg.com/sparkles/-/sparkles-1.0.1.tgz#008db65edce6c50eec0c5e228e1945061dd0437c" integrity sha512-dSO0DDYUahUt/0/pD/Is3VIm5TGJjludZ0HVymmhYF6eNA53PVLhnUk0znSYbH8IYBuJdCE+1luR22jNLMaQdw== -spawn-wrap@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-2.0.0.tgz#103685b8b8f9b79771318827aa78650a610d457e" - integrity sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg== - dependencies: - foreground-child "^2.0.0" - is-windows "^1.0.2" - make-dir "^3.0.0" - rimraf "^3.0.0" - signal-exit "^3.0.2" - which "^2.0.1" - spdx-correct@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" @@ -7513,11 +6931,6 @@ strip-bom@^2.0.0: dependencies: is-utf8 "^0.2.0" -strip-bom@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" - integrity sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w== - strip-color@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/strip-color/-/strip-color-0.1.0.tgz#106f65d3d3e6a2d9401cac0eb0ce8b8a702b4f7b" @@ -7794,15 +7207,6 @@ templates@^1.2.9: vinyl-item "^1.0.0" vinyl-view "^2.0.0" -test-exclude@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-6.0.0.tgz#04a8698661d805ea6fa293b6cb9e63ac044ef15e" - integrity sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w== - dependencies: - "@istanbuljs/schema" "^0.1.2" - glob "^7.1.4" - minimatch "^3.0.4" - text-table@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" @@ -7882,11 +7286,6 @@ to-arg@^1.1.0: dashify "^0.1.0" is-primitive "^2.0.0" -to-fast-properties@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/to-fast-properties/-/to-fast-properties-2.0.0.tgz#dc5e698cbd079265bc73e0377681a4e4e83f616e" - integrity sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4= - to-flags@^0.1.0: version "0.1.0" resolved "https://registry.yarnpkg.com/to-flags/-/to-flags-0.1.0.tgz#db754fa637bb7fedd4dd9465790d0d561906d599" @@ -7996,11 +7395,6 @@ type-fest@^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-fest@^0.8.0: - version "0.8.1" - resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" - integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== - type@^1.0.1: version "1.2.0" resolved "https://registry.yarnpkg.com/type/-/type-1.2.0.tgz#848dd7698dafa3e54a6c479e759c4bc3f18847a0" @@ -8011,13 +7405,6 @@ type@^2.0.0: resolved "https://registry.yarnpkg.com/type/-/type-2.5.0.tgz#0a2e78c2e77907b252abe5f298c1b01c63f0db3d" integrity sha512-180WMDQaIMm3+7hGXWf12GtdniDEy7nYcyFMKJn/eZz/6tSLXrUN9V0wKSbMjej0I1WHWbpREDEKHtqPQa9NNw== -typedarray-to-buffer@^3.1.5: - version "3.1.5" - resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" - integrity sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q== - dependencies: - is-typedarray "^1.0.0" - typedarray@^0.0.6: version "0.0.6" resolved "https://registry.yarnpkg.com/typedarray/-/typedarray-0.0.6.tgz#867ac74e3864187b1d3d47d996a78ec5c8830777" @@ -8201,11 +7588,6 @@ utils-merge@^1.0.0: resolved "https://registry.yarnpkg.com/utils-merge/-/utils-merge-1.0.1.tgz#9f95710f50a267947b2ccc124741c1028427e713" integrity sha1-n5VxD1CiZ5R7LMwSR0HBAoQn5xM= -uuid@^3.3.3: - version "3.4.0" - resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" - integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== - uuid@^9.0.1: version "9.0.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-9.0.1.tgz#e188d4c8853cc722220392c424cd637f32293f30" @@ -8589,11 +7971,6 @@ which-module@^1.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= -which-module@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" - integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= - which@2.0.2, which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -8638,15 +8015,6 @@ wrap-ansi@^2.0.0: string-width "^1.0.1" strip-ansi "^3.0.1" -wrap-ansi@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-6.2.0.tgz#e9393ba07102e6c91a3b221478f0257cd2856e53" - integrity sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA== - dependencies: - ansi-styles "^4.0.0" - string-width "^4.1.0" - strip-ansi "^6.0.0" - wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" @@ -8661,16 +8029,6 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= -write-file-atomic@^3.0.0: - version "3.0.3" - resolved "https://registry.yarnpkg.com/write-file-atomic/-/write-file-atomic-3.0.3.tgz#56bd5c5a5c70481cd19c571bd39ab965a5de56e8" - integrity sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q== - dependencies: - imurmurhash "^0.1.4" - is-typedarray "^1.0.0" - signal-exit "^3.0.2" - typedarray-to-buffer "^3.1.5" - write-json@^0.2.2: version "0.2.2" resolved "https://registry.yarnpkg.com/write-json/-/write-json-0.2.2.tgz#fa4e1529e9e763a4f92f07d9841317e3d248daf3" @@ -8695,11 +8053,6 @@ y18n@^3.2.1: resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.2.tgz#85c901bd6470ce71fc4bb723ad209b70f7f28696" integrity sha512-uGZHXkHnhF0XeeAPgnKfPv1bgKAYyVvmNL1xlKsPYZPaIHxGti2hHqvOCQv71XMsLxu1QjergkqogUnms5D3YQ== -y18n@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.3.tgz#b5f259c82cd6e336921efd7bfd8bf560de9eeedf" - integrity sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ== - y18n@^5.0.5: version "5.0.8" resolved "https://registry.yarnpkg.com/y18n/-/y18n-5.0.8.tgz#7f4934d0f7ca8c56f95314939ddcd2dd91ce1d55" @@ -8715,14 +8068,6 @@ yargs-parser@20.2.4: resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== -yargs-parser@^18.1.2: - version "18.1.3" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" - integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== - dependencies: - camelcase "^5.0.0" - decamelize "^1.2.0" - yargs-parser@^20.2.2: version "20.2.9" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.9.tgz#2eb7dc3b0289718fc295f362753845c41a0c94ee" @@ -8759,23 +8104,6 @@ yargs@16.2.0: y18n "^5.0.5" yargs-parser "^20.2.2" -yargs@^15.0.2: - version "15.4.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" - integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== - dependencies: - cliui "^6.0.0" - decamelize "^1.2.0" - find-up "^4.1.0" - get-caller-file "^2.0.1" - require-directory "^2.1.1" - require-main-filename "^2.0.0" - set-blocking "^2.0.0" - string-width "^4.2.0" - which-module "^2.0.0" - y18n "^4.0.0" - yargs-parser "^18.1.2" - yargs@^7.1.0: version "7.1.2" resolved "https://registry.yarnpkg.com/yargs/-/yargs-7.1.2.tgz#63a0a5d42143879fdbb30370741374e0641d55db" From f0c1ec62c7f16b750cf8d5e35be3daea4d6eda70 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 14:13:19 +0100 Subject: [PATCH 111/133] Fix ifNth description --- lib/comparison.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/comparison.js b/lib/comparison.js index 3acc3ed0..55b42391 100644 --- a/lib/comparison.js +++ b/lib/comparison.js @@ -331,7 +331,7 @@ helpers.ifEven = function(num, 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} From ca27ff4125a9b046c0fe53666d9c82895bc923f4 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 14:22:31 +0100 Subject: [PATCH 112/133] Fix and add tests --- lib/string.js | 5 +++-- test/string.js | 22 ++++++++++++++++++++++ 2 files changed, 25 insertions(+), 2 deletions(-) diff --git a/lib/string.js b/lib/string.js index 6b1064ce..c4836322 100644 --- a/lib/string.js +++ b/lib/string.js @@ -748,10 +748,11 @@ helpers.truncateWords = function(str, count, 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; } diff --git a/test/string.js b/test/string.js index c18388d2..8380c3c2 100644 --- a/test/string.js +++ b/test/string.js @@ -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}}'); From 9f5f1aac1e8e48739a173c62c8783b15fcd86c6b Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 16:10:22 +0100 Subject: [PATCH 113/133] Fix example --- lib/array.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/array.js b/lib/array.js index 1b9de1d0..bec404f3 100644 --- a/lib/array.js +++ b/lib/array.js @@ -629,7 +629,7 @@ helpers.sort = function(array, options) { * @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'}] + * @example {{ sortBy [{'a': 'zzz'}, {'a': 'aaa'}] 'a' }} -> [{'a':'aaa'},{'a':'zzz'}] */ helpers.sortBy = function(array, prop, options) { From 064fe890db51bdc02461137739cb0bd16d600413 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 16:14:03 +0100 Subject: [PATCH 114/133] Expose only collection helpers --- index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.js b/index.js index 265c1a6e..e527003a 100644 --- a/index.js +++ b/index.js @@ -50,7 +50,7 @@ for (const key in lib) { var hbs = options.handlebars || options.hbs || require('handlebars'); module.exports.handlebars = hbs; hbs.registerHelper(group); - return hbs.helpers; + return group; }; } From 8db064f1cf4a9b07f967e49317aa1364de92f5a0 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 23 Jan 2024 17:25:36 +0100 Subject: [PATCH 115/133] v0.13.0 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index f6e6cb2b..d83464c2 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.12.2", + "version": "0.13.0", "homepage": "https://github.com/Budibase/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ @@ -179,4 +179,4 @@ } } } -} \ No newline at end of file +} From 554f12ea25945b18421b538d4cfba94b1f44a34f Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Fri, 26 Jan 2024 13:08:19 +0100 Subject: [PATCH 116/133] Add missing examples --- lib/array.js | 10 +++++----- lib/comparison.js | 4 ++-- lib/number.js | 2 +- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lib/array.js b/lib/array.js index bec404f3..8b90aeab 100644 --- a/lib/array.js +++ b/lib/array.js @@ -85,7 +85,7 @@ helpers.before = function(array, n) { * @return {String} * @block * @api public - * @example {{#eachIndex [1, 2, 3]}} {{item}} is {{index}} {{/eachIndex}} + * @example {{#eachIndex [1, 2, 3]}} {{item}} is {{index}} {{/eachIndex}} -> ' 1 is 0 2 is 1 3 is 2 ' */ helpers.eachIndex = function(array, options) { @@ -115,7 +115,7 @@ helpers.eachIndex = function(array, options) { * @return {String} * @block * @api public - * @example {{#filter [1, 2, 3] 2}}2 Found{{else}}2 not found{{/filter}} + * @example {{#filter [1, 2, 3] 2}}2 Found{{else}}2 not found{{/filter}} -> 2 Found */ helpers.filter = function(array, value, options) { @@ -206,7 +206,7 @@ helpers.first = function(array, n) { * @return {String} * @block * @api public - * @example {{#forEach [{ 'name': 'John' }] }} {{ name }} {{/forEach}} + * @example {{#forEach [{ 'name': 'John' }] }} {{ name }} {{/forEach}} -> ' John ' */ helpers.forEach = function(array, options) { @@ -670,7 +670,7 @@ helpers.sortBy = function(array, prop, options) { * @return {Array} * @block * @api public - * @example {{ withAfter [1, 2, 3] 1 }} {{this}} {{/withAfter}} + * @example {{#withAfter [1, 2, 3] 1 }} {{this}} {{/withAfter}} -> ' 2 3 ' */ helpers.withAfter = function(array, idx, options) { @@ -705,7 +705,7 @@ helpers.withAfter = function(array, idx, options) { * @return {Array} * @block * @api public - * @example {{ withBefore [1, 2, 3] 2 }} {{this}} {{/withBefore}} + * @example {{#withBefore [1, 2, 3] 2 }} {{this}} {{/withBefore}} -> ' 1 ' */ helpers.withBefore = function(array, idx, options) { diff --git a/lib/comparison.js b/lib/comparison.js index 55b42391..3b4a0c17 100644 --- a/lib/comparison.js +++ b/lib/comparison.js @@ -24,7 +24,7 @@ var helpers = module.exports; * @return {String} * @block * @api public - * @example {{#and great magnificent}}both{{else}}no{{/and}} + * @example {{#and great magnificent}}both{{else}}no{{/and}} -> no */ helpers.and = function() { @@ -125,7 +125,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}} + * @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) { diff --git a/lib/number.js b/lib/number.js index a0c5391b..cec18b5b 100644 --- a/lib/number.js +++ b/lib/number.js @@ -195,7 +195,7 @@ helpers.toInt = function(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}} + * @example {{toPrecision '1.1234' 2}} -> 1.1 */ helpers.toPrecision = function(number, precision) { From 0f93d9a42c892b45a9b093472991f40fc6b10193 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Fri, 26 Jan 2024 15:12:21 +0100 Subject: [PATCH 117/133] Fix wrong attributes --- lib/array.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/array.js b/lib/array.js index 8b90aeab..573e13d5 100644 --- a/lib/array.js +++ b/lib/array.js @@ -203,6 +203,7 @@ helpers.first = function(array, n) { * ``` * @source * @param {Array} `array` + * @param {Object} `options` * @return {String} * @block * @api public @@ -352,7 +353,6 @@ helpers.join = function(array, separator) { * * @param {Array|String} `value` * @param {Number} `length` - * @param {Object} `options` * @return {String} * @block * @api public @@ -922,6 +922,7 @@ helpers.withSort = function(array, prop, options) { * @param {Array} `array` * @param {Object} `options` * @return {Array} + * @block * @api public * @example {{#each (unique ['a', 'a', 'c', 'b', 'e', 'e']) }}{{.}}{{/each}} -> acbe */ From e658a31ee5fa3e56a5002bb073c597814b65d803 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 30 Jan 2024 15:46:55 +0100 Subject: [PATCH 118/133] Remove block from array.itemAt --- lib/array.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/array.js b/lib/array.js index 573e13d5..988056a0 100644 --- a/lib/array.js +++ b/lib/array.js @@ -297,7 +297,6 @@ helpers.isArray = function(value) { * @param {Array} `array` * @param {Number} `idx` * @return {any} `value` - * @block * @api public * @example {{itemAt [1, 2, 3] 1}} -> 2 */ From cd8d0d8f4b587ca9849ac4d8ad47c7a4e2a73366 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 30 Jan 2024 15:53:14 +0100 Subject: [PATCH 119/133] Add @inline decorators --- lib/array.js | 1 + lib/comparison.js | 1 + lib/string.js | 1 + 3 files changed, 3 insertions(+) diff --git a/lib/array.js b/lib/array.js index 988056a0..1a47f16b 100644 --- a/lib/array.js +++ b/lib/array.js @@ -354,6 +354,7 @@ helpers.join = function(array, separator) { * @param {Number} `length` * @return {String} * @block + * @inline * @api public * @example {{equalsLength [1, 2, 3] 3}} -> true */ diff --git a/lib/comparison.js b/lib/comparison.js index 3b4a0c17..60f0a0e5 100644 --- a/lib/comparison.js +++ b/lib/comparison.js @@ -54,6 +54,7 @@ helpers.and = function() { * @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 */ diff --git a/lib/string.js b/lib/string.js index c4836322..70537b9f 100644 --- a/lib/string.js +++ b/lib/string.js @@ -790,6 +790,7 @@ helpers.upcase = function() { * @param {Object} `options` Handlebars options object * @return {String} * @block + * @inline * @api public * @example {{uppercase 'aBcDef'}} -> ABCDEF */ From fab2b5bba59b58394a5c57dbc8d3f25bb801b7af Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Tue, 30 Jan 2024 17:07:20 +0100 Subject: [PATCH 120/133] v0.13.1 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d83464c2..259c47cd 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.13.0", + "version": "0.13.1", "homepage": "https://github.com/Budibase/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ From 10250c94df48b0c9f636f3be8f10e85525c3b853 Mon Sep 17 00:00:00 2001 From: mikesealey Date: Thu, 4 Jul 2024 13:07:14 +0100 Subject: [PATCH 121/133] adds loremIpsum function plus tests --- lib/lorem.js | 3 +++ lib/string.js | 27 +++++++++++++++++++++++++++ test/string.js | 45 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+) create mode 100644 lib/lorem.js diff --git a/lib/lorem.js b/lib/lorem.js new file mode 100644 index 00000000..b2d18702 --- /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; \ No newline at end of file diff --git a/lib/string.js b/lib/string.js index 70537b9f..c3da3273 100644 --- a/lib/string.js +++ b/lib/string.js @@ -3,6 +3,7 @@ var util = require('handlebars-utils'); var utils = require('./utils'); var helpers = module.exports; +let lorem = require('./lorem.js') /** * Append the specified `suffix` to the given string. @@ -802,3 +803,29 @@ helpers.uppercase = function(str) { 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` The string to uppercase + * @return {String} + * @block + * @inline + * @api public + * @example {{lorem 11}} -> Lorem Ipsum + */ + + +helpers.lorem = function(num) { + const maxLoremLength = 100_000 + // 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/test/string.js b/test/string.js index 8380c3c2..0758548e 100644 --- a/test/string.js +++ b/test/string.js @@ -397,5 +397,50 @@ describe('string', function() { assert.equal(fn(), 'BENDER SHOULD NOT BE ALLOWED ON TV'); }); }); + + describe.only('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) + }) + }) }); From 30a6b6adb74d7ad894a88ec5d7ad907b109f7410 Mon Sep 17 00:00:00 2001 From: mikesealey Date: Thu, 4 Jul 2024 13:18:46 +0100 Subject: [PATCH 122/133] adds function to write Lorem Ipsum inc tests --- test/string.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/string.js b/test/string.js index 0758548e..92055276 100644 --- a/test/string.js +++ b/test/string.js @@ -398,7 +398,7 @@ describe('string', function() { }); }); - describe.only('lorem', function() { + describe('lorem', function() { // Bad parameters it('Should return "Lorem ipsum" only, if passed no parameters', function() { var fn = hbs.compile('{{ lorem }}'); From 6e045f3b02692879b4f8806b717ca92703fb5d9c Mon Sep 17 00:00:00 2001 From: mikesealey Date: Thu, 4 Jul 2024 14:14:02 +0100 Subject: [PATCH 123/133] removes unused "maxLoremLength" variable --- lib/string.js | 1 - 1 file changed, 1 deletion(-) diff --git a/lib/string.js b/lib/string.js index c3da3273..5ff57c98 100644 --- a/lib/string.js +++ b/lib/string.js @@ -821,7 +821,6 @@ helpers.uppercase = function(str) { helpers.lorem = function(num) { - const maxLoremLength = 100_000 // Sad Path - Not a number, or not greater than 1, or not truthy if (isNaN(num) || num < 1 || !num ) { num = 11 From 59bf9849024506bb0bd6567b047cdc205c93aed5 Mon Sep 17 00:00:00 2001 From: mikesealey Date: Thu, 4 Jul 2024 15:19:00 +0100 Subject: [PATCH 124/133] fixes casing in example --- lib/string.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/string.js b/lib/string.js index 5ff57c98..d1bbc608 100644 --- a/lib/string.js +++ b/lib/string.js @@ -816,7 +816,7 @@ helpers.uppercase = function(str) { * @block * @inline * @api public - * @example {{lorem 11}} -> Lorem Ipsum + * @example {{lorem 11}} -> Lorem ipsum */ From 8bfc34a0c688a4aede33b4607332e34cd559dc78 Mon Sep 17 00:00:00 2001 From: mikesealey Date: Thu, 4 Jul 2024 15:31:04 +0100 Subject: [PATCH 125/133] prettier --- lib/lorem.js | 4 ++-- lib/string.js | 9 ++++----- package.json | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/lib/lorem.js b/lib/lorem.js index b2d18702..12f68b0b 100644 --- a/lib/lorem.js +++ b/lib/lorem.js @@ -1,3 +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."; +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; \ No newline at end of file +module.exports = lorem; diff --git a/lib/string.js b/lib/string.js index d1bbc608..6bf9374d 100644 --- a/lib/string.js +++ b/lib/string.js @@ -3,7 +3,7 @@ var util = require('handlebars-utils'); var utils = require('./utils'); var helpers = module.exports; -let lorem = require('./lorem.js') +let lorem = require('./lorem.js'); /** * Append the specified `suffix` to the given string. @@ -819,12 +819,11 @@ helpers.uppercase = function(str) { * @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 + if (isNaN(num) || num < 1 || !num) { + num = 11; } - return lorem.substring(0, num) + return lorem.substring(0, num); }; diff --git a/package.json b/package.json index 259c47cd..ed28b634 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "node": ">=10.12.0" }, "scripts": { - "lint": "eslint *.js lib/**/*.js test/**/*.js", + "lint": "eslint *.js lib/*.js lib/**/*.js test/**/*.js", "test": "mocha", "update:readmemd": "verb" }, From 83afe463980b22670dabc78319082708284547d9 Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Thu, 4 Jul 2024 16:42:02 +0200 Subject: [PATCH 126/133] Lint --- package.json | 4 ++-- test/string.js | 44 ++++++++++++++++++++++---------------------- 2 files changed, 24 insertions(+), 24 deletions(-) diff --git a/package.json b/package.json index ed28b634..b9798df8 100644 --- a/package.json +++ b/package.json @@ -69,7 +69,7 @@ "node": ">=10.12.0" }, "scripts": { - "lint": "eslint *.js lib/*.js lib/**/*.js test/**/*.js", + "lint": "eslint *.js lib/*.js lib/**/*.js lib/*.js test/*.js test/*/*.js", "test": "mocha", "update:readmemd": "verb" }, @@ -179,4 +179,4 @@ } } } -} +} \ No newline at end of file diff --git a/test/string.js b/test/string.js index 92055276..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() { @@ -402,45 +402,45 @@ describe('string', function() { // Bad parameters it('Should return "Lorem ipsum" only, if passed no parameters', function() { var fn = hbs.compile('{{ lorem }}'); - assert.equal(fn(), "Lorem ipsum") - }) + 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") - }), + 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") - }), + 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") - }) + 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") - }) + 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") - }) + 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") - }) + 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") - }) + 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") - }) + 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) - }) - }) + assert.equal(fn().length, 8032); + }); + }); }); From 3f1168525de38c2593217095681689a274434977 Mon Sep 17 00:00:00 2001 From: mike12345567 Date: Thu, 4 Jul 2024 15:46:45 +0100 Subject: [PATCH 127/133] v0.13.2 --- package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index b9798df8..880c159f 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.13.1", + "version": "0.13.2", "homepage": "https://github.com/Budibase/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ @@ -179,4 +179,4 @@ } } } -} \ No newline at end of file +} From ebe5cb61d82fdd7e5d8c8fe61c402751c24d9399 Mon Sep 17 00:00:00 2001 From: Sam Rose Date: Fri, 4 Oct 2024 17:55:21 +0100 Subject: [PATCH 128/133] Move to using non-mutating variants of sort and reverse. --- lib/array.js | 18 ++++++++---------- test/array.js | 12 ++++++++++++ 2 files changed, 20 insertions(+), 10 deletions(-) diff --git a/lib/array.js b/lib/array.js index 1a47f16b..1050297e 100644 --- a/lib/array.js +++ b/lib/array.js @@ -535,13 +535,11 @@ helpers.pluck = function(array, prop) { * @api public * @example {{reverse [1, 2, 3]}} -> [3, 2, 1] */ - helpers.reverse = function(array) { if (util.isUndefined(array)) return ''; array = util.result(array); if (Array.isArray(array)) { - array.reverse(); - return array; + return [...array].reverse(); } if (array && typeof array === 'string') { return array.split('').reverse().join(''); @@ -607,9 +605,9 @@ helpers.sort = function(array, options) { array = util.result(array); if (Array.isArray(array)) { if (getValue(options, 'hash.reverse')) { - return array.sort().reverse(); + return [...array].sort().reverse(); } - return array.sort(); + return [...array].sort(); } return ''; }; @@ -641,14 +639,14 @@ helpers.sortBy = function(array, prop, options) { args.pop(); if (!util.isString(prop) && typeof prop !== 'function') { - return array.sort(); + return [...array].sort(); } if (typeof prop === 'function') { - return array.sort(prop); + return [...array].sort(prop); } - return array.sort((a, b) => (a[prop] > b[prop] ? 1 : -1)); + return [...array].sort((a, b) => (a[prop] > b[prop] ? 1 : -1)); } return ''; }; @@ -879,7 +877,7 @@ helpers.withSort = function(array, prop, options) { if (util.isUndefined(prop)) { options = prop; - array = array.sort(); + array = [...array].sort(); if (getValue(options, 'hash.reverse')) { array = array.reverse(); } @@ -890,7 +888,7 @@ helpers.withSort = function(array, prop, options) { return result; } - array.sort(function(a, b) { + array = [...array].sort(function(a, b) { a = getValue(a, prop); b = getValue(b, prop); return a > b ? 1 : a < b ? -1 : 0; diff --git a/test/array.js b/test/array.js index b5ca626f..c7da5c30 100644 --- a/test/array.js +++ b/test/array.js @@ -338,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'); @@ -348,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() { From 8a67b448340fb4b1a89560e76b473ed88763d3d9 Mon Sep 17 00:00:00 2001 From: Martin McKeaveney Date: Fri, 4 Oct 2024 18:00:23 +0100 Subject: [PATCH 129/133] v0.14.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 880c159f..a4e8fb47 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "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.13.2", + "version": "0.14.0", "homepage": "https://github.com/Budibase/handlebars-helpers", "author": "Jon Schlinkert (https://github.com/jonschlinkert)", "contributors": [ From 993c07caca251c4430b8db6d28bd4324641d636b Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 2 Dec 2024 16:36:52 +0100 Subject: [PATCH 130/133] Update to mocha 9.x --- package.json | 4 +- yarn.lock | 184 +++++++++++++++++++++++++-------------------------- 2 files changed, 94 insertions(+), 94 deletions(-) diff --git a/package.json b/package.json index a4e8fb47..60389b85 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "is-valid-app": "^0.3.0", "js-yaml": "^4.1.0", "markdown-link": "^0.1.1", - "mocha": "^8.4.0", + "mocha": "^9.2.2", "rimraf": "^3.0.2", "sinon": "^17.0.1", "template-helpers": "^1.0.1", @@ -179,4 +179,4 @@ } } } -} +} \ No newline at end of file diff --git a/yarn.lock b/yarn.lock index 315ce653..b03fc4c5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -416,10 +416,10 @@ anymatch@^2.0.0: micromatch "^3.1.4" normalize-path "^2.1.1" -anymatch@~3.1.1: - version "3.1.2" - resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.2.tgz#c0557c096af32f106198f4f4e2a383537e378716" - integrity sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg== +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" @@ -1087,20 +1087,28 @@ chalk@^4.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chokidar@3.5.1: - version "3.5.1" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.1.tgz#ee9ce7bbebd2b79f49f304799d5468e31e14e68a" - integrity sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw== +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@3.5.3: + version "3.5.3" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" + integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== dependencies: - anymatch "~3.1.1" + anymatch "~3.1.2" braces "~3.0.2" - glob-parent "~5.1.0" + glob-parent "~5.1.2" is-binary-path "~2.1.0" is-glob "~4.0.1" normalize-path "~3.0.0" - readdirp "~3.5.0" + readdirp "~3.6.0" optionalDependencies: - fsevents "~2.3.1" + fsevents "~2.3.2" chokidar@^1.1.0: version "1.7.0" @@ -1562,10 +1570,10 @@ dateformat@^2.0.0: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" integrity sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI= -debug@4.3.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== +debug@4.3.3: + version "4.3.3" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" + integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== dependencies: ms "2.1.2" @@ -1590,6 +1598,13 @@ debug@^3.1.0: 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" + decamelize@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" @@ -2581,10 +2596,10 @@ fsevents@^1.0.0, fsevents@^1.2.7: bindings "^1.5.0" nan "^2.12.1" -fsevents@~2.3.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.2.tgz#8a526f78b8fdf4623b709e0b975c52c24c02fd1a" - integrity sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA== +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" @@ -2848,7 +2863,7 @@ glob-parent@^3.1.0: is-glob "^3.1.0" path-dirname "^1.0.0" -glob-parent@^5.1.2, glob-parent@~5.1.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== @@ -2919,10 +2934,10 @@ glob2base@^0.0.12: dependencies: find-index "^0.1.1" -glob@7.1.6: - version "7.1.6" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" - integrity sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA== +glob@7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" + integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -3795,11 +3810,6 @@ is-fullwidth-code-point@^1.0.0: dependencies: number-is-nan "^1.0.0" -is-fullwidth-code-point@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" - integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= - is-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" @@ -3982,6 +3992,11 @@ is-unc-path@^1.0.0: 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" @@ -4138,10 +4153,10 @@ js-yaml-lite@^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@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f" - integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q== +js-yaml@4.1.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" @@ -4153,13 +4168,6 @@ js-yaml@^3.10.0, js-yaml@^3.13.1, js-yaml@^3.8.1: 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" @@ -4666,12 +4674,13 @@ log-ok@^0.1.1: ansi-green "^0.1.1" success-symbol "^0.1.0" -log-symbols@4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" - integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== +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.0.0" + chalk "^4.1.0" + is-unicode-supported "^0.1.0" log-symbols@^1.0.2: version "1.0.2" @@ -5089,13 +5098,20 @@ min-request@^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, minimatch@^3.0.4: +"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@4.2.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" + integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== + 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" @@ -5151,33 +5167,32 @@ mkdirp@^0.5.0, mkdirp@^0.5.1: dependencies: minimist "^1.2.5" -mocha@^8.4.0: - version "8.4.0" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-8.4.0.tgz#677be88bf15980a3cae03a73e10a0fc3997f0cff" - integrity sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ== +mocha@^9.2.2: + version "9.2.2" + resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" + integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== dependencies: "@ungap/promise-all-settled" "1.1.2" ansi-colors "4.1.1" browser-stdout "1.3.1" - chokidar "3.5.1" - debug "4.3.1" + chokidar "3.5.3" + debug "4.3.3" diff "5.0.0" escape-string-regexp "4.0.0" find-up "5.0.0" - glob "7.1.6" + glob "7.2.0" growl "1.10.5" he "1.2.0" - js-yaml "4.0.0" - log-symbols "4.0.0" - minimatch "3.0.4" + js-yaml "4.1.0" + log-symbols "4.1.0" + minimatch "4.2.1" ms "2.1.3" - nanoid "3.1.20" - serialize-javascript "5.0.1" + nanoid "3.3.1" + serialize-javascript "6.0.0" strip-json-comments "3.1.1" supports-color "8.1.1" which "2.0.2" - wide-align "1.1.3" - workerpool "6.1.0" + workerpool "6.2.0" yargs "16.2.0" yargs-parser "20.2.4" yargs-unparser "2.0.0" @@ -5226,10 +5241,10 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== -nanoid@3.1.20: - version "3.1.20" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.20.tgz#badc263c6b1dcf14b71efaa85f6ab4c1d6cfc788" - integrity sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw== +nanoid@3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" + integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== nanomatch@^1.2.9: version "1.2.13" @@ -6098,10 +6113,10 @@ readdirp@^2.0.0, readdirp@^2.2.1: micromatch "^3.1.10" readable-stream "^2.0.2" -readdirp@~3.5.0: - version "3.5.0" - resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.5.0.tgz#9ba74c019b15d365278d2e91bb8c48d7b4d42c9e" - integrity sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ== +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" @@ -6476,10 +6491,10 @@ semver@^7.2.1: dependencies: lru-cache "^6.0.0" -serialize-javascript@5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-5.0.1.tgz#7886ec848049a462467a97d3d918ebb2aaf934f4" - integrity sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA== +serialize-javascript@6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" + integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== dependencies: randombytes "^2.1.0" @@ -6829,14 +6844,6 @@ string-width@^1.0.1, string-width@^1.0.2: is-fullwidth-code-point "^1.0.0" strip-ansi "^3.0.0" -"string-width@^1.0.2 || 2": - version "2.1.1" - resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" - integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== - dependencies: - is-fullwidth-code-point "^2.0.0" - strip-ansi "^4.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" @@ -7985,13 +7992,6 @@ which@^1.2.12, which@^1.2.14, which@^1.3.1: dependencies: isexe "^2.0.0" -wide-align@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" - integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== - dependencies: - string-width "^1.0.2 || 2" - 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" @@ -8002,10 +8002,10 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -workerpool@6.1.0: - version "6.1.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.1.0.tgz#a8e038b4c94569596852de7a8ea4228eefdeb37b" - integrity sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg== +workerpool@6.2.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" + integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== wrap-ansi@^2.0.0: version "2.1.0" From 0eed4b1d4e9e845154acf60a2509010146008f4f Mon Sep 17 00:00:00 2001 From: Adria Navarro Date: Mon, 2 Dec 2024 16:37:27 +0100 Subject: [PATCH 131/133] Update to mocha 10.x --- package.json | 2 +- yarn.lock | 301 ++++++++++++++++++++++++--------------------------- 2 files changed, 145 insertions(+), 158 deletions(-) diff --git a/package.json b/package.json index 60389b85..d772e7b9 100644 --- a/package.json +++ b/package.json @@ -98,7 +98,7 @@ "is-valid-app": "^0.3.0", "js-yaml": "^4.1.0", "markdown-link": "^0.1.1", - "mocha": "^9.2.2", + "mocha": "^10.8.2", "rimraf": "^3.0.2", "sinon": "^17.0.1", "template-helpers": "^1.0.1", diff --git a/yarn.lock b/yarn.lock index b03fc4c5..fa400c12 100644 --- a/yarn.lock +++ b/yarn.lock @@ -73,11 +73,6 @@ resolved "https://registry.yarnpkg.com/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz#5981a8db18b56ba38ef0efb7d995b12aa7b51918" integrity sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ== -"@ungap/promise-all-settled@1.1.2": - version "1.1.2" - resolved "https://registry.yarnpkg.com/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz#aa58042711d6e3275dd37dc597e5d31e8c290a44" - integrity sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q== - acorn-jsx@^5.3.1: version "5.3.1" resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" @@ -203,11 +198,6 @@ ansi-bold@^0.1.1: dependencies: ansi-wrap "0.1.0" -ansi-colors@4.1.1, 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@^0.2.0: version "0.2.0" resolved "https://registry.yarnpkg.com/ansi-colors/-/ansi-colors-0.2.0.tgz#72c31de2a0d9a2ccd0cac30cc9823eeb2f6434b5" @@ -248,6 +238,16 @@ ansi-colors@^1.0.1, ansi-colors@^1.1.0: 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" @@ -927,6 +927,13 @@ brace-expansion@^1.0.0, brace-expansion@^1.1.7: 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" @@ -959,7 +966,7 @@ braces@^3.0.2, braces@~3.0.2: dependencies: fill-range "^7.0.1" -browser-stdout@1.3.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== @@ -1095,21 +1102,6 @@ chalk@^4.1.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chokidar@3.5.3: - version "3.5.3" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.5.3.tgz#1cf37c8707b932bd1af1ae22c0432e2acd1903bd" - integrity sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw== - 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" - chokidar@^1.1.0: version "1.7.0" resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468" @@ -1145,6 +1137,21 @@ chokidar@^2.0.0: 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" @@ -1570,13 +1577,6 @@ dateformat@^2.0.0: resolved "https://registry.yarnpkg.com/dateformat/-/dateformat-2.2.0.tgz#4065e2013cf9fb916ddfd82efb506ad4c6769062" integrity sha1-QGXiATz5+5Ft39gu+1Bq1MZ2kGI= -debug@4.3.3: - version "4.3.3" - resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.3.tgz#04266e0b70a98d4462e6e288e38259213332b664" - integrity sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q== - dependencies: - ms "2.1.2" - debug@=3.1.0, debug@~3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/debug/-/debug-3.1.0.tgz#5bb5a0672628b64149566ba16819e61518c67261" @@ -1605,6 +1605,13 @@ debug@^4.0.1, debug@^4.1.1: 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" @@ -1743,11 +1750,6 @@ diacritics-map@^0.1.0: resolved "https://registry.yarnpkg.com/diacritics-map/-/diacritics-map-0.1.0.tgz#6dfc0ff9d01000a2edf2865371cac316e94977af" integrity sha1-bfwP+dAQAKLt8oZTccrDFulJd68= -diff@5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/diff/-/diff-5.0.0.tgz#7ed6ad76d859d030787ec35855f5b1daf31d852b" - integrity sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w== - diff@^2.0.2: version "2.2.3" resolved "https://registry.yarnpkg.com/diff/-/diff-2.2.3.tgz#60eafd0d28ee906e4e8ff0a52c1229521033bf99" @@ -1758,6 +1760,11 @@ diff@^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" @@ -1989,16 +1996,16 @@ escalade@^3.1.1: resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" integrity sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw== -escape-string-regexp@4.0.0, 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== - 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" @@ -2435,14 +2442,6 @@ find-pkg@^0.1.0, find-pkg@^0.1.2: dependencies: find-file-up "^0.1.2" -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" - find-up@^1.0.0: version "1.1.2" resolved "https://registry.yarnpkg.com/find-up/-/find-up-1.1.2.tgz#6b2e9822b1a2ce0a60ab64d610eccad53cb24d0f" @@ -2451,6 +2450,14 @@ find-up@^1.0.0: 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" @@ -2934,18 +2941,6 @@ glob2base@^0.0.12: dependencies: find-index "^0.1.1" -glob@7.2.0: - version "7.2.0" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.2.0.tgz#d15535af7732e02e948f4c41628bd910293f6023" - integrity sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q== - 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@^4.3.1: version "4.5.3" resolved "https://registry.yarnpkg.com/glob/-/glob-4.5.3.tgz#c6cb73d3226c1efef04de3c56d012f03377ee15f" @@ -2979,6 +2974,17 @@ glob@^7.0.5, glob@^7.1.1, glob@^7.1.2, glob@^7.1.3: 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" @@ -3125,11 +3131,6 @@ group-array@^0.3.1: split-string "^1.0.1" union-value "^1.0.1" -growl@1.10.5: - version "1.10.5" - resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" - integrity sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA== - gulp-cli@^2.2.0: version "2.3.0" resolved "https://registry.yarnpkg.com/gulp-cli/-/gulp-cli-2.3.0.tgz#ec0d380e29e52aa45e47977f0d32e18fd161122f" @@ -3382,7 +3383,7 @@ has@^1.0.3: dependencies: function-bind "^1.1.1" -he@1.2.0: +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== @@ -4153,13 +4154,6 @@ js-yaml-lite@^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@4.1.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" - 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" @@ -4168,6 +4162,13 @@ js-yaml@^3.10.0, js-yaml@^3.13.1, js-yaml@^3.8.1: 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" @@ -4674,14 +4675,6 @@ log-ok@^0.1.1: ansi-green "^0.1.1" success-symbol "^0.1.0" -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-symbols@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-1.0.2.tgz#376ff7b58ea3086a0f09facc74617eca501e1a18" @@ -4696,6 +4689,14 @@ log-symbols@^2.2.0: 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" @@ -5105,13 +5106,6 @@ min-request@^1.4.1: dependencies: brace-expansion "^1.1.7" -minimatch@4.2.1: - version "4.2.1" - resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-4.2.1.tgz#40d9d511a46bdc4e563c22c3080cde9c0d8299b4" - integrity sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g== - 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" @@ -5119,6 +5113,13 @@ minimatch@^2.0.1: 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" @@ -5167,35 +5168,31 @@ mkdirp@^0.5.0, mkdirp@^0.5.1: dependencies: minimist "^1.2.5" -mocha@^9.2.2: - version "9.2.2" - resolved "https://registry.yarnpkg.com/mocha/-/mocha-9.2.2.tgz#d70db46bdb93ca57402c809333e5a84977a88fb9" - integrity sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g== - dependencies: - "@ungap/promise-all-settled" "1.1.2" - ansi-colors "4.1.1" - browser-stdout "1.3.1" - chokidar "3.5.3" - debug "4.3.3" - diff "5.0.0" - escape-string-regexp "4.0.0" - find-up "5.0.0" - glob "7.2.0" - growl "1.10.5" - he "1.2.0" - js-yaml "4.1.0" - log-symbols "4.1.0" - minimatch "4.2.1" - ms "2.1.3" - nanoid "3.3.1" - serialize-javascript "6.0.0" - strip-json-comments "3.1.1" - supports-color "8.1.1" - which "2.0.2" - workerpool "6.2.0" - yargs "16.2.0" - yargs-parser "20.2.4" - yargs-unparser "2.0.0" +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" @@ -5212,7 +5209,7 @@ ms@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.3, ms@^2.1.1: +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== @@ -5241,11 +5238,6 @@ nan@^2.12.1: resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.2.tgz#f5376400695168f4cc694ac9393d0c9585eeea19" integrity sha512-M2ufzIiINKCuDfBSAUr1vWQ+vuVcA9kqx8JJUsbQi6yf1uGRyb7HfpdfUr5qLXf3B/t8dPvcjhKMmlfnP47EzQ== -nanoid@3.3.1: - version "3.3.1" - resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.3.1.tgz#6347a18cac88af88f58af0b3594b723d5e99bb35" - integrity sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw== - nanomatch@^1.2.9: version "1.2.13" resolved "https://registry.yarnpkg.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119" @@ -6491,10 +6483,10 @@ semver@^7.2.1: dependencies: lru-cache "^6.0.0" -serialize-javascript@6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-6.0.0.tgz#efae5d88f45d7924141da8b5c3a7a7e663fefeb8" - integrity sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag== +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" @@ -6950,7 +6942,7 @@ strip-indent@^1.0.1: dependencies: get-stdin "^4.0.1" -strip-json-comments@3.1.1, strip-json-comments@^3.1.0, strip-json-comments@^3.1.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== @@ -6965,13 +6957,6 @@ success-symbol@^0.1.0: resolved "https://registry.yarnpkg.com/success-symbol/-/success-symbol-0.1.0.tgz#24022e486f3bf1cdca094283b769c472d3b72897" integrity sha1-JAIuSG878c3KCUKDt2nEctO3KJc= -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" - supports-color@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7" @@ -6991,6 +6976,13 @@ supports-color@^7.1.0, supports-color@^7.2.0: 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" @@ -7978,13 +7970,6 @@ which-module@^1.0.0: resolved "https://registry.yarnpkg.com/which-module/-/which-module-1.0.0.tgz#bba63ca861948994ff307736089e3b96026c2a4f" integrity sha1-u6Y8qGGUiZT/MHc2CJ47lgJsKk8= -which@2.0.2, 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" - 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" @@ -7992,6 +7977,13 @@ which@^1.2.12, which@^1.2.14, which@^1.3.1: 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" @@ -8002,10 +7994,10 @@ wordwrap@^1.0.0: resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-1.0.0.tgz#27584810891456a4171c8d0226441ade90cbcaeb" integrity sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus= -workerpool@6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-6.2.0.tgz#827d93c9ba23ee2019c3ffaff5c27fccea289e8b" - integrity sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A== +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" @@ -8063,12 +8055,7 @@ yallist@^4.0.0: resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yargs-parser@20.2.4: - version "20.2.4" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-20.2.4.tgz#b42890f14566796f85ae8e3a25290d205f154a54" - integrity sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA== - -yargs-parser@^20.2.2: +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== @@ -8081,7 +8068,7 @@ yargs-parser@^5.0.1: camelcase "^3.0.0" object.assign "^4.1.0" -yargs-unparser@2.0.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== @@ -8091,7 +8078,7 @@ yargs-unparser@2.0.0: flat "^5.0.2" is-plain-obj "^2.1.0" -yargs@16.2.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== From 9377fd2b73461b8a3bd6641c88e52a1a7276a4c6 Mon Sep 17 00:00:00 2001 From: mikesealey Date: Tue, 11 Mar 2025 13:47:48 +0000 Subject: [PATCH 132/133] changes lorem argument to optional --- lib/string.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/string.js b/lib/string.js index 4351da27..934119cd 100644 --- a/lib/string.js +++ b/lib/string.js @@ -815,7 +815,7 @@ helpers.uppercase = function(str) { * {{lorem 11}} * * ``` - * @param {Number} `num` The string to uppercase + * * @param {Number} `[num=11]` * @return {String} * @block * @inline From 57a1f699e2747221d4ae8fe8f0662ae78bc3fc0d Mon Sep 17 00:00:00 2001 From: mikesealey Date: Wed, 12 Mar 2025 10:33:37 +0000 Subject: [PATCH 133/133] fixes typo --- lib/string.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/string.js b/lib/string.js index 934119cd..a89b8a10 100644 --- a/lib/string.js +++ b/lib/string.js @@ -815,7 +815,7 @@ helpers.uppercase = function(str) { * {{lorem 11}} * * ``` - * * @param {Number} `[num=11]` + * @param {Number} `[num=11]` * @return {String} * @block * @inline