diff --git a/.eslintrc b/.eslintrc index 4d1236d..20ba5b7 100644 --- a/.eslintrc +++ b/.eslintrc @@ -3,9 +3,8 @@ "ecmaVersion": 2018 }, "env": { + "es6": true, "node": true }, - "rules": { - "quotes": [2, "single", { "avoidEscape": true }] - } + "extends": "eslint:recommended" } diff --git a/.gitignore b/.gitignore index 4a4e6d7..babd1d5 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,6 @@ -node_modules/ -npm-debug.log +.idea +*.iml +.nyc_output coverage +node_modules + diff --git a/.travis.yml b/.travis.yml index 4109ebd..4bf0ce7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,11 @@ language: node_js + node_js: - - "6" - - "8" - "10" - "12" - "14" -script: npm run travis + +script: yarn ci after_success: - cat ./coverage/lcov.info | node_modules/.bin/coveralls --verbose diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cbf07d..7250824 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,118 +1,168 @@ # Change Log + All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). ## [3.0.3] - 2020-07-25 + ### Fixed + - treat `:import` and `:export` statements as pure ## [3.0.2] - 2019-06-05 + ### Fixed + - better handle invalid syntax ## [3.0.1] - 2019-05-16 + ### Fixed + - adds safety check before accessing "rule parent" ## [3.0.0] - 2019-05-07 + ### Features -- don't localize imported values in selectors + +- don't localize imported values in selectors + ### Changes -- don't localize imported values in selectors + +- don't localize imported values in selectors ## [2.0.6] - 2019-03-05 + ### Fixed + - handles properly selector with escaping characters (like: `.\31 a2b3c { color: red }`) ## [2.0.5] - 2019-02-06 + ### Fixed + - Path to `index.js` ## [2.0.4] - 2019-01-04 + ### Fixed + - Inappropriate modification of `steps` function arguments ## [2.0.3] - 2018-12-21 + ### Fixed + - Don't modify inappropriate animation keywords ## [2.0.2] - 2018-12-05 + ### Fixed + - Don't break unicode characters. ## [2.0.1] - 2018-11-23 + ### Fixed + - Handle uppercase `keyframes` at rule. ## [2.0.0] - 2018-11-23 + ### Changed + - Drop support `nodejs@4`. - Update `postcss` version to `7`. ## [0.0.11] - 2015-07-19 + ### Fixed + - Localisation of animation properties. ## [0.0.10] - 2015-06-17 + ### Added + - Localised at-rules. ## [0.0.9] - 2015-06-12 + ### Changed + - Using global selectors outside of a global context no longer triggers warnings. Instead, this functionality will be provided by a CSS Modules linter. ### Fixed + - Keyframe rules. ## [0.0.8] - 2015-06-11 + ### Added + - Pure mode where only local scope is allowed. ### Changed + - Using global selectors outside of a global context now triggers warnings. ## [0.0.7] - 2015-05-30 + ### Changed + - Migrated to `css-selector-tokenizer`. ## [0.0.6] - 2015-05-28 + ### Changed + - Renamed project to `postcss-modules-local-by-default`. ## [0.0.5] - 2015-05-22 + ### Added + - Support for css-loader [inheritance](https://github.com/webpack/css-loader#inheriting) and [local imports](https://github.com/webpack/css-loader#importing-local-class-names). ## [0.0.4] - 2015-05-22 + ### Changed + - Hide global leak detection behind undocumented `lint` option until it's more robust. ## [0.0.3] - 2015-05-22 + ### Changed + - Transformer output now uses the new `:local(.identifier)` syntax. ### Added + - Simple global leak detection. Non-local selectors like `input{}` and `[data-foobar]` now throw when not marked as global. ## [0.0.2] - 2015-05-14 + ### Added + - Support for global selectors appended directly to locals, e.g. `.foo:global(.bar)` ## 0.0.1 - 2015-05-12 + ### Added + - Automatic local classes - Explicit global selectors with `:global` [unreleased]: https://github.com/postcss-modules-local-by-default/compare/v0.0.10...HEAD -[0.0.2]: https://github.com/postcss-modules-local-by-default/compare/v0.0.1...v0.0.2 -[0.0.3]: https://github.com/postcss-modules-local-by-default/compare/v0.0.2...v0.0.3 -[0.0.4]: https://github.com/postcss-modules-local-by-default/compare/v0.0.3...v0.0.4 -[0.0.5]: https://github.com/postcss-modules-local-by-default/compare/v0.0.4...v0.0.5 -[0.0.6]: https://github.com/postcss-modules-local-by-default/compare/v0.0.5...v0.0.6 -[0.0.7]: https://github.com/postcss-modules-local-by-default/compare/v0.0.6...v0.0.7 -[0.0.8]: https://github.com/postcss-modules-local-by-default/compare/v0.0.7...v0.0.8 -[0.0.9]: https://github.com/postcss-modules-local-by-default/compare/v0.0.8...v0.0.9 -[0.0.10]: https://github.com/postcss-modules-local-by-default/compare/v0.0.9...v0.0.10 -[0.0.11]: https://github.com/postcss-modules-local-by-default/compare/v0.0.10...v0.0.11 -[2.0.0]: https://github.com/postcss-modules-local-by-default/compare/v1.3.1...v2.0.0 -[2.0.1]: https://github.com/postcss-modules-local-by-default/compare/v2.0.0...v2.0.1 +[0.0.2]: https://github.com/postcss-modules-local-by-default/compare/v0.0.1...v0.0.2 +[0.0.3]: https://github.com/postcss-modules-local-by-default/compare/v0.0.2...v0.0.3 +[0.0.4]: https://github.com/postcss-modules-local-by-default/compare/v0.0.3...v0.0.4 +[0.0.5]: https://github.com/postcss-modules-local-by-default/compare/v0.0.4...v0.0.5 +[0.0.6]: https://github.com/postcss-modules-local-by-default/compare/v0.0.5...v0.0.6 +[0.0.7]: https://github.com/postcss-modules-local-by-default/compare/v0.0.6...v0.0.7 +[0.0.8]: https://github.com/postcss-modules-local-by-default/compare/v0.0.7...v0.0.8 +[0.0.9]: https://github.com/postcss-modules-local-by-default/compare/v0.0.8...v0.0.9 +[0.0.10]: https://github.com/postcss-modules-local-by-default/compare/v0.0.9...v0.0.10 +[0.0.11]: https://github.com/postcss-modules-local-by-default/compare/v0.0.10...v0.0.11 +[2.0.0]: https://github.com/postcss-modules-local-by-default/compare/v1.3.1...v2.0.0 +[2.0.1]: https://github.com/postcss-modules-local-by-default/compare/v2.0.0...v2.0.1 diff --git a/README.md b/README.md index 13fb131..0a190d3 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ Transformation examples: + ```css .foo { ... } /* => */ :local(.foo) { ... } @@ -25,6 +26,7 @@ Transformation examples: .foo:global(.bar) .baz { ... } /* => */ :local(.foo).bar :local(.baz) { ... } ``` + ## Building @@ -33,9 +35,9 @@ $ npm install $ npm test ``` - - Build: [![Build Status][ci-img]][ci] - - Lines: [![coveralls][coveralls-img]][coveralls] - - Statements: [![codecov][codecov-img]][codecov] +- Build: [![Build Status][ci-img]][ci] +- Lines: [![coveralls][coveralls-img]][coveralls] +- Statements: [![codecov][codecov-img]][codecov] ## Development @@ -49,17 +51,18 @@ MIT ## With thanks - - [Tobias Koppers](https://github.com/sokra) - - [Glen Maddern](https://github.com/geelen) +- [Tobias Koppers](https://github.com/sokra) +- [Glen Maddern](https://github.com/geelen) --- + Mark Dalgleish, 2015. -[ci-img]: https://img.shields.io/travis/css-modules/postcss-modules-local-by-default/master.svg?style=flat-square -[ci]: https://travis-ci.org/css-modules/postcss-modules-local-by-default -[npm-img]: https://img.shields.io/npm/v/postcss-modules-local-by-default.svg?style=flat-square -[npm]: https://www.npmjs.com/package/postcss-modules-local-by-default +[ci-img]: https://img.shields.io/travis/css-modules/postcss-modules-local-by-default/master.svg?style=flat-square +[ci]: https://travis-ci.org/css-modules/postcss-modules-local-by-default +[npm-img]: https://img.shields.io/npm/v/postcss-modules-local-by-default.svg?style=flat-square +[npm]: https://www.npmjs.com/package/postcss-modules-local-by-default [coveralls-img]: https://img.shields.io/coveralls/css-modules/postcss-modules-local-by-default/master.svg?style=flat-square -[coveralls]: https://coveralls.io/r/css-modules/postcss-modules-local-by-default?branch=master -[codecov-img]: https://img.shields.io/codecov/c/github/css-modules/postcss-modules-local-by-default/master.svg?style=flat-square -[codecov]: https://codecov.io/github/css-modules/postcss-modules-local-by-default?branch=master +[coveralls]: https://coveralls.io/r/css-modules/postcss-modules-local-by-default?branch=master +[codecov-img]: https://img.shields.io/codecov/c/github/css-modules/postcss-modules-local-by-default/master.svg?style=flat-square +[codecov]: https://codecov.io/github/css-modules/postcss-modules-local-by-default?branch=master diff --git a/package.json b/package.json index 0d644e8..1e8ce9c 100644 --- a/package.json +++ b/package.json @@ -1,10 +1,19 @@ { "name": "postcss-modules-local-by-default", - "version": "3.0.3", + "version": "4.0.0-rc.0", "description": "A CSS Modules transform to make local scope the default", - "main": "index.js", + "main": "src/index.js", + "author": "Mark Dalgleish", + "license": "MIT", + "files": [ + "src" + ], + "repository": { + "type": "git", + "url": "https://github.com/css-modules/postcss-modules-local-by-default.git" + }, "engines": { - "node": ">= 6" + "node": ">= 10.13.0 || >= 12.13.0 || >= 14" }, "keywords": [ "css-modules", @@ -12,41 +21,33 @@ "css", "postcss-plugin" ], - "author": "Mark Dalgleish", - "license": "MIT", - "repository": { - "type": "git", - "url": "https://github.com/css-modules/postcss-modules-local-by-default.git" - }, - "prettier": { - "singleQuote": true, - "trailingComma": "es5" + "scripts": { + "prettier": "prettier -l --ignore-path .gitignore .", + "eslint": "eslint --ignore-path .gitignore .", + "lint": "yarn eslint && yarn prettier", + "pretest": "yarn lint", + "test": "tape test/index.js", + "autotest": "chokidar src/index.js test/test.js -c 'yarn test'", + "cover": "istanbul cover test/index.js", + "ci": "yarn pretest && yarn cover", + "prepublishOnly": "yarn test" }, "dependencies": { "icss-utils": "^4.1.1", - "postcss": "^7.0.32", "postcss-selector-parser": "^6.0.2", "postcss-value-parser": "^4.1.0" }, "devDependencies": { - "chokidar-cli": "^1.2.3", + "chokidar-cli": "^2.1.0", "codecov.io": "^0.1.6", "coveralls": "^3.1.0", - "eslint": "^5.16.0", + "eslint": "^7.9.0", "istanbul": "^0.4.5", + "postcss": "^8.0.3", + "prettier": "^2.1.2", "tape": "^5.0.1" }, - "scripts": { - "lint": "eslint index.js test.js", - "pretest": "yarn lint", - "test": "tape test.js", - "autotest": "chokidar index.js test.js -c 'yarn test'", - "precover": "yarn lint", - "cover": "istanbul cover test.js", - "travis": "yarn lint && yarn cover -- --report lcovonly", - "prepublish": "yarn test" - }, - "files": [ - "index.js" - ] + "peerDependencies": { + "postcss": "^8.0.3" + } } diff --git a/index.js b/src/index.js similarity index 62% rename from index.js rename to src/index.js index 200affe..9e1836d 100644 --- a/index.js +++ b/src/index.js @@ -1,32 +1,29 @@ -'use strict'; +"use strict"; -const postcss = require('postcss'); -const selectorParser = require('postcss-selector-parser'); -const valueParser = require('postcss-value-parser'); -const { extractICSS } = require('icss-utils'); +const selectorParser = require("postcss-selector-parser"); +const valueParser = require("postcss-value-parser"); +const { extractICSS } = require("icss-utils"); -const isSpacing = node => node.type === 'combinator' && node.value === ' '; +const isSpacing = (node) => node.type === "combinator" && node.value === " "; function getImportLocalAliases(icssImports) { const localAliases = new Map(); - Object.keys(icssImports).forEach(key => { - Object.keys(icssImports[key]).forEach(prop => { + + Object.keys(icssImports).forEach((key) => { + Object.keys(icssImports[key]).forEach((prop) => { localAliases.set(prop, icssImports[key][prop]); }); }); - return localAliases; -} -function maybeLocalizeValue(value, localAliasMap) { - if (localAliasMap.has(value)) return value; + return localAliases; } function normalizeNodeArray(nodes) { const array = []; - nodes.forEach(function(x) { + nodes.forEach(function (x) { if (Array.isArray(x)) { - normalizeNodeArray(x).forEach(function(item) { + normalizeNodeArray(x).forEach(function (item) { array.push(item); }); } else if (x) { @@ -41,27 +38,27 @@ function normalizeNodeArray(nodes) { } function localizeNode(rule, mode, localAliasMap) { - const isScopePseudo = node => - node.value === ':local' || node.value === ':global'; - const isImportExportPseudo = node => - node.value === ':import' || node.value === ':export'; + const isScopePseudo = (node) => + node.value === ":local" || node.value === ":global"; + const isImportExportPseudo = (node) => + node.value === ":import" || node.value === ":export"; const transform = (node, context) => { if (context.ignoreNextSpacing && !isSpacing(node)) { - throw new Error('Missing whitespace after ' + context.ignoreNextSpacing); + throw new Error("Missing whitespace after " + context.ignoreNextSpacing); } if (context.enforceNoSpacing && isSpacing(node)) { - throw new Error('Missing whitespace before ' + context.enforceNoSpacing); + throw new Error("Missing whitespace before " + context.enforceNoSpacing); } let newNodes; switch (node.type) { - case 'root': { + case "root": { let resultingGlobal; context.hasPureGlobals = false; - newNodes = node.nodes.map(function(n) { + newNodes = node.nodes.map(function (n) { const nContext = { global: context.global, lastWasSpacing: true, @@ -71,7 +68,7 @@ function localizeNode(rule, mode, localAliasMap) { n = transform(n, nContext); - if (typeof resultingGlobal === 'undefined') { + if (typeof resultingGlobal === "undefined") { resultingGlobal = nContext.global; } else if (resultingGlobal !== nContext.global) { throw new Error( @@ -93,14 +90,14 @@ function localizeNode(rule, mode, localAliasMap) { node.nodes = normalizeNodeArray(newNodes); break; } - case 'selector': { - newNodes = node.map(childNode => transform(childNode, context)); + case "selector": { + newNodes = node.map((childNode) => transform(childNode, context)); node = node.clone(); node.nodes = normalizeNodeArray(newNodes); break; } - case 'combinator': { + case "combinator": { if (isSpacing(node)) { if (context.ignoreNextSpacing) { context.ignoreNextSpacing = false; @@ -113,7 +110,7 @@ function localizeNode(rule, mode, localAliasMap) { } break; } - case 'pseudo': { + case "pseudo": { let childContext; const isNested = !!node.length; const isScoped = isScopePseudo(node); @@ -121,7 +118,7 @@ function localizeNode(rule, mode, localAliasMap) { if (isImportExport) { context.hasLocals = true; - // :local(.foo) + // :local(.foo) } else if (isNested) { if (isScoped) { if (node.nodes.length === 0) { @@ -130,21 +127,19 @@ function localizeNode(rule, mode, localAliasMap) { if (context.inside) { throw new Error( - `A ${node.value} is not allowed inside of a ${ - context.inside - }(...)` + `A ${node.value} is not allowed inside of a ${context.inside}(...)` ); } childContext = { - global: node.value === ':global', + global: node.value === ":global", inside: node.value, hasLocals: false, explicit: true, }; newNodes = node - .map(childNode => transform(childNode, childContext)) + .map((childNode) => transform(childNode, childContext)) .reduce((acc, next) => acc.concat(next.nodes), []); if (newNodes.length) { @@ -168,7 +163,7 @@ function localizeNode(rule, mode, localAliasMap) { hasLocals: false, explicit: context.explicit, }; - newNodes = node.map(childNode => + newNodes = node.map((childNode) => transform(childNode, childContext) ); @@ -185,9 +180,7 @@ function localizeNode(rule, mode, localAliasMap) { } else if (isScoped) { if (context.inside) { throw new Error( - `A ${node.value} is not allowed inside of a ${ - context.inside - }(...)` + `A ${node.value} is not allowed inside of a ${context.inside}(...)` ); } @@ -201,22 +194,22 @@ function localizeNode(rule, mode, localAliasMap) { ? false : node.value; - context.global = node.value === ':global'; + context.global = node.value === ":global"; context.explicit = true; // because this node has spacing that is lost when we remove it // we make up for it by adding an extra combinator in since adding // spacing on the parent selector doesn't work return addBackSpacing - ? selectorParser.combinator({ value: ' ' }) + ? selectorParser.combinator({ value: " " }) : null; } break; } - case 'id': - case 'class': { + case "id": + case "class": { if (!node.value) { - throw new Error('Invalid class or id selector syntax'); + throw new Error("Invalid class or id selector syntax"); } if (context.global) { @@ -228,10 +221,10 @@ function localizeNode(rule, mode, localAliasMap) { if (!isImportedValue || isImportedWithExplicitScope) { const innerNode = node.clone(); - innerNode.spaces = { before: '', after: '' }; + innerNode.spaces = { before: "", after: "" }; node = selectorParser.pseudo({ - value: ':local', + value: ":local", nodes: [innerNode], spaces: node.spaces, }); @@ -251,11 +244,11 @@ function localizeNode(rule, mode, localAliasMap) { }; const rootContext = { - global: mode === 'global', + global: mode === "global", hasPureGlobals: false, }; - rootContext.selector = selectorParser(root => { + rootContext.selector = selectorParser((root) => { transform(root, rootContext); }).processSync(rule, { updateSelector: false, lossless: true }); @@ -264,23 +257,23 @@ function localizeNode(rule, mode, localAliasMap) { function localizeDeclNode(node, context) { switch (node.type) { - case 'word': + case "word": if (context.localizeNextItem) { if (!context.localAliasMap.has(node.value)) { - node.value = ':local(' + node.value + ')'; + node.value = ":local(" + node.value + ")"; context.localizeNextItem = false; } } break; - case 'function': + case "function": if ( context.options && context.options.rewriteUrl && - node.value.toLowerCase() === 'url' + node.value.toLowerCase() === "url" ) { - node.nodes.map(nestedNode => { - if (nestedNode.type !== 'string' && nestedNode.type !== 'word') { + node.nodes.map((nestedNode) => { + if (nestedNode.type !== "string" && nestedNode.type !== "word") { return; } @@ -290,18 +283,18 @@ function localizeDeclNode(node, context) { ); switch (nestedNode.type) { - case 'string': + case "string": if (nestedNode.quote === "'") { - newUrl = newUrl.replace(/(\\)/g, '\\$1').replace(/'/g, "\\'"); + newUrl = newUrl.replace(/(\\)/g, "\\$1").replace(/'/g, "\\'"); } if (nestedNode.quote === '"') { - newUrl = newUrl.replace(/(\\)/g, '\\$1').replace(/"/g, '\\"'); + newUrl = newUrl.replace(/(\\)/g, "\\$1").replace(/"/g, '\\"'); } break; - case 'word': - newUrl = newUrl.replace(/("|'|\)|\\)/g, '\\$1'); + case "word": + newUrl = newUrl.replace(/("|'|\)|\\)/g, "\\$1"); break; } @@ -316,7 +309,7 @@ function localizeDeclNode(node, context) { function isWordAFunctionArgument(wordNode, functionNode) { return functionNode ? functionNode.nodes.some( - functionNodeChild => + (functionNodeChild) => functionNodeChild.sourceIndex === wordNode.sourceIndex ) : false; @@ -338,13 +331,13 @@ function localizeAnimationShorthandDeclValues(decl, context) { */ const animationKeywords = { $alternate: 1, - '$alternate-reverse': 1, + "$alternate-reverse": 1, $backwards: 1, $both: 1, $ease: 1, - '$ease-in': 1, - '$ease-in-out': 1, - '$ease-out': 1, + "$ease-in": 1, + "$ease-in-out": 1, + "$ease-out": 1, $forwards: 1, $infinite: 1, $linear: 1, @@ -353,8 +346,8 @@ function localizeAnimationShorthandDeclValues(decl, context) { $paused: 1, $reverse: 1, $running: 1, - '$step-end': 1, - '$step-start': 1, + "$step-end": 1, + "$step-start": 1, $initial: Infinity, $inherit: Infinity, $unset: Infinity, @@ -363,31 +356,31 @@ function localizeAnimationShorthandDeclValues(decl, context) { const didParseAnimationName = false; let parsedAnimationKeywords = {}; let stepsFunctionNode = null; - const valueNodes = valueParser(decl.value).walk(node => { + const valueNodes = valueParser(decl.value).walk((node) => { /* If div-token appeared (represents as comma ','), a possibility of an animation-keywords should be reflesh. */ - if (node.type === 'div') { + if (node.type === "div") { parsedAnimationKeywords = {}; } - if (node.type === 'function' && node.value.toLowerCase() === 'steps') { + if (node.type === "function" && node.value.toLowerCase() === "steps") { stepsFunctionNode = node; } const value = - node.type === 'word' && !isWordAFunctionArgument(node, stepsFunctionNode) + node.type === "word" && !isWordAFunctionArgument(node, stepsFunctionNode) ? node.value.toLowerCase() : null; let shouldParseAnimationName = false; if (!didParseAnimationName && value && validIdent.test(value)) { - if ('$' + value in animationKeywords) { - parsedAnimationKeywords['$' + value] = - '$' + value in parsedAnimationKeywords - ? parsedAnimationKeywords['$' + value] + 1 + if ("$" + value in animationKeywords) { + parsedAnimationKeywords["$" + value] = + "$" + value in parsedAnimationKeywords + ? parsedAnimationKeywords["$" + value] + 1 : 0; shouldParseAnimationName = - parsedAnimationKeywords['$' + value] >= - animationKeywords['$' + value]; + parsedAnimationKeywords["$" + value] >= + animationKeywords["$" + value]; } else { shouldParseAnimationName = true; } @@ -439,18 +432,12 @@ function localizeDecl(decl, context) { } } -module.exports = postcss.plugin('postcss-modules-local-by-default', function( - options -) { - if (typeof options !== 'object') { - options = {}; // If options is undefined or not an object the plugin fails - } - +module.exports = (options = {}) => { if (options && options.mode) { if ( - options.mode !== 'global' && - options.mode !== 'local' && - options.mode !== 'pure' + options.mode !== "global" && + options.mode !== "local" && + options.mode !== "pure" ) { throw new Error( 'options.mode must be either "global", "local" or "pure" (default "local")' @@ -458,92 +445,100 @@ module.exports = postcss.plugin('postcss-modules-local-by-default', function( } } - const pureMode = options && options.mode === 'pure'; - const globalMode = options && options.mode === 'global'; - - return function(css) { - const { icssImports } = extractICSS(css, false); - const localAliasMap = getImportLocalAliases(icssImports); - - css.walkAtRules(function(atrule) { - if (/keyframes$/i.test(atrule.name)) { - const globalMatch = /^\s*:global\s*\((.+)\)\s*$/.exec(atrule.params); - const localMatch = /^\s*:local\s*\((.+)\)\s*$/.exec(atrule.params); - let globalKeyframes = globalMode; - if (globalMatch) { - if (pureMode) { - throw atrule.error( - '@keyframes :global(...) is not allowed in pure mode' - ); + const pureMode = options && options.mode === "pure"; + const globalMode = options && options.mode === "global"; + + return { + postcssPlugin: "postcss-modules-local-by-default", + RootExit(root) { + const { icssImports } = extractICSS(root, false); + const localAliasMap = getImportLocalAliases(icssImports); + + root.walkAtRules(function (atrule) { + if (/keyframes$/i.test(atrule.name)) { + const globalMatch = /^\s*:global\s*\((.+)\)\s*$/.exec(atrule.params); + const localMatch = /^\s*:local\s*\((.+)\)\s*$/.exec(atrule.params); + + let globalKeyframes = globalMode; + + if (globalMatch) { + if (pureMode) { + throw atrule.error( + "@keyframes :global(...) is not allowed in pure mode" + ); + } + atrule.params = globalMatch[1]; + globalKeyframes = true; + } else if (localMatch) { + atrule.params = localMatch[0]; + globalKeyframes = false; + } else if (!globalMode) { + if (atrule.params && !localAliasMap.has(atrule.params)) { + atrule.params = ":local(" + atrule.params + ")"; + } } - atrule.params = globalMatch[1]; - globalKeyframes = true; - } else if (localMatch) { - atrule.params = localMatch[0]; - globalKeyframes = false; - } else if (!globalMode) { - if (atrule.params && !localAliasMap.has(atrule.params)) - atrule.params = ':local(' + atrule.params + ')'; - } - atrule.walkDecls(function(decl) { - localizeDecl(decl, { - localAliasMap, - options: options, - global: globalKeyframes, - }); - }); - } else if (atrule.nodes) { - atrule.nodes.forEach(function(decl) { - if (decl.type === 'decl') { + + atrule.walkDecls(function (decl) { localizeDecl(decl, { localAliasMap, options: options, - global: globalMode, + global: globalKeyframes, }); - } - }); - } - }); + }); + } else if (atrule.nodes) { + atrule.nodes.forEach(function (decl) { + if (decl.type === "decl") { + localizeDecl(decl, { + localAliasMap, + options: options, + global: globalMode, + }); + } + }); + } + }); - css.walkRules(function(rule) { - if ( - rule.parent && - rule.parent.type === 'atrule' && - /keyframes$/i.test(rule.parent.name) - ) { - // ignore keyframe rules - return; - } + root.walkRules(function (rule) { + if ( + rule.parent && + rule.parent.type === "atrule" && + /keyframes$/i.test(rule.parent.name) + ) { + // ignore keyframe rules + return; + } - if ( - rule.nodes && - rule.selector.slice(0, 2) === '--' && - rule.selector.slice(-1) === ':' - ) { - // ignore custom property set - return; - } + if ( + rule.nodes && + rule.selector.slice(0, 2) === "--" && + rule.selector.slice(-1) === ":" + ) { + // ignore custom property set + return; + } - const context = localizeNode(rule, options.mode, localAliasMap); + const context = localizeNode(rule, options.mode, localAliasMap); - context.options = options; - context.localAliasMap = localAliasMap; + context.options = options; + context.localAliasMap = localAliasMap; - if (pureMode && context.hasPureGlobals) { - throw rule.error( - 'Selector "' + - rule.selector + - '" is not pure ' + - '(pure selectors must contain at least one local class or id)' - ); - } + if (pureMode && context.hasPureGlobals) { + throw rule.error( + 'Selector "' + + rule.selector + + '" is not pure ' + + "(pure selectors must contain at least one local class or id)" + ); + } - rule.selector = context.selector; + rule.selector = context.selector; - // Less-syntax mixins parse as rules with no nodes - if (rule.nodes) { - rule.nodes.forEach(decl => localizeDecl(decl, context)); - } - }); + // Less-syntax mixins parse as rules with no nodes + if (rule.nodes) { + rule.nodes.forEach((decl) => localizeDecl(decl, context)); + } + }); + }, }; -}); +}; +module.exports.postcss = true; diff --git a/test.js b/test.js deleted file mode 100644 index 455de54..0000000 --- a/test.js +++ /dev/null @@ -1,702 +0,0 @@ -'use strict'; - -const test = require('tape'); -const postcss = require('postcss'); -const plugin = require('./'); -const name = require('./package.json').name; - -const tests = [ - { - should: 'scope selectors', - input: '.foobar {}', - expected: ':local(.foobar) {}', - }, - { - should: 'scope escaped selectors', - input: '.\\3A \\) {}', - expected: ':local(.\\3A \\)) {}', - }, - { - should: 'scope ids', - input: '#foobar {}', - expected: ':local(#foobar) {}', - }, - { - should: 'scope escaped ids', - input: '#\\#test {}', - expected: ':local(#\\#test) {}', - }, - { - should: 'scope escaped ids (2)', - input: '#u-m\\00002b {}', - expected: ':local(#u-m\\00002b) {}', - }, - { - should: 'scope multiple selectors', - input: '.foo, .baz {}', - expected: ':local(.foo), :local(.baz) {}', - }, - { - should: 'scope sibling selectors', - input: '.foo ~ .baz {}', - expected: ':local(.foo) ~ :local(.baz) {}', - }, - { - should: 'scope psuedo elements', - input: '.foo:after {}', - expected: ':local(.foo):after {}', - }, - { - should: 'scope media queries', - input: '@media only screen { .foo {} }', - expected: '@media only screen { :local(.foo) {} }', - }, - { - should: 'allow narrow global selectors', - input: ':global(.foo .bar) {}', - expected: '.foo .bar {}', - }, - { - should: 'allow narrow local selectors', - input: ':local(.foo .bar) {}', - expected: ':local(.foo) :local(.bar) {}', - }, - { - should: 'allow broad global selectors', - input: ':global .foo .bar {}', - expected: '.foo .bar {}', - }, - { - should: 'allow broad local selectors', - input: ':local .foo .bar {}', - expected: ':local(.foo) :local(.bar) {}', - }, - { - should: 'allow multiple narrow global selectors', - input: ':global(.foo), :global(.bar) {}', - expected: '.foo, .bar {}', - }, - { - should: 'allow multiple broad global selectors', - input: ':global .foo, :global .bar {}', - expected: '.foo, .bar {}', - }, - { - should: 'allow multiple broad local selectors', - input: ':local .foo, :local .bar {}', - expected: ':local(.foo), :local(.bar) {}', - }, - { - should: 'allow narrow global selectors nested inside local styles', - input: '.foo :global(.foo .bar) {}', - expected: ':local(.foo) .foo .bar {}', - }, - { - should: 'allow broad global selectors nested inside local styles', - input: '.foo :global .foo .bar {}', - expected: ':local(.foo) .foo .bar {}', - }, - { - should: 'allow parentheses inside narrow global selectors', - input: '.foo :global(.foo:not(.bar)) {}', - expected: ':local(.foo) .foo:not(.bar) {}', - }, - { - should: 'allow parentheses inside narrow local selectors', - input: '.foo :local(.foo:not(.bar)) {}', - expected: ':local(.foo) :local(.foo):not(:local(.bar)) {}', - }, - { - should: 'allow narrow global selectors appended to local styles', - input: '.foo:global(.foo.bar) {}', - expected: ':local(.foo).foo.bar {}', - }, - { - should: 'ignore selectors that are already local', - input: ':local(.foobar) {}', - expected: ':local(.foobar) {}', - }, - { - should: 'ignore nested selectors that are already local', - input: ':local(.foo) :local(.bar) {}', - expected: ':local(.foo) :local(.bar) {}', - }, - { - should: 'ignore multiple selectors that are already local', - input: ':local(.foo), :local(.bar) {}', - expected: ':local(.foo), :local(.bar) {}', - }, - { - should: 'ignore sibling selectors that are already local', - input: ':local(.foo) ~ :local(.bar) {}', - expected: ':local(.foo) ~ :local(.bar) {}', - }, - { - should: 'ignore psuedo elements that are already local', - input: ':local(.foo):after {}', - expected: ':local(.foo):after {}', - }, - { - should: 'trim whitespace after empty broad selector', - input: '.bar :global :global {}', - expected: ':local(.bar) {}', - }, - { - should: 'broad global should be limited to selector', - input: ':global .foo, .bar :global, .foobar :global {}', - expected: '.foo, :local(.bar), :local(.foobar) {}', - }, - { - should: 'broad global should be limited to nested selector', - input: '.foo:not(:global .bar).foobar {}', - expected: ':local(.foo):not(.bar):local(.foobar) {}', - }, - { - should: 'broad global and local should allow switching', - input: '.foo :global .bar :local .foobar :local .barfoo {}', - expected: ':local(.foo) .bar :local(.foobar) :local(.barfoo) {}', - }, - { - should: 'localize a single animation-name', - input: '.foo { animation-name: bar; }', - expected: ':local(.foo) { animation-name: :local(bar); }', - }, - { - should: 'not localize a single animation-delay', - input: '.foo { animation-delay: 1s; }', - expected: ':local(.foo) { animation-delay: 1s; }', - }, - { - should: 'localize multiple animation-names', - input: '.foo { animation-name: bar, foobar; }', - expected: ':local(.foo) { animation-name: :local(bar), :local(foobar); }', - }, - { - should: 'localize animation', - input: '.foo { animation: bar 5s, foobar; }', - expected: ':local(.foo) { animation: :local(bar) 5s, :local(foobar); }', - }, - { - should: 'localize animation with vendor prefix', - input: '.foo { -webkit-animation: bar; animation: bar; }', - expected: - ':local(.foo) { -webkit-animation: :local(bar); animation: :local(bar); }', - }, - { - should: 'not localize other rules', - input: '.foo { content: "animation: bar;" }', - expected: ':local(.foo) { content: "animation: bar;" }', - }, - { - should: 'not localize global rules', - input: ':global .foo { animation: foo; animation-name: bar; }', - expected: '.foo { animation: foo; animation-name: bar; }', - }, - { - should: 'handle a complex animation rule', - input: - '.foo { animation: foo, bar 5s linear 2s infinite alternate, barfoo 1s; }', - expected: - ':local(.foo) { animation: :local(foo), :local(bar) 5s linear 2s infinite alternate, :local(barfoo) 1s; }', - }, - { - should: 'handle animations where the first value is not the animation name', - input: '.foo { animation: 1s foo; }', - expected: ':local(.foo) { animation: 1s :local(foo); }', - }, - { - should: - 'handle animations where the first value is not the animation name whilst also using keywords', - input: '.foo { animation: 1s normal ease-out infinite foo; }', - expected: - ':local(.foo) { animation: 1s normal ease-out infinite :local(foo); }', - }, - { - should: - 'not treat animation curve as identifier of animation name even if it separated by comma', - input: - '.foo { animation: slide-right 300ms forwards ease-out, fade-in 300ms forwards ease-out; }', - expected: - ':local(.foo) { animation: :local(slide-right) 300ms forwards ease-out, :local(fade-in) 300ms forwards ease-out; }', - }, - { - should: - 'not treat "start" and "end" keywords in steps() function as identifiers', - input: [ - '.foo { animation: spin 1s steps(12, end) infinite; }', - '.foo { animation: spin 1s STEPS(12, start) infinite; }', - '.foo { animation: spin 1s steps(12, END) infinite; }', - '.foo { animation: spin 1s steps(12, START) infinite; }', - ].join('\n'), - expected: [ - ':local(.foo) { animation: :local(spin) 1s steps(12, end) infinite; }', - ':local(.foo) { animation: :local(spin) 1s STEPS(12, start) infinite; }', - ':local(.foo) { animation: :local(spin) 1s steps(12, END) infinite; }', - ':local(.foo) { animation: :local(spin) 1s steps(12, START) infinite; }', - ].join('\n'), - }, - { - should: 'handle animations with custom timing functions', - input: - '.foo { animation: 1s normal cubic-bezier(0.25, 0.5, 0.5. 0.75) foo; }', - expected: - ':local(.foo) { animation: 1s normal cubic-bezier(0.25, 0.5, 0.5. 0.75) :local(foo); }', - }, - { - should: 'handle animations whose names are keywords', - input: '.foo { animation: 1s infinite infinite; }', - expected: ':local(.foo) { animation: 1s infinite :local(infinite); }', - }, - { - should: 'handle not localize an animation shorthand value of "inherit"', - input: '.foo { animation: inherit; }', - expected: ':local(.foo) { animation: inherit; }', - }, - { - should: 'handle "constructor" as animation name', - input: '.foo { animation: constructor constructor; }', - expected: - ':local(.foo) { animation: :local(constructor) :local(constructor); }', - }, - { - should: 'default to global when mode provided', - input: '.foo {}', - options: { mode: 'global' }, - expected: '.foo {}', - }, - { - should: 'default to local when mode provided', - input: '.foo {}', - options: { mode: 'local' }, - expected: ':local(.foo) {}', - }, - { - should: 'use correct spacing', - input: [ - '.a :local .b {}', - '.a:local.b {}', - '.a:local(.b) {}', - '.a:local( .b ) {}', - '.a :local(.b) {}', - '.a :local( .b ) {}', - ':local(.a).b {}', - ':local( .a ).b {}', - ':local(.a) .b {}', - ':local( .a ) .b {}', - ].join('\n'), - options: { mode: 'global' }, - expected: [ - '.a :local(.b) {}', - '.a:local(.b) {}', - '.a:local(.b) {}', - '.a:local(.b) {}', - '.a :local(.b) {}', - '.a :local(.b) {}', - ':local(.a).b {}', - ':local(.a).b {}', - ':local(.a) .b {}', - ':local(.a) .b {}', - ].join('\n'), - }, - { - should: 'localize keyframes', - input: '@keyframes foo { from { color: red; } to { color: blue; } }', - expected: - '@keyframes :local(foo) { from { color: red; } to { color: blue; } }', - }, - { - should: 'localize keyframes in global default mode', - input: '@keyframes foo {}', - options: { mode: 'global' }, - expected: '@keyframes foo {}', - }, - { - should: 'localize explicit keyframes', - input: - '@keyframes :local(foo) { 0% { color: red; } 33.3% { color: yellow; } 100% { color: blue; } } @-webkit-keyframes :global(bar) { from { color: red; } to { color: blue; } }', - expected: - '@keyframes :local(foo) { 0% { color: red; } 33.3% { color: yellow; } 100% { color: blue; } } @-webkit-keyframes bar { from { color: red; } to { color: blue; } }', - }, - { - should: 'ignore :export statements', - input: ':export { foo: __foo; }', - expected: ':export { foo: __foo; }', - }, - { - should: 'ignore :import statemtents', - input: ':import("~/lol.css") { foo: __foo; }', - expected: ':import("~/lol.css") { foo: __foo; }', - }, - { - should: 'incorrectly handle nested selectors', - input: '.bar:not(:global .foo, .baz) {}', - expected: ':local(.bar):not(.foo, .baz) {}', - }, - { - should: 'compile in pure mode', - input: ':global(.foo).bar, [type="radio"] ~ .label, :not(.foo), #bar {}', - options: { mode: 'pure' }, - expected: - '.foo:local(.bar), [type="radio"] ~ :local(.label), :not(:local(.foo)), :local(#bar) {}', - }, - { - should: 'compile explict global element', - input: ':global(input) {}', - expected: 'input {}', - }, - { - should: 'compile explict global attribute', - input: ':global([type="radio"]), :not(:global [type="radio"]) {}', - expected: '[type="radio"], :not([type="radio"]) {}', - }, - { - should: 'throw on invalid mode', - input: '', - options: { mode: '???' }, - error: /"global", "local" or "pure"/, - }, - { - should: 'throw on inconsistent selector result', - input: ':global .foo, .bar {}', - error: /Inconsistent/, - }, - { - should: 'throw on nested :locals', - input: ':local(:local(.foo)) {}', - error: /is not allowed inside/, - }, - { - should: 'throw on nested :globals', - input: ':global(:global(.foo)) {}', - error: /is not allowed inside/, - }, - { - should: 'throw on nested mixed', - input: ':local(:global(.foo)) {}', - error: /is not allowed inside/, - }, - { - should: 'throw on nested broad :local', - input: ':global(:local .foo) {}', - error: /is not allowed inside/, - }, - { - should: 'throw on incorrect spacing with broad :global', - input: '.foo :global.bar {}', - error: /Missing whitespace after :global/, - }, - { - should: 'throw on incorrect spacing with broad :local', - input: '.foo:local .bar {}', - error: /Missing whitespace before :local/, - }, - { - should: 'throw on not pure selector (global class)', - input: ':global(.foo) {}', - options: { mode: 'pure' }, - error: /":global\(\.foo\)" is not pure/, - }, - { - should: 'throw on not pure selector (with multiple 1)', - input: '.foo, :global(.bar) {}', - options: { mode: 'pure' }, - error: /".foo, :global\(\.bar\)" is not pure/, - }, - { - should: 'throw on not pure selector (with multiple 2)', - input: ':global(.bar), .foo {}', - options: { mode: 'pure' }, - error: /":global\(\.bar\), .foo" is not pure/, - }, - { - should: 'throw on not pure selector (element)', - input: 'input {}', - options: { mode: 'pure' }, - error: /"input" is not pure/, - }, - { - should: 'throw on not pure selector (attribute)', - input: '[type="radio"] {}', - options: { mode: 'pure' }, - error: /"\[type="radio"\]" is not pure/, - }, - { - should: 'throw on not pure keyframes', - input: '@keyframes :global(foo) {}', - options: { mode: 'pure' }, - error: /@keyframes :global\(\.\.\.\) is not allowed in pure mode/, - }, - { - should: 'pass through global element', - input: 'input {}', - expected: 'input {}', - }, - { - should: 'localise class and pass through element', - input: '.foo input {}', - expected: ':local(.foo) input {}', - }, - { - should: 'pass through attribute selector', - input: '[type="radio"] {}', - expected: '[type="radio"] {}', - }, - { - should: 'not modify urls without option', - input: - '.a { background: url(./image.png); }\n' + - ':global .b { background: url(image.png); }\n' + - '.c { background: url("./image.png"); }', - expected: - ':local(.a) { background: url(./image.png); }\n' + - '.b { background: url(image.png); }\n' + - ':local(.c) { background: url("./image.png"); }', - }, - { - should: 'rewrite url in local block', - input: - '.a { background: url(./image.png); }\n' + - ':global .b { background: url(image.png); }\n' + - '.c { background: url("./image.png"); }\n' + - ".c { background: url('./image.png'); }\n" + - '.d { background: -webkit-image-set(url("./image.png") 1x, url("./image2x.png") 2x); }\n' + - '@font-face { src: url("./font.woff"); }\n' + - '@-webkit-font-face { src: url("./font.woff"); }\n' + - '@media screen { .a { src: url("./image.png"); } }\n' + - '@keyframes :global(ani1) { 0% { src: url("image.png"); } }\n' + - '@keyframes ani2 { 0% { src: url("./image.png"); } }\n' + - 'foo { background: end-with-url(something); }', - options: { - rewriteUrl: function(global, url) { - const mode = global ? 'global' : 'local'; - return '(' + mode + ')' + url + '"' + mode + '"'; - }, - }, - expected: - ':local(.a) { background: url((local\\)./image.png\\"local\\"); }\n' + - '.b { background: url((global\\)image.png\\"global\\"); }\n' + - ':local(.c) { background: url("(local)./image.png\\"local\\""); }\n' + - ':local(.c) { background: url(\'(local)./image.png"local"\'); }\n' + - ':local(.d) { background: -webkit-image-set(url("(local)./image.png\\"local\\"") 1x, url("(local)./image2x.png\\"local\\"") 2x); }\n' + - '@font-face { src: url("(local)./font.woff\\"local\\""); }\n' + - '@-webkit-font-face { src: url("(local)./font.woff\\"local\\""); }\n' + - '@media screen { :local(.a) { src: url("(local)./image.png\\"local\\""); } }\n' + - '@keyframes ani1 { 0% { src: url("(global)image.png\\"global\\""); } }\n' + - '@keyframes :local(ani2) { 0% { src: url("(local)./image.png\\"local\\""); } }\n' + - 'foo { background: end-with-url(something); }', - }, - { - should: 'not crash on atrule without nodes', - input: '@charset "utf-8";', - expected: '@charset "utf-8";', - }, - { - should: 'not crash on a rule without nodes', - input: (function() { - const inner = postcss.rule({ selector: '.b', ruleWithoutBody: true }); - const outer = postcss.rule({ selector: '.a' }).push(inner); - const root = postcss.root().push(outer); - inner.nodes = undefined; - return root; - })(), - // postcss-less's stringify would honor `ruleWithoutBody` and omit the trailing `{}` - expected: ':local(.a) {\n :local(.b) {}\n}', - }, - { - should: 'not break unicode characters', - input: '.a { content: "\\2193" }', - expected: ':local(.a) { content: "\\2193" }', - }, - { - should: 'not break unicode characters', - input: '.a { content: "\\2193\\2193" }', - expected: ':local(.a) { content: "\\2193\\2193" }', - }, - { - should: 'not break unicode characters', - input: '.a { content: "\\2193 \\2193" }', - expected: ':local(.a) { content: "\\2193 \\2193" }', - }, - { - should: 'not break unicode characters', - input: '.a { content: "\\2193\\2193\\2193" }', - expected: ':local(.a) { content: "\\2193\\2193\\2193" }', - }, - { - should: 'not break unicode characters', - input: '.a { content: "\\2193 \\2193 \\2193" }', - expected: ':local(.a) { content: "\\2193 \\2193 \\2193" }', - }, - { - should: 'not ignore custom property set', - input: - ':root { --title-align: center; --sr-only: { position: absolute; } }', - expected: - ':root { --title-align: center; --sr-only: { position: absolute; } }', - }, - /** - * Imported aliases - */ - { - should: 'not localize imported alias', - input: ` - :import(foo) { a_value: some-value; } - - .foo > .a_value { } - `, - expected: ` - :import(foo) { a_value: some-value; } - - :local(.foo) > .a_value { } - `, - }, - { - should: 'not localize nested imported alias', - input: ` - :import(foo) { a_value: some-value; } - - .foo > .a_value > .bar { } - `, - expected: ` - :import(foo) { a_value: some-value; } - - :local(.foo) > .a_value > :local(.bar) { } - `, - }, - - { - should: 'ignore imported in explicit local', - input: ` - :import(foo) { a_value: some-value; } - - :local(.a_value) { } - `, - expected: ` - :import(foo) { a_value: some-value; } - - :local(.a_value) { } - `, - }, - { - should: 'escape local context with explict global', - input: ` - :import(foo) { a_value: some-value; } - - :local .foo :global(.a_value) .bar { } - `, - expected: ` - :import(foo) { a_value: some-value; } - - :local(.foo) .a_value :local(.bar) { } - `, - }, - { - should: 'respect explicit local', - input: ` - :import(foo) { a_value: some-value; } - - .a_value :local .a_value .foo :global .a_value { } - `, - expected: ` - :import(foo) { a_value: some-value; } - - .a_value :local(.a_value) :local(.foo) .a_value { } - `, - }, - { - should: 'not localize imported animation-name', - input: ` - :import(file) { a_value: some-value; } - - .foo { animation-name: a_value; } - `, - expected: ` - :import(file) { a_value: some-value; } - - :local(.foo) { animation-name: a_value; } - `, - }, - { - should: 'throw on invalid syntax id usage', - input: '. {}', - error: /Invalid class or id selector syntax/, - }, - { - should: 'throw on invalid syntax class usage', - input: '# {}', - error: /Invalid class or id selector syntax/, - }, - { - should: 'throw on invalid syntax local class usage', - input: ':local(.) {}', - error: /Invalid class or id selector syntax/, - }, - { - should: 'throw on invalid syntax local id usage', - input: ':local(#) {}', - error: /Invalid class or id selector syntax/, - }, - { - should: 'throw on invalid global class usage', - input: ':global(.) {}', - error: /Invalid class or id selector syntax/, - }, - { - should: 'throw on invalid global class usage', - input: ':global(#) {}', - error: /Invalid class or id selector syntax/, - }, - /* - Bug in postcss-selector-parser - { - should: 'throw on invalid global class usage', - input: ':global() {}', - error: /:global\(\) can't be empty/ - }, - */ - { - should: 'consider :import statements pure', - input: ':import("~/lol.css") { foo: __foo; }', - options: { mode: 'pure' }, - expected: ':import("~/lol.css") { foo: __foo; }', - }, - { - should: 'consider :export statements pure', - input: ':export { foo: __foo; }', - options: { mode: 'pure' }, - expected: ':export { foo: __foo; }', - }, -]; - -function process(css, options) { - return postcss(plugin(options)).process(css).css; -} - -test(name, function(t) { - t.plan(tests.length); - - tests.forEach(function(testCase) { - const options = testCase.options; - if (testCase.error) { - t.throws( - function() { - process(testCase.input, options); - }, - testCase.error, - 'should ' + testCase.should - ); - } else { - t.equal( - process(testCase.input, options), - testCase.expected, - 'should ' + testCase.should - ); - } - }); -}); - -test('should use the postcss plugin api', function(t) { - t.plan(2); - t.ok(plugin().postcssVersion, 'should be able to access version'); - t.equal(plugin().postcssPlugin, name, 'should be able to access name'); -}); diff --git a/test/index.js b/test/index.js new file mode 100644 index 0000000..5fdd892 --- /dev/null +++ b/test/index.js @@ -0,0 +1,701 @@ +"use strict"; + +const index = require("tape"); +const postcss = require("postcss"); +const plugin = require("../src"); +const name = require("../package.json").name; + +const tests = [ + { + should: "scope selectors", + input: ".foobar {}", + expected: ":local(.foobar) {}", + }, + { + should: "scope escaped selectors", + input: ".\\3A \\) {}", + expected: ":local(.\\3A \\)) {}", + }, + { + should: "scope ids", + input: "#foobar {}", + expected: ":local(#foobar) {}", + }, + { + should: "scope escaped ids", + input: "#\\#test {}", + expected: ":local(#\\#test) {}", + }, + { + should: "scope escaped ids (2)", + input: "#u-m\\00002b {}", + expected: ":local(#u-m\\00002b) {}", + }, + { + should: "scope multiple selectors", + input: ".foo, .baz {}", + expected: ":local(.foo), :local(.baz) {}", + }, + { + should: "scope sibling selectors", + input: ".foo ~ .baz {}", + expected: ":local(.foo) ~ :local(.baz) {}", + }, + { + should: "scope psuedo elements", + input: ".foo:after {}", + expected: ":local(.foo):after {}", + }, + { + should: "scope media queries", + input: "@media only screen { .foo {} }", + expected: "@media only screen { :local(.foo) {} }", + }, + { + should: "allow narrow global selectors", + input: ":global(.foo .bar) {}", + expected: ".foo .bar {}", + }, + { + should: "allow narrow local selectors", + input: ":local(.foo .bar) {}", + expected: ":local(.foo) :local(.bar) {}", + }, + { + should: "allow broad global selectors", + input: ":global .foo .bar {}", + expected: ".foo .bar {}", + }, + { + should: "allow broad local selectors", + input: ":local .foo .bar {}", + expected: ":local(.foo) :local(.bar) {}", + }, + { + should: "allow multiple narrow global selectors", + input: ":global(.foo), :global(.bar) {}", + expected: ".foo, .bar {}", + }, + { + should: "allow multiple broad global selectors", + input: ":global .foo, :global .bar {}", + expected: ".foo, .bar {}", + }, + { + should: "allow multiple broad local selectors", + input: ":local .foo, :local .bar {}", + expected: ":local(.foo), :local(.bar) {}", + }, + { + should: "allow narrow global selectors nested inside local styles", + input: ".foo :global(.foo .bar) {}", + expected: ":local(.foo) .foo .bar {}", + }, + { + should: "allow broad global selectors nested inside local styles", + input: ".foo :global .foo .bar {}", + expected: ":local(.foo) .foo .bar {}", + }, + { + should: "allow parentheses inside narrow global selectors", + input: ".foo :global(.foo:not(.bar)) {}", + expected: ":local(.foo) .foo:not(.bar) {}", + }, + { + should: "allow parentheses inside narrow local selectors", + input: ".foo :local(.foo:not(.bar)) {}", + expected: ":local(.foo) :local(.foo):not(:local(.bar)) {}", + }, + { + should: "allow narrow global selectors appended to local styles", + input: ".foo:global(.foo.bar) {}", + expected: ":local(.foo).foo.bar {}", + }, + { + should: "ignore selectors that are already local", + input: ":local(.foobar) {}", + expected: ":local(.foobar) {}", + }, + { + should: "ignore nested selectors that are already local", + input: ":local(.foo) :local(.bar) {}", + expected: ":local(.foo) :local(.bar) {}", + }, + { + should: "ignore multiple selectors that are already local", + input: ":local(.foo), :local(.bar) {}", + expected: ":local(.foo), :local(.bar) {}", + }, + { + should: "ignore sibling selectors that are already local", + input: ":local(.foo) ~ :local(.bar) {}", + expected: ":local(.foo) ~ :local(.bar) {}", + }, + { + should: "ignore psuedo elements that are already local", + input: ":local(.foo):after {}", + expected: ":local(.foo):after {}", + }, + { + should: "trim whitespace after empty broad selector", + input: ".bar :global :global {}", + expected: ":local(.bar) {}", + }, + { + should: "broad global should be limited to selector", + input: ":global .foo, .bar :global, .foobar :global {}", + expected: ".foo, :local(.bar), :local(.foobar) {}", + }, + { + should: "broad global should be limited to nested selector", + input: ".foo:not(:global .bar).foobar {}", + expected: ":local(.foo):not(.bar):local(.foobar) {}", + }, + { + should: "broad global and local should allow switching", + input: ".foo :global .bar :local .foobar :local .barfoo {}", + expected: ":local(.foo) .bar :local(.foobar) :local(.barfoo) {}", + }, + { + should: "localize a single animation-name", + input: ".foo { animation-name: bar; }", + expected: ":local(.foo) { animation-name: :local(bar); }", + }, + { + should: "not localize a single animation-delay", + input: ".foo { animation-delay: 1s; }", + expected: ":local(.foo) { animation-delay: 1s; }", + }, + { + should: "localize multiple animation-names", + input: ".foo { animation-name: bar, foobar; }", + expected: ":local(.foo) { animation-name: :local(bar), :local(foobar); }", + }, + { + should: "localize animation", + input: ".foo { animation: bar 5s, foobar; }", + expected: ":local(.foo) { animation: :local(bar) 5s, :local(foobar); }", + }, + { + should: "localize animation with vendor prefix", + input: ".foo { -webkit-animation: bar; animation: bar; }", + expected: + ":local(.foo) { -webkit-animation: :local(bar); animation: :local(bar); }", + }, + { + should: "not localize other rules", + input: '.foo { content: "animation: bar;" }', + expected: ':local(.foo) { content: "animation: bar;" }', + }, + { + should: "not localize global rules", + input: ":global .foo { animation: foo; animation-name: bar; }", + expected: ".foo { animation: foo; animation-name: bar; }", + }, + { + should: "handle a complex animation rule", + input: + ".foo { animation: foo, bar 5s linear 2s infinite alternate, barfoo 1s; }", + expected: + ":local(.foo) { animation: :local(foo), :local(bar) 5s linear 2s infinite alternate, :local(barfoo) 1s; }", + }, + { + should: "handle animations where the first value is not the animation name", + input: ".foo { animation: 1s foo; }", + expected: ":local(.foo) { animation: 1s :local(foo); }", + }, + { + should: + "handle animations where the first value is not the animation name whilst also using keywords", + input: ".foo { animation: 1s normal ease-out infinite foo; }", + expected: + ":local(.foo) { animation: 1s normal ease-out infinite :local(foo); }", + }, + { + should: + "not treat animation curve as identifier of animation name even if it separated by comma", + input: + ".foo { animation: slide-right 300ms forwards ease-out, fade-in 300ms forwards ease-out; }", + expected: + ":local(.foo) { animation: :local(slide-right) 300ms forwards ease-out, :local(fade-in) 300ms forwards ease-out; }", + }, + { + should: + 'not treat "start" and "end" keywords in steps() function as identifiers', + input: [ + ".foo { animation: spin 1s steps(12, end) infinite; }", + ".foo { animation: spin 1s STEPS(12, start) infinite; }", + ".foo { animation: spin 1s steps(12, END) infinite; }", + ".foo { animation: spin 1s steps(12, START) infinite; }", + ].join("\n"), + expected: [ + ":local(.foo) { animation: :local(spin) 1s steps(12, end) infinite; }", + ":local(.foo) { animation: :local(spin) 1s STEPS(12, start) infinite; }", + ":local(.foo) { animation: :local(spin) 1s steps(12, END) infinite; }", + ":local(.foo) { animation: :local(spin) 1s steps(12, START) infinite; }", + ].join("\n"), + }, + { + should: "handle animations with custom timing functions", + input: + ".foo { animation: 1s normal cubic-bezier(0.25, 0.5, 0.5. 0.75) foo; }", + expected: + ":local(.foo) { animation: 1s normal cubic-bezier(0.25, 0.5, 0.5. 0.75) :local(foo); }", + }, + { + should: "handle animations whose names are keywords", + input: ".foo { animation: 1s infinite infinite; }", + expected: ":local(.foo) { animation: 1s infinite :local(infinite); }", + }, + { + should: 'handle not localize an animation shorthand value of "inherit"', + input: ".foo { animation: inherit; }", + expected: ":local(.foo) { animation: inherit; }", + }, + { + should: 'handle "constructor" as animation name', + input: ".foo { animation: constructor constructor; }", + expected: + ":local(.foo) { animation: :local(constructor) :local(constructor); }", + }, + { + should: "default to global when mode provided", + input: ".foo {}", + options: { mode: "global" }, + expected: ".foo {}", + }, + { + should: "default to local when mode provided", + input: ".foo {}", + options: { mode: "local" }, + expected: ":local(.foo) {}", + }, + { + should: "use correct spacing", + input: [ + ".a :local .b {}", + ".a:local.b {}", + ".a:local(.b) {}", + ".a:local( .b ) {}", + ".a :local(.b) {}", + ".a :local( .b ) {}", + ":local(.a).b {}", + ":local( .a ).b {}", + ":local(.a) .b {}", + ":local( .a ) .b {}", + ].join("\n"), + options: { mode: "global" }, + expected: [ + ".a :local(.b) {}", + ".a:local(.b) {}", + ".a:local(.b) {}", + ".a:local(.b) {}", + ".a :local(.b) {}", + ".a :local(.b) {}", + ":local(.a).b {}", + ":local(.a).b {}", + ":local(.a) .b {}", + ":local(.a) .b {}", + ].join("\n"), + }, + { + should: "localize keyframes", + input: "@keyframes foo { from { color: red; } to { color: blue; } }", + expected: + "@keyframes :local(foo) { from { color: red; } to { color: blue; } }", + }, + { + should: "localize keyframes in global default mode", + input: "@keyframes foo {}", + options: { mode: "global" }, + expected: "@keyframes foo {}", + }, + { + should: "localize explicit keyframes", + input: + "@keyframes :local(foo) { 0% { color: red; } 33.3% { color: yellow; } 100% { color: blue; } } @-webkit-keyframes :global(bar) { from { color: red; } to { color: blue; } }", + expected: + "@keyframes :local(foo) { 0% { color: red; } 33.3% { color: yellow; } 100% { color: blue; } } @-webkit-keyframes bar { from { color: red; } to { color: blue; } }", + }, + { + should: "ignore :export statements", + input: ":export { foo: __foo; }", + expected: ":export { foo: __foo; }", + }, + { + should: "ignore :import statemtents", + input: ':import("~/lol.css") { foo: __foo; }', + expected: ':import("~/lol.css") { foo: __foo; }', + }, + { + should: "incorrectly handle nested selectors", + input: ".bar:not(:global .foo, .baz) {}", + expected: ":local(.bar):not(.foo, .baz) {}", + }, + { + should: "compile in pure mode", + input: ':global(.foo).bar, [type="radio"] ~ .label, :not(.foo), #bar {}', + options: { mode: "pure" }, + expected: + '.foo:local(.bar), [type="radio"] ~ :local(.label), :not(:local(.foo)), :local(#bar) {}', + }, + { + should: "compile explict global element", + input: ":global(input) {}", + expected: "input {}", + }, + { + should: "compile explict global attribute", + input: ':global([type="radio"]), :not(:global [type="radio"]) {}', + expected: '[type="radio"], :not([type="radio"]) {}', + }, + { + should: "throw on invalid mode", + input: "", + options: { mode: "???" }, + error: /"global", "local" or "pure"/, + }, + { + should: "throw on inconsistent selector result", + input: ":global .foo, .bar {}", + error: /Inconsistent/, + }, + { + should: "throw on nested :locals", + input: ":local(:local(.foo)) {}", + error: /is not allowed inside/, + }, + { + should: "throw on nested :globals", + input: ":global(:global(.foo)) {}", + error: /is not allowed inside/, + }, + { + should: "throw on nested mixed", + input: ":local(:global(.foo)) {}", + error: /is not allowed inside/, + }, + { + should: "throw on nested broad :local", + input: ":global(:local .foo) {}", + error: /is not allowed inside/, + }, + { + should: "throw on incorrect spacing with broad :global", + input: ".foo :global.bar {}", + error: /Missing whitespace after :global/, + }, + { + should: "throw on incorrect spacing with broad :local", + input: ".foo:local .bar {}", + error: /Missing whitespace before :local/, + }, + { + should: "throw on not pure selector (global class)", + input: ":global(.foo) {}", + options: { mode: "pure" }, + error: /":global\(\.foo\)" is not pure/, + }, + { + should: "throw on not pure selector (with multiple 1)", + input: ".foo, :global(.bar) {}", + options: { mode: "pure" }, + error: /".foo, :global\(\.bar\)" is not pure/, + }, + { + should: "throw on not pure selector (with multiple 2)", + input: ":global(.bar), .foo {}", + options: { mode: "pure" }, + error: /":global\(\.bar\), .foo" is not pure/, + }, + { + should: "throw on not pure selector (element)", + input: "input {}", + options: { mode: "pure" }, + error: /"input" is not pure/, + }, + { + should: "throw on not pure selector (attribute)", + input: '[type="radio"] {}', + options: { mode: "pure" }, + error: /"\[type="radio"\]" is not pure/, + }, + { + should: "throw on not pure keyframes", + input: "@keyframes :global(foo) {}", + options: { mode: "pure" }, + error: /@keyframes :global\(\.\.\.\) is not allowed in pure mode/, + }, + { + should: "pass through global element", + input: "input {}", + expected: "input {}", + }, + { + should: "localise class and pass through element", + input: ".foo input {}", + expected: ":local(.foo) input {}", + }, + { + should: "pass through attribute selector", + input: '[type="radio"] {}', + expected: '[type="radio"] {}', + }, + { + should: "not modify urls without option", + input: + ".a { background: url(./image.png); }\n" + + ":global .b { background: url(image.png); }\n" + + '.c { background: url("./image.png"); }', + expected: + ":local(.a) { background: url(./image.png); }\n" + + ".b { background: url(image.png); }\n" + + ':local(.c) { background: url("./image.png"); }', + }, + { + should: "rewrite url in local block", + input: + ".a { background: url(./image.png); }\n" + + ":global .b { background: url(image.png); }\n" + + '.c { background: url("./image.png"); }\n' + + ".c { background: url('./image.png'); }\n" + + '.d { background: -webkit-image-set(url("./image.png") 1x, url("./image2x.png") 2x); }\n' + + '@font-face { src: url("./font.woff"); }\n' + + '@-webkit-font-face { src: url("./font.woff"); }\n' + + '@media screen { .a { src: url("./image.png"); } }\n' + + '@keyframes :global(ani1) { 0% { src: url("image.png"); } }\n' + + '@keyframes ani2 { 0% { src: url("./image.png"); } }\n' + + "foo { background: end-with-url(something); }", + options: { + rewriteUrl: function (global, url) { + const mode = global ? "global" : "local"; + return "(" + mode + ")" + url + '"' + mode + '"'; + }, + }, + expected: + ':local(.a) { background: url((local\\)./image.png\\"local\\"); }\n' + + '.b { background: url((global\\)image.png\\"global\\"); }\n' + + ':local(.c) { background: url("(local)./image.png\\"local\\""); }\n' + + ":local(.c) { background: url('(local)./image.png\"local\"'); }\n" + + ':local(.d) { background: -webkit-image-set(url("(local)./image.png\\"local\\"") 1x, url("(local)./image2x.png\\"local\\"") 2x); }\n' + + '@font-face { src: url("(local)./font.woff\\"local\\""); }\n' + + '@-webkit-font-face { src: url("(local)./font.woff\\"local\\""); }\n' + + '@media screen { :local(.a) { src: url("(local)./image.png\\"local\\""); } }\n' + + '@keyframes ani1 { 0% { src: url("(global)image.png\\"global\\""); } }\n' + + '@keyframes :local(ani2) { 0% { src: url("(local)./image.png\\"local\\""); } }\n' + + "foo { background: end-with-url(something); }", + }, + { + should: "not crash on atrule without nodes", + input: '@charset "utf-8";', + expected: '@charset "utf-8";', + }, + { + should: "not crash on a rule without nodes", + input: (function () { + const inner = postcss.rule({ selector: ".b", ruleWithoutBody: true }); + const outer = postcss.rule({ selector: ".a" }).push(inner); + const root = postcss.root().push(outer); + inner.nodes = undefined; + return root; + })(), + // postcss-less's stringify would honor `ruleWithoutBody` and omit the trailing `{}` + expected: ":local(.a) {\n :local(.b) {}\n}", + }, + { + should: "not break unicode characters", + input: '.a { content: "\\2193" }', + expected: ':local(.a) { content: "\\2193" }', + }, + { + should: "not break unicode characters", + input: '.a { content: "\\2193\\2193" }', + expected: ':local(.a) { content: "\\2193\\2193" }', + }, + { + should: "not break unicode characters", + input: '.a { content: "\\2193 \\2193" }', + expected: ':local(.a) { content: "\\2193 \\2193" }', + }, + { + should: "not break unicode characters", + input: '.a { content: "\\2193\\2193\\2193" }', + expected: ':local(.a) { content: "\\2193\\2193\\2193" }', + }, + { + should: "not break unicode characters", + input: '.a { content: "\\2193 \\2193 \\2193" }', + expected: ':local(.a) { content: "\\2193 \\2193 \\2193" }', + }, + { + should: "not ignore custom property set", + input: + ":root { --title-align: center; --sr-only: { position: absolute; } }", + expected: + ":root { --title-align: center; --sr-only: { position: absolute; } }", + }, + /** + * Imported aliases + */ + { + should: "not localize imported alias", + input: ` + :import(foo) { a_value: some-value; } + + .foo > .a_value { } + `, + expected: ` + :import(foo) { a_value: some-value; } + + :local(.foo) > .a_value { } + `, + }, + { + should: "not localize nested imported alias", + input: ` + :import(foo) { a_value: some-value; } + + .foo > .a_value > .bar { } + `, + expected: ` + :import(foo) { a_value: some-value; } + + :local(.foo) > .a_value > :local(.bar) { } + `, + }, + + { + should: "ignore imported in explicit local", + input: ` + :import(foo) { a_value: some-value; } + + :local(.a_value) { } + `, + expected: ` + :import(foo) { a_value: some-value; } + + :local(.a_value) { } + `, + }, + { + should: "escape local context with explict global", + input: ` + :import(foo) { a_value: some-value; } + + :local .foo :global(.a_value) .bar { } + `, + expected: ` + :import(foo) { a_value: some-value; } + + :local(.foo) .a_value :local(.bar) { } + `, + }, + { + should: "respect explicit local", + input: ` + :import(foo) { a_value: some-value; } + + .a_value :local .a_value .foo :global .a_value { } + `, + expected: ` + :import(foo) { a_value: some-value; } + + .a_value :local(.a_value) :local(.foo) .a_value { } + `, + }, + { + should: "not localize imported animation-name", + input: ` + :import(file) { a_value: some-value; } + + .foo { animation-name: a_value; } + `, + expected: ` + :import(file) { a_value: some-value; } + + :local(.foo) { animation-name: a_value; } + `, + }, + { + should: "throw on invalid syntax id usage", + input: ". {}", + error: /Invalid class or id selector syntax/, + }, + { + should: "throw on invalid syntax class usage", + input: "# {}", + error: /Invalid class or id selector syntax/, + }, + { + should: "throw on invalid syntax local class usage", + input: ":local(.) {}", + error: /Invalid class or id selector syntax/, + }, + { + should: "throw on invalid syntax local id usage", + input: ":local(#) {}", + error: /Invalid class or id selector syntax/, + }, + { + should: "throw on invalid global class usage", + input: ":global(.) {}", + error: /Invalid class or id selector syntax/, + }, + { + should: "throw on invalid global class usage", + input: ":global(#) {}", + error: /Invalid class or id selector syntax/, + }, + /* + Bug in postcss-selector-parser + { + should: 'throw on invalid global class usage', + input: ':global() {}', + error: /:global\(\) can't be empty/ + }, + */ + { + should: "consider :import statements pure", + input: ':import("~/lol.css") { foo: __foo; }', + options: { mode: "pure" }, + expected: ':import("~/lol.css") { foo: __foo; }', + }, + { + should: "consider :export statements pure", + input: ":export { foo: __foo; }", + options: { mode: "pure" }, + expected: ":export { foo: __foo; }", + }, +]; + +function process(css, options) { + return postcss(plugin(options)).process(css).css; +} + +index(name, function (t) { + t.plan(tests.length); + + tests.forEach(function (testCase) { + const options = testCase.options; + if (testCase.error) { + t.throws( + function () { + process(testCase.input, options); + }, + testCase.error, + "should " + testCase.should + ); + } else { + t.equal( + process(testCase.input, options), + testCase.expected, + "should " + testCase.should + ); + } + }); +}); + +index("should use the postcss plugin api", function (t) { + t.plan(1); + t.equal(plugin().postcssPlugin, name, "should be able to access name"); +}); diff --git a/yarn.lock b/yarn.lock index 3dc1b3c..bc79c58 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18,6 +18,27 @@ esutils "^2.0.2" js-tokens "^4.0.0" +"@eslint/eslintrc@^0.1.3": + version "0.1.3" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.1.3.tgz#7d1a2b2358552cc04834c0979bd4275362e37085" + integrity sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA== + 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" + lodash "^4.17.19" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + +"@types/color-name@^1.1.1": + version "1.1.1" + resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0" + integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ== + abbrev@1: version "1.1.1" resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" @@ -28,15 +49,25 @@ abbrev@1.0.x: resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.0.9.tgz#91b4792588a7738c25f35dd6f63752a2f8776135" integrity sha1-kbR5JYinc4wl813W9jdSovh3YTU= -acorn-jsx@^5.0.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.2.0.tgz#4c66069173d6fdd68ed85239fc256226182b2ebe" - integrity sha512-HiUX/+K2YpkpJ+SzBffkM/AQ2YE03S0U1kjTLVpoJdhZMOWy8qvXVN9JdLqv2QsaQ6MPYQIuNmwD8zOiYUofLQ== +acorn-jsx@^5.2.0: + 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.0" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.0.tgz#e1ad486e6c54501634c6c397c5c121daa383607c" + integrity sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w== -acorn@^6.0.7: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== +ajv@^6.10.0, ajv@^6.12.4: + version "6.12.5" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.5.tgz#19b0e8bae8f476e5ba666300387775fb1a00a4da" + integrity sha512-lRF8RORchjpKG50/WFf8xmg7sgCLFiYNNnqdKflk63whMQcWR5ngGjiSXkL9bjxy6B2npOK2HSMN49jEBMSkag== + 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@^6.5.5, ajv@^6.9.1: version "6.10.0" @@ -53,21 +84,21 @@ amdefine@>=0.0.4: resolved "https://registry.yarnpkg.com/amdefine/-/amdefine-1.0.1.tgz#4a5282ac164729e93619bcfd3ad151f817ce91f5" integrity sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU= -ansi-escapes@^3.2.0: - version "3.2.0" - resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-3.2.0.tgz#8780b98ff9dbf5638152d1f1fe5c1d7b4442976b" - integrity sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ== - -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-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-regex@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-4.1.0.tgz#8b9f8f08cf1acb843756a839ca8c7e3168c51997" integrity sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg== +ansi-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-styles@^3.2.0, ansi-styles@^3.2.1: version "3.2.1" resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-3.2.1.tgz#41fbb20243e50b12be0f04b8dedbf07520ce841d" @@ -75,13 +106,21 @@ ansi-styles@^3.2.0, ansi-styles@^3.2.1: dependencies: color-convert "^1.9.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== +ansi-styles@^4.1.0: + version "4.2.1" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.2.1.tgz#90ae75c424d008d2624c5bf29ead3177ebfcf359" + integrity sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA== + dependencies: + "@types/color-name" "^1.1.1" + color-convert "^2.0.1" + +anymatch@~3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-3.1.1.tgz#c55ecf02185e2469259399310c173ce31233b142" + integrity sha512-mM8522psRCqzV+6LhomX5wgp25YVibjh8Wj23I5RPkPppSVSjyKD2A2mBJmWGa+KN7f2D6LNh9jkBCeyLktzjg== dependencies: - micromatch "^3.1.4" - normalize-path "^2.1.1" + normalize-path "^3.0.0" + picomatch "^2.0.4" argparse@^1.0.7: version "1.0.10" @@ -90,31 +129,11 @@ argparse@^1.0.7: dependencies: sprintf-js "~1.0.2" -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-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-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-filter@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/array-filter/-/array-filter-1.0.0.tgz#baf79e62e6ef4c2a4c0b831232daffec251f9d83" integrity sha1-uveeYubvTCpMC4MSMtr/7CUfnYM= -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= - asn1@0.1.11: version "0.1.11" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.1.11.tgz#559be18376d08a4ec4dbe80877d27818639b2df7" @@ -137,21 +156,11 @@ assert-plus@^0.1.5: resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.1.5.tgz#ee74009413002d84cec7219c6ac811812e723160" integrity sha1-7nQAlBMALYTOxyGcasgRgS5yMWA= -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@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" integrity sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg== -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@1.x: version "1.5.2" resolved "https://registry.yarnpkg.com/async/-/async-1.5.2.tgz#ec6a61ae56480c0c3cb241c95618e20892f9672a" @@ -167,11 +176,6 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= -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== - available-typed-arrays@^1.0.0, available-typed-arrays@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/available-typed-arrays/-/available-typed-arrays-1.0.2.tgz#6b098ca9d8039079ee3f77f7b783c4480ba513f5" @@ -199,19 +203,6 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= -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" - bcrypt-pbkdf@^1.0.0: version "1.0.2" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" @@ -219,17 +210,10 @@ bcrypt-pbkdf@^1.0.0: dependencies: tweetnacl "^0.14.3" -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== - -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" +binary-extensions@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-2.1.0.tgz#30fa40c9e7fe07dbc895678cd287024dea241dd9" + integrity sha512-1Yj8h9Q+QDF5FzhMs/c9+6UntbD5MkRfRwac8DoEm9ZfUBZ7tZ55YcGVAzEe4bXsdQHEk+s9S5wsOKVdZrw0tQ== bl@~0.9.0: version "0.9.5" @@ -238,11 +222,6 @@ bl@~0.9.0: dependencies: readable-stream "~1.0.26" -bluebird@3.5.5: - version "3.5.5" - resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.5.tgz#a8d0afd73251effbbd5fe384a77d73003c17a71f" - integrity sha512-5am6HnnfN+urzt4yfg7IgTbotDjIT/u8AJpEt0sIU9FtXfVeezXAPKswrG+xKUCOYAINpSdgZVDU6QFh+cuH3w== - boom@0.4.x: version "0.4.2" resolved "https://registry.yarnpkg.com/boom/-/boom-0.4.2.tgz#7a636e9ded4efcefb19cef4947a3c67dfaee911b" @@ -258,36 +237,12 @@ brace-expansion@^1.1.7: balanced-match "^1.0.0" concat-map "0.0.1" -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" - -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" +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" callsites@^3.0.0: version "3.1.0" @@ -309,7 +264,7 @@ caseless@~0.6.0: resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.6.0.tgz#8167c1ab8397fb5bb95f96d28e5a81c50f247ac4" integrity sha1-gWfBq4OX+1u5X5bSjlqBxQ8kesQ= -chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: +chalk@^2.0.0, chalk@^2.4.2: version "2.4.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-2.4.2.tgz#cd42541677a54333cf541a49108c1432b44c9424" integrity sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ== @@ -318,61 +273,38 @@ chalk@^2.0.0, chalk@^2.1.0, chalk@^2.4.2: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chardet@^0.7.0: - version "0.7.0" - resolved "https://registry.yarnpkg.com/chardet/-/chardet-0.7.0.tgz#90094849f0937f2eedc2425d0d28a9e5f0cbad9e" - integrity sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA== - -chokidar-cli@^1.2.3: - version "1.2.3" - resolved "https://registry.yarnpkg.com/chokidar-cli/-/chokidar-cli-1.2.3.tgz#28fe28da1c3a12b444f52ddbe8a472358a32279f" - integrity sha512-HcHjqeQaT/u0Swy4eaqqg0NhPjsXq6ZN9YzP48EYc81FXBLQuvMXBsrEMDkgH+Puup1mBc0gD0qqECDy/WiMOA== - dependencies: - bluebird "3.5.5" - chokidar "2.1.5" - lodash "4.17.15" - yargs "13.3.0" - -chokidar@2.1.5: - version "2.1.5" - resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-2.1.5.tgz#0ae8434d962281a5f56c72869e79cb6d9d86ad4d" - integrity sha512-i0TprVWp+Kj4WRPtInjexJ8Q+BqTE909VpH8xVhXrJkoc5QC8VO9TryGOqTr+2hljzc1sC62t22h5tZePodM/A== - 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-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== +chalk@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== dependencies: - arr-union "^3.1.0" - define-property "^0.2.5" - isobject "^3.0.0" - static-extend "^0.1.1" + ansi-styles "^4.1.0" + supports-color "^7.1.0" -cli-cursor@^2.1.0: +chokidar-cli@^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-width@^2.0.0: - version "2.2.1" - resolved "https://registry.yarnpkg.com/cli-width/-/cli-width-2.2.1.tgz#b0433d0b4e9c847ef18868a4ef16fd5fc8271c48" - integrity sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw== + resolved "https://registry.yarnpkg.com/chokidar-cli/-/chokidar-cli-2.1.0.tgz#2491df133bd62cd145227b1746fbd94f2733e1bc" + integrity sha512-6n21AVpW6ywuEPoxJcLXMA2p4T+SLjWsXKny/9yTWFz0kKxESI3eUylpeV97LylING/27T/RVTY0f2/0QaWq9Q== + dependencies: + chokidar "^3.2.3" + lodash.debounce "^4.0.8" + lodash.throttle "^4.1.1" + yargs "^13.3.0" + +chokidar@^3.2.3: + version "3.4.2" + resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-3.4.2.tgz#38dc8e658dec3809741eb3ef7bb0a47fe424232d" + integrity sha512-IZHaDeBeI+sZJRX7lGcXsdzgvZqKv6sECqsbErJA4mHWfpRrD8B97kSFN4cQz6nGBGiuFia1MKR4d6c1o8Cv7A== + 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.4.0" + optionalDependencies: + fsevents "~2.1.2" cliui@^5.0.0: version "5.0.0" @@ -391,14 +323,6 @@ codecov.io@^0.1.6: request "2.42.0" urlgrey "0.4.0" -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" @@ -406,11 +330,28 @@ color-convert@^1.9.0: 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== + +colorette@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/colorette/-/colorette-1.2.1.tgz#4d0b921325c14faf92633086a536db6e89564b1b" + integrity sha512-puCDz0CzydiSYOrnXpz/PKd69zRrribezjtE9yd4zvytoRc8+RY/KJPvtPFKZS3E3wP6neGyMe0vOTlHO5L3Pw== + combined-stream@^1.0.6, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" @@ -425,21 +366,11 @@ combined-stream@~0.0.4: dependencies: delayed-stream "0.0.5" -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== - 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= -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= - core-util-is@1.0.2, 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" @@ -456,16 +387,14 @@ coveralls@^3.1.0: minimist "^1.2.5" request "^2.88.2" -cross-spawn@^6.0.5: - version "6.0.5" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" - integrity sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ== +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: - nice-try "^1.0.4" - path-key "^2.0.1" - semver "^5.5.0" - shebang-command "^1.2.0" - which "^1.2.9" + path-key "^3.1.0" + shebang-command "^2.0.0" + which "^2.0.1" cryptiles@0.2.x: version "0.2.2" @@ -491,14 +420,7 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -debug@^2.2.0, debug@^2.3.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@^4.0.1: +debug@^4.0.1, debug@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/debug/-/debug-4.1.1.tgz#3b72260255109c6b589cee050f1d516139664791" integrity sha512-pYAIzeRo8J6KPEaJ0VWOh5Pzkbw/RetuzehGM7QRRX5he4fPHx2rdKMB256ehJCkX+XRQm16eZLqLNS8RSZXZw== @@ -510,11 +432,6 @@ decamelize@^1.2.0: resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= -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= - deep-equal@^2.0.3: version "2.0.3" resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-2.0.3.tgz#cad1c15277ad78a5c01c49c2dee0f54de8a6a7b0" @@ -540,7 +457,7 @@ deep-equal@~0.1.0: resolved "https://registry.yarnpkg.com/deep-equal/-/deep-equal-0.1.2.tgz#b246c2b80a570a47c11be1d9bd1070ec878b87ce" integrity sha1-skbCuApXCkfBG+HZvRBw7IeLh84= -deep-is@~0.1.3: +deep-is@^0.1.3, 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= @@ -552,28 +469,6 @@ define-properties@^1.1.2, define-properties@^1.1.3: 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" - defined@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/defined/-/defined-1.0.0.tgz#c98d9bcef75674188e110969151199e39b1fa693" @@ -626,6 +521,13 @@ emoji-regex@^7.0.1: resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-7.0.3.tgz#933a04052860c85e83c122479c4748a8e4c72156" integrity sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA== +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" + es-abstract@^1.17.0-next.1, es-abstract@^1.17.4, es-abstract@^1.17.5: version "1.17.6" resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.17.6.tgz#9142071707857b2cacc7b89ecb670316c3e2d52a" @@ -682,76 +584,77 @@ escodegen@1.8.x: optionalDependencies: source-map "~0.2.0" -eslint-scope@^4.0.3: - version "4.0.3" - resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-4.0.3.tgz#ca03833310f6889a3264781aa82e63eb9cfe7848" - integrity sha512-p7VutNr1O/QrxysMo3E45FjYDTeXBy0iTltPFNSqKAIfjDSXC+4dj+qfyuD8bfAXrW/y6lW3O76VaYNPKfpKrg== +eslint-scope@^5.1.0: + 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.1.0" + esrecurse "^4.3.0" estraverse "^4.1.1" -eslint-utils@^1.3.1: - version "1.4.3" - resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-1.4.3.tgz#74fec7c54d0776b6f67e0251040b5806564e981f" - integrity sha512-fbBN5W2xdY45KulGXmLHZ3c3FHfVYmKg0IrAKGOkT/464PQsx2UeIzfz1RmEci+KLm1bBaAzZAh8+/E+XAeZ8Q== +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.0.0, 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@^5.16.0: - version "5.16.0" - resolved "https://registry.yarnpkg.com/eslint/-/eslint-5.16.0.tgz#a1e3ac1aae4a3fbd8296fcf8f7ab7314cbb6abea" - integrity sha512-S3Rz11i7c8AA5JPv7xAH+dOyq/Cu/VXHiHXBPOU1k/JAM5dXqQPt3qcrhpHSorXmrpu2g0gkIBVXAqCpzfoZIg== +eslint@^7.9.0: + version "7.9.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.9.0.tgz#522aeccc5c3a19017cf0cb46ebfd660a79acf337" + integrity sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA== dependencies: "@babel/code-frame" "^7.0.0" - ajv "^6.9.1" - chalk "^2.1.0" - cross-spawn "^6.0.5" + "@eslint/eslintrc" "^0.1.3" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" debug "^4.0.1" doctrine "^3.0.0" - eslint-scope "^4.0.3" - eslint-utils "^1.3.1" - eslint-visitor-keys "^1.0.0" - espree "^5.0.1" - esquery "^1.0.1" + enquirer "^2.3.5" + eslint-scope "^5.1.0" + eslint-utils "^2.1.0" + eslint-visitor-keys "^1.3.0" + espree "^7.3.0" + esquery "^1.2.0" esutils "^2.0.2" file-entry-cache "^5.0.1" functional-red-black-tree "^1.0.1" - glob "^7.1.2" - globals "^11.7.0" + glob-parent "^5.0.0" + globals "^12.1.0" ignore "^4.0.6" import-fresh "^3.0.0" imurmurhash "^0.1.4" - inquirer "^6.2.2" - js-yaml "^3.13.0" + is-glob "^4.0.0" + js-yaml "^3.13.1" json-stable-stringify-without-jsonify "^1.0.1" - levn "^0.3.0" - lodash "^4.17.11" + levn "^0.4.1" + lodash "^4.17.19" minimatch "^3.0.4" - mkdirp "^0.5.1" natural-compare "^1.4.0" - optionator "^0.8.2" - path-is-inside "^1.0.2" + optionator "^0.9.1" progress "^2.0.0" - regexpp "^2.0.1" - semver "^5.5.1" - strip-ansi "^4.0.0" - strip-json-comments "^2.0.1" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" table "^5.2.3" text-table "^0.2.0" + v8-compile-cache "^2.0.3" -espree@^5.0.1: - version "5.0.1" - resolved "https://registry.yarnpkg.com/espree/-/espree-5.0.1.tgz#5d6526fa4fc7f0788a5cf75b15f30323e2f81f7a" - integrity sha512-qWAZcWh4XE/RwzLJejfcofscgMc9CamR6Tn1+XRXNzrvUSSbiAjGOI/fggztjIi7y9VLPqnICMIPiGyr8JaZ0A== +espree@^7.3.0: + version "7.3.0" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.0.tgz#dc30437cf67947cf576121ebd780f15eeac72348" + integrity sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw== dependencies: - acorn "^6.0.7" - acorn-jsx "^5.0.0" - eslint-visitor-keys "^1.0.0" + acorn "^7.4.0" + acorn-jsx "^5.2.0" + eslint-visitor-keys "^1.3.0" esprima@2.7.x, esprima@^2.7.1: version "2.7.3" @@ -763,26 +666,26 @@ esprima@^4.0.0: resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -esquery@^1.0.1: +esquery@^1.2.0: version "1.3.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.3.1.tgz#b78b5828aa8e214e29fb74c4d5b752e1c033da57" integrity sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ== dependencies: estraverse "^5.1.0" -esrecurse@^4.1.0: - version "4.2.1" - resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.2.1.tgz#007a3b9fdbc2b3bb87e4879ea19c92fdbd3942cf" - integrity sha512-64RBB++fIOAXPw3P9cy89qfMlvZEXZkqqJkjqqXIvzP5ezRZjW+lPWjw35UX/3EhUPFYbg5ER4JYgDw4007/DQ== +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 "^4.1.0" + estraverse "^5.2.0" estraverse@^1.9.1: version "1.9.3" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-1.9.3.tgz#af67f2dc922582415950926091a4005d29c9bb44" integrity sha1-r2fy3JIlgkFZUJJgkaQAXSnJu0Q= -estraverse@^4.1.0, estraverse@^4.1.1: +estraverse@^4.1.1: version "4.2.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.2.0.tgz#0dee3fed31fcd469618ce7342099fc1afa0bdb13" integrity sha1-De4/7TH81GlhjOc0IJn8GvoL2xM= @@ -792,67 +695,21 @@ estraverse@^5.1.0: resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.1.0.tgz#374309d39fd935ae500e7b92e8a6b4c720e59642" integrity sha512-FyohXK+R0vE+y1nHLoBM7ZTyqRpqAlhdZHCWIWEviFLiGB8b04H6bQs8G+XTthacvT8VuwvteiP7RJSxMs8UEw== +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.2" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.2.tgz#0abf4f1caa5bcb1f7a9d8acc6dea4faaa04bac9b" integrity sha1-Cr9PHKpbyx96nYrMbepPqqBLrJs= -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" - -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.2: version "3.0.2" resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa" integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g== -external-editor@^3.0.3: - version "3.1.0" - resolved "https://registry.yarnpkg.com/external-editor/-/external-editor-3.1.0.tgz#cb03f740befae03ea4d283caed2741a83f335495" - integrity sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew== - dependencies: - chardet "^0.7.0" - iconv-lite "^0.4.24" - tmp "^0.0.33" - -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" - extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -868,23 +725,21 @@ fast-deep-equal@^2.0.1: resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-2.0.1.tgz#7b05218ddf9667bf7f370bf7fdb2cb15fdd0aa49" integrity sha1-ewUhjd+WZ79/Nwv3/bLLFf3Qqkk= +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.0.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.0.0.tgz#d5142c0caee6b1189f87d3a76111064f86c8bbf2" integrity sha1-1RQsDK7msRifh9OnYREGT4bIu/I= -fast-levenshtein@~2.0.4, fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.4: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= -figures@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/figures/-/figures-2.0.0.tgz#3ab1a2d2a62c8bfb431a0c94cb797a2fce27c962" - integrity sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI= - dependencies: - escape-string-regexp "^1.0.5" - file-entry-cache@^5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-5.0.1.tgz#ca0f6efa6dd3d561333fb14515065c2fafdf439c" @@ -892,20 +747,12 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" -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== - -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= +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: - extend-shallow "^2.0.1" - is-number "^3.0.0" - repeat-string "^1.6.1" - to-regex-range "^2.1.0" + to-regex-range "^5.0.1" find-up@^3.0.0: version "3.0.0" @@ -935,11 +782,6 @@ for-each@^0.3.3: dependencies: is-callable "^1.1.3" -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= - foreach@^2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/foreach/-/foreach-2.0.5.tgz#0bee005018aeb260d0a3af3ae658dd0136ec1b99" @@ -973,25 +815,15 @@ form-data@~2.3.2: combined-stream "^1.0.6" mime-types "^2.1.12" -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" - 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.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.1.2: + version "2.1.3" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.3.tgz#fb738703ae8d2f9fe900c33836ddebee8b97f23e" + integrity sha512-Auw9a4AxqWpa9GUfj370BMPzzyncfBABW8Mab7BGWBYDj4Isgq+cDKtx0i6u9jcX9pQDnswsaaOTgTmA5pEjuQ== function-bind@^1.1.1: version "1.1.1" @@ -1008,11 +840,6 @@ get-caller-file@^2.0.1: resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== -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= - getpass@^0.1.1: version "0.1.7" resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa" @@ -1020,13 +847,12 @@ getpass@^0.1.1: dependencies: assert-plus "^1.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= +glob-parent@^5.0.0, glob-parent@~5.1.0: + version "5.1.1" + resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.1.tgz#b6c1ef417c4e5663ea498f1c45afac6916bbc229" + integrity sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ== dependencies: - is-glob "^3.1.0" - path-dirname "^1.0.0" + is-glob "^4.0.1" glob@^5.0.15: version "5.0.15" @@ -1039,10 +865,10 @@ glob@^5.0.15: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.2, 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.1.3: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== dependencies: fs.realpath "^1.0.0" inflight "^1.0.4" @@ -1051,10 +877,10 @@ glob@^7.1.2, glob@^7.1.6: once "^1.3.0" path-is-absolute "^1.0.0" -glob@^7.1.3: - version "7.1.4" - resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" - integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== +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" @@ -1063,15 +889,12 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" -globals@^11.7.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== - -graceful-fs@^4.1.11: - version "4.2.4" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" - integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== +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" handlebars@^4.0.1: version "4.7.6" @@ -1108,6 +931,11 @@ has-flag@^3.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-3.0.0.tgz#b5d454dc2199ae225699f3467e5a07f3b955bafd" integrity sha1-tdRU3CGZriJWmfNGfloH87lVuv0= +has-flag@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" + integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== + has-symbols@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.0.tgz#ba1a8f1af2a0fc39650f5c850367704122063b44" @@ -1118,37 +946,6 @@ has-symbols@^1.0.1: resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.1.tgz#9f5214758a44196c406d9bd76cebf81ec2dd31e8" integrity sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg== -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-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@^1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" @@ -1189,13 +986,6 @@ http-signature@~1.2.0: jsprim "^1.2.2" sshpk "^1.7.0" -iconv-lite@^0.4.24: - version "0.4.24" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" - integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - icss-utils@^4.1.1: version "4.1.1" resolved "https://registry.yarnpkg.com/icss-utils/-/icss-utils-4.1.1.tgz#21170b53789ee27447c2f47dd683081403f9a467" @@ -1216,6 +1006,14 @@ import-fresh@^3.0.0: parent-module "^1.0.0" resolve-from "^4.0.0" +import-fresh@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.2.1.tgz#633ff618506e793af5ac91bf48b72677e15cbe66" + integrity sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ== + 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" @@ -1239,49 +1037,16 @@ inherits@2, inherits@~2.0.1: resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de" integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4= -inherits@^2.0.3, inherits@^2.0.4, inherits@~2.0.3: +inherits@^2.0.4: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== -inquirer@^6.2.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/inquirer/-/inquirer-6.5.2.tgz#ad50942375d036d327ff528c08bd5fab089928ca" - integrity sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ== - dependencies: - ansi-escapes "^3.2.0" - chalk "^2.4.2" - cli-cursor "^2.1.0" - cli-width "^2.0.0" - external-editor "^3.0.3" - figures "^2.0.0" - lodash "^4.17.12" - mute-stream "0.0.7" - run-async "^2.2.0" - rxjs "^6.4.0" - string-width "^2.1.0" - strip-ansi "^5.1.0" - through "^2.3.6" - ip-regex@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/ip-regex/-/ip-regex-2.1.0.tgz#fa78bf5d2e6913c911ce9f819ee5146bb6d844e9" integrity sha1-+ni/XS5pE8kRzp+BnuUUa7bYROk= -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.4: version "1.0.4" resolved "https://registry.yarnpkg.com/is-arguments/-/is-arguments-1.0.4.tgz#3faf966c7cba0ff437fb31f6250082fcf0448cf3" @@ -1292,23 +1057,18 @@ is-bigint@^1.0.0: resolved "https://registry.yarnpkg.com/is-bigint/-/is-bigint-1.0.0.tgz#73da8c33208d00f130e9b5e15d23eac9215601c4" integrity sha512-t5mGUXC/xRheCK431ylNiSkGGpBp8bHENBcENTkDT6ppwPzEVxNGZRvgvmOEfbWkFhA7D2GEuE2mmQTr78sl2g== -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= +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 "^1.0.0" + binary-extensions "^2.0.0" is-boolean-object@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/is-boolean-object/-/is-boolean-object-1.0.1.tgz#10edc0900dd127697a92f6f9807c7617d68ac48e" integrity sha512-TqZuVwa/sppcrhUCAYkGBk7w0yxfQQnxq28fjkO53tnK9FQXmdwz2JS5+GjsWQ6RByES1K40nI+yDic5c9/aAQ== -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-callable@^1.1.3, is-callable@^1.1.4: version "1.1.4" resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.1.4.tgz#1e1adf219e1eeb684d691f9d6a05ff0d30a24d75" @@ -1319,20 +1079,6 @@ is-callable@^1.2.0: resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.0.tgz#83336560b54a38e35e3a2df7afd0454d691468bb" integrity sha512-pyVD9AaGLxtg6srb2Ng6ynWJqkHU9bEM087AKck0w8QwDarTfNcpIYoU8x8Hv2Icm8u6kFJM18Dag8lyqGkviw== -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.1" resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.1.tgz#9aa20eb6aeebbff77fbd33e74ca01b33581d3a16" @@ -1343,37 +1089,7 @@ is-date-object@^1.0.2: resolved "https://registry.yarnpkg.com/is-date-object/-/is-date-object-1.0.2.tgz#bda736f2cd8fd06d32844e7743bfa7494c3bfd7e" integrity sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g== -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-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.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@^2.1.0, is-extglob@^2.1.1: +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= @@ -1383,14 +1099,7 @@ is-fullwidth-code-point@^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-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.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== @@ -1407,19 +1116,10 @@ is-number-object@^1.0.3: resolved "https://registry.yarnpkg.com/is-number-object/-/is-number-object-1.0.4.tgz#36ac95e741cf18b283fc1ddf5e83da798e3ec197" integrity sha512-zohwelOAur+5uXtk8O3GPQ1eAcu4ZX3UwxQhUlfFFMNpUd83gXgjbhJh6HmB6LUNV/ieOLQuDwJO3dWJosUeMw== -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-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-number@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" + integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== is-regex@^1.0.5, is-regex@^1.1.0: version "1.1.0" @@ -1470,17 +1170,12 @@ is-weakset@^2.0.1: resolved "https://registry.yarnpkg.com/is-weakset/-/is-weakset-2.0.1.tgz#e9a0af88dbd751589f5e50d80f4c98b780884f83" integrity sha512-pi4vhbhVHGLxohUw7PhGsueT4vRGFoXhP7+RGN0jKIv9+8PWYCQTqtADngrxOm2g46hoH0+g8uZZBzMrvVGDmw== -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: +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= @@ -1502,11 +1197,6 @@ isobject@^2.0.0: 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= - isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -1545,7 +1235,7 @@ js-yaml@3.x: argparse "^1.0.7" esprima "^4.0.0" -js-yaml@^3.13.0, js-yaml@^3.13.1: +js-yaml@^3.13.1: version "3.14.0" resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.0.tgz#a7a34170f26a21bb162424d8adacb4113a69e482" integrity sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A== @@ -1593,36 +1283,20 @@ jsprim@^1.2.2: json-schema "0.2.3" verror "1.10.0" -kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0: - 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: - 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: - 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== - lcov-parse@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/lcov-parse/-/lcov-parse-1.0.0.tgz#eb0d46b54111ebc561acb4c408ef9363bdc8f7e0" integrity sha1-6w1GtUER68VhrLTECO+TY73I9+A= -levn@^0.3.0, levn@~0.3.0: +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" + +levn@~0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/levn/-/levn-0.3.0.tgz#3b09924edf9f083c0490fdd4c0bc4421e04764ee" integrity sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4= @@ -1630,6 +1304,14 @@ levn@^0.3.0, levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +line-column@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/line-column/-/line-column-1.0.2.tgz#d25af2936b6f4849172b312e4792d1d987bc34a2" + integrity sha1-0lryk2tvSEkXKzEuR5LR2Ye8NKI= + dependencies: + isarray "^1.0.0" + isobject "^2.0.0" + locate-path@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" @@ -1638,57 +1320,31 @@ locate-path@^3.0.0: p-locate "^3.0.0" path-exists "^3.0.0" -lodash@4.17.15: - version "4.17.15" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.15.tgz#b447f6670a0455bbfeedd11392eff330ea097548" - integrity sha512-8xOcRHvCjnocdS5cpwXQXVzmmh5e5+saE2QGoeQmbKmRS6J3VQppPOIt0MnmE+4xlZoumy0GPG0D0MVIQbNA1A== +lodash.debounce@^4.0.8: + version "4.0.8" + resolved "https://registry.yarnpkg.com/lodash.debounce/-/lodash.debounce-4.0.8.tgz#82d79bff30a67c4005ffd5e2515300ad9ca4d7af" + integrity sha1-gteb/zCmfEAF/9XiUVMArZyk168= + +lodash.throttle@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/lodash.throttle/-/lodash.throttle-4.1.1.tgz#c23e91b710242ac70c37f1e1cda9274cc39bf2f4" + integrity sha1-wj6RtxAkKscMN/HhzaknTMOb8vQ= lodash@^4.17.11: version "4.17.11" resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.11.tgz#b39ea6229ef607ecd89e2c8df12536891cac9b8d" integrity sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg== -lodash@^4.17.12: - version "4.17.19" - resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.19.tgz#e48ddedbe30b3321783c5b4301fbd353bc1e4a4b" - integrity sha512-JNvd8XER9GQX0v2qJgsaN/mzFCNA5BRe/j8JN9d+tWyGLSodKQHKFicdwNYzWwI3wjRnaKPsGj1XkBjx/F96DQ== +lodash@^4.17.19: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== log-driver@^1.2.7: version "1.2.7" resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== -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-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" - -micromatch@^3.1.10, micromatch@^3.1.4: - 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" - mime-db@1.40.0: version "1.40.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" @@ -1711,11 +1367,6 @@ mime@~1.2.11: resolved "https://registry.yarnpkg.com/mime/-/mime-1.2.11.tgz#58203eed86e3a5ef17aed2b7d9ebd47f0a60dd10" integrity sha1-WCA+7Ybjpe8XrtK32evUfwpg3RA= -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== - "minimatch@2 || 3", minimatch@^3.0.4: version "3.0.4" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" @@ -1733,14 +1384,6 @@ minimist@^1.2.5: resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.5.tgz#67d66014b66a6a8aaa0c083c5fd58df4e4e97602" integrity sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw== -mixin-deep@^1.2.0: - 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" - mkdirp@0.5.x, mkdirp@^0.5.1: version "0.5.1" resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" @@ -1748,42 +1391,15 @@ mkdirp@0.5.x, mkdirp@^0.5.1: dependencies: minimist "0.0.8" -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.1: version "2.1.1" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.1.tgz#30a5864eb3ebb0a66f2ebe6d727af06a09d86e0a" integrity sha512-tgp+dl5cGk28utYktBsrFqA7HKgrhgPsg6Z/EfhWI4gl1Hwq8B/GmY/0oXZ6nF8hDVesS/FpnYaD/kOWhYQvyg== -mute-stream@0.0.7: - version "0.0.7" - resolved "https://registry.yarnpkg.com/mute-stream/-/mute-stream-0.0.7.tgz#3075ce93bc21b8fab43e1bc4da7e8115ed1e7bab" - integrity sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s= - -nan@^2.12.1: - version "2.14.1" - resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.1.tgz#d7be34dfa3105b91494c3147089315eff8874b01" - integrity sha512-isWHgVjnFjh2x2yuJ/tj3JbwoHu3UC2dX5G/88Cm24yB6YopVgxvBObDY7n5xW6ExmFhJpSEQqFPvq9zaXc8Jw== - -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" +nanoid@^3.1.12: + version "3.1.12" + resolved "https://registry.yarnpkg.com/nanoid/-/nanoid-3.1.12.tgz#6f7736c62e8d39421601e4a0c77623a97ea69654" + integrity sha512-1qstj9z5+x491jfiC4Nelk+f8XBad7LN20PmyWINJEMRSf3wcAjAWysw1qaA8z6NSKe2sjq1hRSDpBH5paCb6A== natural-compare@^1.4.0: version "1.4.0" @@ -1795,11 +1411,6 @@ neo-async@^2.6.0: resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f" integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw== -nice-try@^1.0.4: - version "1.0.5" - resolved "https://registry.yarnpkg.com/nice-try/-/nice-try-1.0.5.tgz#a3378a7696ce7d223e88fc9b764bd7ef1089e366" - integrity sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ== - node-uuid@~1.4.0: version "1.4.8" resolved "https://registry.yarnpkg.com/node-uuid/-/node-uuid-1.4.8.tgz#b040eb0923968afabf8d32fb1f17f1167fdab907" @@ -1812,14 +1423,7 @@ nopt@3.x: dependencies: abbrev "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, 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== @@ -1834,15 +1438,6 @@ oauth-sign@~0.9.0: resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.9.0.tgz#47a7b016baa68b5fa0ecf3dee08a85c679ac6455" integrity sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ== -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-inspect@^1.7.0: version "1.8.0" resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.8.0.tgz#df807e5ecf53a609cc6bfe93eac3cc7be5b3a9d0" @@ -1861,13 +1456,6 @@ object-keys@^1.0.11, object-keys@^1.0.12, object-keys@^1.1.1: resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== -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.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.0.tgz#968bf1100d7956bb3ca086f006f846b3bc4008da" @@ -1878,13 +1466,6 @@ object.assign@^4.1.0: has-symbols "^1.0.0" object-keys "^1.0.11" -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" - once@1.x, once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -1892,13 +1473,6 @@ once@1.x, once@^1.3.0: 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" - optionator@^0.8.1: version "0.8.2" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.2.tgz#364c5e409d3f4d6301d6c0b4c05bba50180aeb64" @@ -1911,22 +1485,17 @@ optionator@^0.8.1: type-check "~0.3.2" wordwrap "~1.0.0" -optionator@^0.8.2: - version "0.8.3" - resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" - integrity sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA== +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.3.0" - prelude-ls "~1.1.2" - type-check "~0.3.2" - word-wrap "~1.2.3" - -os-tmpdir@~1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" - integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + 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" p-limit@^2.0.0: version "2.2.0" @@ -1954,16 +1523,6 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" -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-exists@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" @@ -1974,15 +1533,10 @@ path-is-absolute@^1.0.0: resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= -path-is-inside@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/path-is-inside/-/path-is-inside-1.0.2.tgz#365417dede44430d1c11af61027facf074bdfc53" - integrity sha1-NlQX3t5EQw0cEa9hAn+s8HS9/FM= - -path-key@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" - integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= +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" @@ -1994,10 +1548,10 @@ performance-now@^2.1.0: resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" integrity sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns= -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= +picomatch@^2.0.4, picomatch@^2.2.1: + version "2.2.2" + resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" + integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== postcss-selector-parser@^6.0.2: version "6.0.2" @@ -2022,24 +1576,30 @@ postcss@^7.0.14: source-map "^0.6.1" supports-color "^6.1.0" -postcss@^7.0.32: - version "7.0.32" - resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.32.tgz#4310d6ee347053da3433db2be492883d62cec59d" - integrity sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw== +postcss@^8.0.3: + version "8.0.3" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.0.3.tgz#f1d4658528b778e1c5c67a31a3912faed1600a66" + integrity sha512-nJR5mHJuiizWhF1DqVDy6RdeFbyA1Pakcl4wp4VwppKoAZLafPhS7X/rjeUgk3LdQWYQNxyixzbCbcIAbhsCTA== dependencies: - chalk "^2.4.2" + colorette "^1.2.1" + line-column "^1.0.2" + nanoid "^3.1.12" source-map "^0.6.1" - supports-color "^6.1.0" + +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== prelude-ls@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.1.2.tgz#21932a549f5e52ffd9a827f570e04be62a97da54" integrity sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ= -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== +prettier@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.1.2.tgz#3050700dae2e4c8b67c4c3f666cdb8af405e1ce5" + integrity sha512-16c7K+x4qVlJg9rEbXl7HEGmQyZlG4R9AgP+oHKRMsMsuk8s+ATStlf1NpDqyBI1HpVyfjLOeMhH2LvuNvV5Vg== progress@^2.0.0: version "2.0.3" @@ -2066,19 +1626,6 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -readable-stream@^2.0.2: - 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.0.26: version "1.0.34" resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-1.0.34.tgz#125820e34bc842d2f2aaafafe4c2916ee32c157c" @@ -2089,22 +1636,12 @@ readable-stream@~1.0.26: isarray "0.0.1" string_decoder "~0.10.x" -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== +readdirp@~3.4.0: + version "3.4.0" + resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-3.4.0.tgz#9fdccdf9e9155805449221ac645e8303ab5b9ada" + integrity sha512-0xe001vZBnJEK+uKcj8qOhyAKPzIT+gStxWr3LCB0DwcXR5NZJ3IaC+yGnHCYzB/S7ov3m3EEbZI2zeNvX+hGQ== dependencies: - graceful-fs "^4.1.11" - micromatch "^3.1.10" - readable-stream "^2.0.2" - -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" + picomatch "^2.2.1" regexp.prototype.flags@^1.3.0: version "1.3.0" @@ -2114,25 +1651,10 @@ regexp.prototype.flags@^1.3.0: define-properties "^1.1.3" es-abstract "^1.17.0-next.1" -regexpp@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-2.0.1.tgz#8d19d31cf632482b589049f8281f93dbcba4d07f" - integrity sha512-lv0M6+TkDVniA3aD1Eg0DVpfU/booSu7Eev3TDO/mZKHBfVjgCGTV4t4buppESEYDtkArYFOxTJWv6S5C+iaNw== - -remove-trailing-separator@^1.0.1: - 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.3" - resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.3.tgz#782e0d825c0c5a3bb39731f84efee6b742e6b1ce" - integrity sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g== - -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= +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== request@2.42.0: version "2.42.0" @@ -2197,11 +1719,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-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.x: version "1.1.7" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" @@ -2214,14 +1731,6 @@ resolve@^1.17.0: dependencies: 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" - resumer@^0.0.0, resumer@~0.0.0: version "0.0.0" resolved "https://registry.yarnpkg.com/resumer/-/resumer-0.0.0.tgz#f1e8f461e4064ba39e82af3cdc2a8c893d076759" @@ -2229,11 +1738,6 @@ resumer@^0.0.0, resumer@~0.0.0: dependencies: through "~2.3.4" -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== - rimraf@2.6.3: version "2.6.3" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" @@ -2241,66 +1745,37 @@ rimraf@2.6.3: dependencies: glob "^7.1.3" -run-async@^2.2.0: - version "2.4.1" - resolved "https://registry.yarnpkg.com/run-async/-/run-async-2.4.1.tgz#8440eccf99ea3e70bd409d49aab88e10c189a455" - integrity sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ== - -rxjs@^6.4.0: - version "6.6.0" - resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.0.tgz#af2901eedf02e3a83ffa7f886240ff9018bbec84" - integrity sha512-3HMA8z/Oz61DUHe+SdOiQyzIf4tOx5oQHmMir7IZEu6TMqCLHT4LRcmNaUS0NwOz8VLvmmBduMsoaUvMaIiqzg== - dependencies: - tslib "^1.9.0" - -safe-buffer@^5.0.1, safe-buffer@^5.1.2, safe-buffer@~5.1.0, safe-buffer@~5.1.1: +safe-buffer@^5.0.1, safe-buffer@^5.1.2: 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" - -"safer-buffer@>= 2.1.2 < 3", safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: +safer-buffer@^2.0.2, safer-buffer@^2.1.0, safer-buffer@~2.1.0: version "2.1.2" resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== -semver@^5.5.0, semver@^5.5.1: - version "5.7.1" - resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" - integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== +semver@^7.2.1: + version "7.3.2" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.2.tgz#604962b052b81ed0786aae84389ffba70ffd3938" + integrity sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ== 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-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" - -shebang-command@^1.2.0: - version "1.2.0" - resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" - integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= +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 "^1.0.0" + shebang-regex "^3.0.0" -shebang-regex@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" - integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= +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== side-channel@^1.0.2: version "1.0.2" @@ -2310,11 +1785,6 @@ side-channel@^1.0.2: es-abstract "^1.17.0-next.1" object-inspect "^1.7.0" -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== - slice-ansi@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-2.1.0.tgz#cacd7693461a637a5788d92a7dd4fba068e81636" @@ -2324,36 +1794,6 @@ slice-ansi@^2.1.0: astral-regex "^1.0.0" is-fullwidth-code-point "^2.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" - sntp@0.2.x: version "0.2.4" resolved "https://registry.yarnpkg.com/sntp/-/sntp-0.2.4.tgz#fb885f18b0f3aad189f824862536bceeec750900" @@ -2361,27 +1801,6 @@ sntp@0.2.x: dependencies: hoek "0.9.x" -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.0" - resolved "https://registry.yarnpkg.com/source-map-url/-/source-map-url-0.4.0.tgz#3e935d7ddd73631b97659956d55128e87b5084a3" - integrity sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM= - -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" @@ -2394,13 +1813,6 @@ source-map@~0.2.0: dependencies: amdefine ">=0.0.4" -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@~0.2.10: version "0.2.10" resolved "https://registry.yarnpkg.com/split/-/split-0.2.10.tgz#67097c601d697ce1368f418f06cd201cf0521a57" @@ -2428,14 +1840,6 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -static-extend@^0.1.1: - 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.0.2: version "0.0.4" resolved "https://registry.yarnpkg.com/stream-combiner/-/stream-combiner-0.0.4.tgz#4d5e433c185261dde623ca3f44c586bcf5c4ad14" @@ -2443,14 +1847,6 @@ stream-combiner@~0.0.2: dependencies: duplexer "~0.1.1" -string-width@^2.1.0: - 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@^3.0.0, string-width@^3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/string-width/-/string-width-3.1.0.tgz#22767be21b62af1081574306f69ac51b62203961" @@ -2490,25 +1886,11 @@ string_decoder@~0.10.x: 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" - stringstream@~0.0.4: version "0.0.6" resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.6.tgz#7880225b0d4ad10e30927d167a1d6f2fd3b33a72" integrity sha512-87GEBAkegbBcweToUrdzf3eLhWNg06FJTebl4BVJz/JgWy8CvEr9dRtX5qWphiynMSQlxxi+QqN0z5T32SLlhA== -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@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: version "5.2.0" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" @@ -2516,10 +1898,17 @@ strip-ansi@^5.0.0, strip-ansi@^5.1.0, strip-ansi@^5.2.0: dependencies: ansi-regex "^4.1.0" -strip-json-comments@^2.0.1: - version "2.0.1" - resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" - integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= +strip-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-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== supports-color@^3.1.0: version "3.2.3" @@ -2542,6 +1931,13 @@ supports-color@^6.1.0: 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" + table@^5.2.3: version "5.4.0" resolved "https://registry.yarnpkg.com/table/-/table-5.4.0.tgz#d772a3216e68829920a41a32c18eda286c95d780" @@ -2594,42 +1990,17 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= -through@2, through@^2.3.6, through@^2.3.8, through@~2.3.4: +through@2, through@^2.3.8, 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= -tmp@^0.0.33: - version "0.0.33" - resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.0.33.tgz#6d34335889768d21b2bcda0aa277ced3b1bfadf9" - integrity sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw== - dependencies: - os-tmpdir "~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@^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== +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: - define-property "^2.0.2" - extend-shallow "^3.0.2" - regex-not "^1.0.2" - safe-regex "^1.1.0" + is-number "^7.0.0" tough-cookie@>=0.12.0: version "3.0.1" @@ -2648,11 +2019,6 @@ tough-cookie@~2.5.0: psl "^1.1.28" punycode "^2.1.1" -tslib@^1.9.0: - version "1.13.0" - resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" - integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== - tunnel-agent@^0.6.0: version "0.6.0" resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd" @@ -2670,6 +2036,13 @@ tweetnacl@^0.14.3, tweetnacl@~0.14.0: resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64" integrity sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q= +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-check@~0.3.2: version "0.3.2" resolved "https://registry.yarnpkg.com/type-check/-/type-check-0.3.2.tgz#5884cab512cf1d355e3fb784f30804b2b520db72" @@ -2677,39 +2050,21 @@ type-check@~0.3.2: dependencies: prelude-ls "~1.1.2" +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== + uglify-js@^3.1.4: version "3.10.0" resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.10.0.tgz#397a7e6e31ce820bfd1cb55b804ee140c587a9e7" integrity sha512-Esj5HG5WAyrLIdYU74Z3JdG2PxdIusvj6IWHMtlyESxc7kcDz7zYlYjpnSokn1UbpV0d/QX9fan7gkCNd/9BQA== -union-value@^1.0.0: - 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" - uniq@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= -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== - uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -2717,11 +2072,6 @@ uri-js@^4.2.2: 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= - urlgrey@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/urlgrey/-/urlgrey-0.4.0.tgz#f065357040fb35c3b311d4e5dc36484d96dbea06" @@ -2729,21 +2079,16 @@ urlgrey@0.4.0: dependencies: tape "2.3.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== - -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= - uuid@^3.3.2: version "3.3.2" resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== +v8-compile-cache@^2.0.3: + version "2.1.1" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz#54bc3cdd43317bca91e35dcaf305b1a7237de745" + integrity sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ== + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -2791,14 +2136,21 @@ which-typed-array@^1.1.2: has-symbols "^1.0.1" is-typed-array "^1.1.3" -which@^1.1.1, which@^1.2.9: +which@^1.1.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" -word-wrap@~1.2.3: +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.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== @@ -2834,7 +2186,7 @@ y18n@^4.0.0: resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== -yargs-parser@^13.1.1: +yargs-parser@^13.1.2: version "13.1.2" resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-13.1.2.tgz#130f09702ebaeef2650d54ce6e3e5706f7a4fb38" integrity sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg== @@ -2842,10 +2194,10 @@ yargs-parser@^13.1.1: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@13.3.0: - version "13.3.0" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.0.tgz#4c657a55e07e5f2cf947f8a366567c04a0dedc83" - integrity sha512-2eehun/8ALW8TLoIl7MVaRUrg+yCnenu8B4kBlRxj3GJGDKU1Og7sMXPNm1BYyM1DOJmTZ4YeN/Nwxv+8XJsUA== +yargs@^13.3.0: + version "13.3.2" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-13.3.2.tgz#ad7ffefec1aa59565ac915f82dccb38a9c31a2dd" + integrity sha512-AX3Zw5iPruN5ie6xGRIDgqkT+ZhnRlZMLMHAs8tg7nRruy2Nb+i5o9bwghAogtM08q1dpr2LVoS8KSTMYpWXUw== dependencies: cliui "^5.0.0" find-up "^3.0.0" @@ -2856,4 +2208,4 @@ yargs@13.3.0: string-width "^3.0.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^13.1.1" + yargs-parser "^13.1.2"