From b6961e608430740dda63aac11e63971d7a523f26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adam=20Zapa=C5=9Bnik?= <9281806+adamzapasnik@users.noreply.github.com> Date: Mon, 25 Jan 2021 18:46:36 +0100 Subject: [PATCH] Initial commit --- .eslintrc.json | 20 + .github/dependabot.yml | 11 + .github/workflows/ci.yml | 55 + .gitignore | 5 +- .gitmodules | 4 + .prettierrc.json | 4 + .tool-versions | 1 - CHANGELOG.md | 7 + README.md | 76 +- jest.config.js | 22 +- lib/eex/formatter.js | 94 + lib/eex/tokenizer.js | 107 + lib/html_parser/decoder.js | 171 + lib/html_parser/decoder/attributes_decoder.js | 99 + lib/html_parser/decoder/html_body_decoder.js | 84 + .../decoder/table_and_head_decoder.js | 57 + lib/html_parser/encoder.js | 143 + lib/index.js | 35 + lib/parser.js | 12 + lib/printers.js | 38 + package.json | 62 +- prettier_eex_formatter | 1 + s.eex | 7 - src/i.js | 3 - src/index.js | 24 - src/parser.js | 244 -- src/printer/helpers.js | 23 - src/printer/placeholders.js | 39 - src/printer/restore.js | 279 -- src/printers.js | 572 --- src/tokenizer.js | 50 - test.eex | 30 - test.html | 3 - tests/case/__snapshots__/jsfmt.spec.js.snap | 90 + tests/case/case.html.eex | 6 + tests/case/case_in_html.html.eex | 28 + tests/case/jsfmt.spec.js | 1 + tests/cond/__snapshots__/jsfmt.spec.js.snap | 91 + tests/cond/cond.html.eex | 6 + tests/cond/cond_html.html.eex | 29 + tests/cond/jsfmt.spec.js | 1 + .../__snapshots__/jsfmt.spec.js.snap | 20 + tests/eex_formatter/jsfmt.spec.js | 1 + tests/eex_formatter/multiline.html.eex | 4 + tests/for/__snapshots__/jsfmt.spec.js.snap | 75 + tests/for/for.html.eex | 4 + tests/for/for_in_html.html.eex | 21 + tests/for/jsfmt.spec.js | 1 + .../form_for/__snapshots__/jsfmt.spec.js.snap | 21 +- tests/form_for/jsfmt.spec.js | 2 +- .../block/__snapshots__/jsfmt.spec.js.snap | 97 + tests/html_elements/block/div.html.eex | 21 + tests/html_elements/block/figure.html.eex | 0 tests/html_elements/block/jsfmt.spec.js | 1 + tests/html_elements/block/template.html.eex | 0 .../inline/__snapshots__/jsfmt.spec.js.snap | 15 + tests/html_elements/inline/jsfmt.spec.js | 1 + tests/html_elements/inline/span.html.eex | 1 + .../raw/__snapshots__/jsfmt.spec.js.snap | 839 +++++ tests/html_elements/raw/canvas.html.eex | 32 + tests/html_elements/raw/code.html.eex | 32 + tests/html_elements/raw/jsfmt.spec.js | 1 + tests/html_elements/raw/kbd.html.eex | 32 + tests/html_elements/raw/noscript.html.eex | 32 + tests/html_elements/raw/pre.html.eex | 32 + tests/html_elements/raw/rb.html.eex | 35 + tests/html_elements/raw/rp.html.eex | 35 + tests/html_elements/raw/rt.html.eex | 35 + tests/html_elements/raw/rtc.html.eex | 35 + tests/html_elements/raw/ruby.html.eex | 32 + tests/html_elements/raw/samp.html.eex | 32 + tests/html_elements/raw/var.html.eex | 32 + .../root/__snapshots__/jsfmt.spec.js.snap | 162 + tests/html_elements/root/head.html.eex | 13 + tests/html_elements/root/html.html.eex | 3 + tests/html_elements/root/jsfmt.spec.js | 1 + tests/html_elements/root/link.html.eex | 3 + tests/html_elements/root/meta.html.eex | 8 + tests/html_elements/root/style.html.eex | 5 + tests/html_elements/root/title.html.eex | 12 + .../script/__snapshots__/jsfmt.spec.js.snap | 69 + tests/html_elements/script/jsfmt.spec.js | 1 + tests/html_elements/script/script.html.eex | 8 + .../html_elements/script/script_json.html.eex | 6 + .../html_elements/script/script_src.html.eex | 2 + .../table/__snapshots__/jsfmt.spec.js.snap | 496 +++ tests/html_elements/table/caption.html.eex | 15 + tests/html_elements/table/colgroup.html.eex | 11 + tests/html_elements/table/jsfmt.spec.js | 1 + tests/html_elements/table/table.html.eex | 11 + tests/html_elements/table/tbody.html.eex | 13 + tests/html_elements/table/td.html.eex | 35 + tests/html_elements/table/tfoot.html.eex | 13 + tests/html_elements/table/th.html.eex | 17 + tests/html_elements/table/thead.html.eex | 13 + tests/html_elements/table/tr.html.eex | 15 + tests/if/__snapshots__/jsfmt.spec.js.snap | 59 +- tests/if/js.eex | 2 + tests/if/jsfmt.spec.js | 2 +- tests/only_eex/only_eex.html.eex | 12 + tests_config/run_spec.js | 234 +- yarn.lock | 3118 ++++++++++++----- 102 files changed, 6141 insertions(+), 2374 deletions(-) create mode 100644 .eslintrc.json create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/ci.yml create mode 100644 .gitmodules create mode 100644 .prettierrc.json delete mode 100644 .tool-versions create mode 100644 CHANGELOG.md create mode 100644 lib/eex/formatter.js create mode 100644 lib/eex/tokenizer.js create mode 100644 lib/html_parser/decoder.js create mode 100644 lib/html_parser/decoder/attributes_decoder.js create mode 100644 lib/html_parser/decoder/html_body_decoder.js create mode 100644 lib/html_parser/decoder/table_and_head_decoder.js create mode 100644 lib/html_parser/encoder.js create mode 100644 lib/index.js create mode 100644 lib/parser.js create mode 100644 lib/printers.js create mode 160000 prettier_eex_formatter delete mode 100644 s.eex delete mode 100644 src/i.js delete mode 100644 src/index.js delete mode 100644 src/parser.js delete mode 100644 src/printer/helpers.js delete mode 100644 src/printer/placeholders.js delete mode 100644 src/printer/restore.js delete mode 100644 src/printers.js delete mode 100644 src/tokenizer.js delete mode 100644 test.eex delete mode 100644 test.html create mode 100644 tests/case/__snapshots__/jsfmt.spec.js.snap create mode 100644 tests/case/case.html.eex create mode 100644 tests/case/case_in_html.html.eex create mode 100644 tests/case/jsfmt.spec.js create mode 100644 tests/cond/__snapshots__/jsfmt.spec.js.snap create mode 100644 tests/cond/cond.html.eex create mode 100644 tests/cond/cond_html.html.eex create mode 100644 tests/cond/jsfmt.spec.js create mode 100644 tests/eex_formatter/__snapshots__/jsfmt.spec.js.snap create mode 100644 tests/eex_formatter/jsfmt.spec.js create mode 100644 tests/eex_formatter/multiline.html.eex create mode 100644 tests/for/__snapshots__/jsfmt.spec.js.snap create mode 100644 tests/for/for.html.eex create mode 100644 tests/for/for_in_html.html.eex create mode 100644 tests/for/jsfmt.spec.js create mode 100644 tests/html_elements/block/__snapshots__/jsfmt.spec.js.snap create mode 100644 tests/html_elements/block/div.html.eex create mode 100644 tests/html_elements/block/figure.html.eex create mode 100644 tests/html_elements/block/jsfmt.spec.js create mode 100644 tests/html_elements/block/template.html.eex create mode 100644 tests/html_elements/inline/__snapshots__/jsfmt.spec.js.snap create mode 100644 tests/html_elements/inline/jsfmt.spec.js create mode 100644 tests/html_elements/inline/span.html.eex create mode 100644 tests/html_elements/raw/__snapshots__/jsfmt.spec.js.snap create mode 100644 tests/html_elements/raw/canvas.html.eex create mode 100644 tests/html_elements/raw/code.html.eex create mode 100644 tests/html_elements/raw/jsfmt.spec.js create mode 100644 tests/html_elements/raw/kbd.html.eex create mode 100644 tests/html_elements/raw/noscript.html.eex create mode 100644 tests/html_elements/raw/pre.html.eex create mode 100644 tests/html_elements/raw/rb.html.eex create mode 100644 tests/html_elements/raw/rp.html.eex create mode 100644 tests/html_elements/raw/rt.html.eex create mode 100644 tests/html_elements/raw/rtc.html.eex create mode 100644 tests/html_elements/raw/ruby.html.eex create mode 100644 tests/html_elements/raw/samp.html.eex create mode 100644 tests/html_elements/raw/var.html.eex create mode 100644 tests/html_elements/root/__snapshots__/jsfmt.spec.js.snap create mode 100644 tests/html_elements/root/head.html.eex create mode 100644 tests/html_elements/root/html.html.eex create mode 100644 tests/html_elements/root/jsfmt.spec.js create mode 100644 tests/html_elements/root/link.html.eex create mode 100644 tests/html_elements/root/meta.html.eex create mode 100644 tests/html_elements/root/style.html.eex create mode 100644 tests/html_elements/root/title.html.eex create mode 100644 tests/html_elements/script/__snapshots__/jsfmt.spec.js.snap create mode 100644 tests/html_elements/script/jsfmt.spec.js create mode 100644 tests/html_elements/script/script.html.eex create mode 100644 tests/html_elements/script/script_json.html.eex create mode 100644 tests/html_elements/script/script_src.html.eex create mode 100644 tests/html_elements/table/__snapshots__/jsfmt.spec.js.snap create mode 100644 tests/html_elements/table/caption.html.eex create mode 100644 tests/html_elements/table/colgroup.html.eex create mode 100644 tests/html_elements/table/jsfmt.spec.js create mode 100644 tests/html_elements/table/table.html.eex create mode 100644 tests/html_elements/table/tbody.html.eex create mode 100644 tests/html_elements/table/td.html.eex create mode 100644 tests/html_elements/table/tfoot.html.eex create mode 100644 tests/html_elements/table/th.html.eex create mode 100644 tests/html_elements/table/thead.html.eex create mode 100644 tests/html_elements/table/tr.html.eex create mode 100644 tests/only_eex/only_eex.html.eex diff --git a/.eslintrc.json b/.eslintrc.json new file mode 100644 index 0000000..9e27d04 --- /dev/null +++ b/.eslintrc.json @@ -0,0 +1,20 @@ +{ + "env": { + "node": true, + "es6": true, + "jest": true + }, + "extends": ["eslint:recommended", "prettier"], + "plugins": ["prettier"], + "globals": { + "Atomics": "readonly", + "SharedArrayBuffer": "readonly" + }, + "parserOptions": { + "ecmaVersion": 2018, + "sourceType": "module" + }, + "rules": { + "prettier/prettier": ["error"] + } +} diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..d583561 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://help.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: 'npm' + directory: '/' + schedule: + interval: 'weekly' \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b91eb82 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,55 @@ +name: CI + +on: + push: + branches: + - master + pull_request: + branches: + - master + + +jobs: + format: + name: Format + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v1 + + - name: Install OTP and Elixir + uses: actions/setup-elixir@v1 + with: + otp-version: "22.3.4.1" + elixir-version: "1.10.3" + + - run: mix compile --warnings-as-errors + - run: mix format --check-formatted + + test: + name: Test + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v1 + + - name: Install OTP and Elixir + uses: actions/setup-elixir@v1 + with: + otp-version: "22.3.4.1" + elixir-version: "1.10.3" + + - name: Install + run: | + yarn policies set-version + yarn install --frozen-lockfile +- name: Get yarn cache directory path + id: yarn-cache-dir-path + run: echo "::set-output name=dir::$(yarn cache dir)" + +- uses: actions/cache@v1 + id: yarn-cache # use this to check for `cache-hit` (`steps.yarn-cache.outputs.cache-hit != 'true'`) + with: + path: ${{ steps.yarn-cache-dir-path.outputs.dir }} + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }} + restore-keys: | + ${{ runner.os }}-yarn- \ No newline at end of file diff --git a/.gitignore b/.gitignore index 58b805f..808b5cd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,5 @@ .DS_Store -node_modules/ \ No newline at end of file +node_modules/ +.elixir_ls/ +prettier_eex_formatter_release +.vscode/ diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..b20e799 --- /dev/null +++ b/.gitmodules @@ -0,0 +1,4 @@ +[submodule "prettier_eex_formatter"] +path = prettier_eex_formatter +url = git@github.com:adamzapasnik/prettier_eex_formatter.git +branch = master diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..0981b7c --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,4 @@ +{ + "singleQuote": true, + "printWidth": 120 +} diff --git a/.tool-versions b/.tool-versions deleted file mode 100644 index 47f71e7..0000000 --- a/.tool-versions +++ /dev/null @@ -1 +0,0 @@ -nodejs 12.16.1 diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..6672bdf --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog + +All notable changes to the prettier-plugin-eex will be documented in this file. + +## v0.1.0 - 25 January 2021 + +Initial release diff --git a/README.md b/README.md index beb5256..3eeff82 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,75 @@ -figure out scripts and styles.. -probably should use some string for that, eex1 or smth +# Prettier EEX Plugin -.leex +## How to install? -attributes +```sh + yarn add -D prettier prettier-plugin-eex +``` +## Config options -if <% should work to check it> \ No newline at end of file +* printWidth - used by Prettier directly +* eexMultilineNoParens - Array - used to format multiline expressions, provide which functions shouldn't wrap parens around arguments +* eexMultilineLineLength - Number - used to format multiline expressions + +Example: + +```js + { + "printWidth": 130, + "eexMultilineLineLength": 100, + "eexMultilineNoParens": [ + "link", + "form_for" + ] + } +``` + +## How to install in Phoenix project? + +Add .prettierignore file with: + +```plain +deps/ +_build/ +.elixir_ls +assets +priv +``` + +And .prettierrc.js + +```js +module.exports = { + printWidth: 120, +}; +``` + +```sh +cd assets +yarn add -D prettier prettier-plugin-eex +``` + +### How to use? + +Add to `mix.exs` `aliases` and use as `mix prettier` + +```elixir +defp aliases do + [... + prettier: "cmd ./assets/node_modules/.bin/prettier --check . --color" + ] +end +``` + +### How to make it work with Prettier Visual Studio code extension? + +It's important to add node modules path. + +```json +"prettier.prettierPath": "./assets/node_modules" +``` + +## How to deal with bugs? + +Your code wasn't formatted correctly or there was an error? Add the problematic file to .prettierignore and submit an Issue. diff --git a/jest.config.js b/jest.config.js index abad8d8..64cdca9 100644 --- a/jest.config.js +++ b/jest.config.js @@ -1,23 +1,11 @@ -"use strict"; +'use strict'; const ENABLE_CODE_COVERAGE = !!process.env.ENABLE_CODE_COVERAGE; module.exports = { - setupFiles: ["/tests_config/run_spec.js"], - snapshotSerializers: [ - "jest-snapshot-serializer-raw", - // "jest-snapshot-serializer-ansi", - ], - testRegex: "jsfmt\\.spec\\.js$|__tests__/.*\\.js$", + setupFiles: ['/tests_config/run_spec.js'], + snapshotSerializers: ['jest-snapshot-serializer-raw'], + testRegex: 'jsfmt\\.spec\\.js$|__tests__/.*\\.js$', collectCoverage: ENABLE_CODE_COVERAGE, - // collectCoverageFrom: ["src/**/*.js", "/src/**/*.js", - // "!/node_modules/", - // "!/tests_config/", "!/node_modules/"], - // coveragePathIgnorePatterns: [ - // "/standalone.js", - // "/src/document/doc-debug.js", - // "/src/main/massage-ast.js", - // ], - // coverageReporters: ["text", "lcov"], - testEnvironment: "node", + testEnvironment: 'node', transform: {}, }; diff --git a/lib/eex/formatter.js b/lib/eex/formatter.js new file mode 100644 index 0000000..9b991ca --- /dev/null +++ b/lib/eex/formatter.js @@ -0,0 +1,94 @@ +const { concat, indent, hardline, group } = require('prettier').doc.builders; +const { execSync } = require('child_process'); +const path = require('path'); + +// TODO: add formatting option to format multiline by urself +// TODO: better naming please + +const formatEex = (tokens, options = {}) => { + const collectedMultiLine = {}; + + tokens.forEach((token, index) => { + if (token.type !== 'text' && token.content.match(/\r?\n/)) { + collectedMultiLine[index] = true; + } + }); + + const outputMap = {}; + const encodedCode = Object.keys(collectedMultiLine) + .sort() + .map((tokenIndex, index) => { + const matcher = tokens[tokenIndex].content.match(/<%(#=|%=|=|%|#)?([\S\s]*?)\s*%>/m); + const tag = matcher[1] || ''; + const expression = matcher[2]; + outputMap[index] = tokenIndex; + return Buffer.from(expression).toString('base64'); + }); + + if (encodedCode.length) { + const { eexMultilineLineLength, eexMultilineNoParens } = options; + let eexFormatterOptions = `--line-length=${eexMultilineLineLength}`; + if (eexMultilineNoParens.length) { + eexFormatterOptions = eexFormatterOptions.concat(' --no-parens=${eexFormatterOptions.join(", ")}'); + } + + const binPath = path.join(__dirname, '..', '..', 'prettier_eex_formatter_release'); + execSync(`${binPath} ${encodedCode.join(' ')} ${eexFormatterOptions}`, { + encoding: 'utf-8', + }) + .trim() + .split('\n') + .forEach((encodedFormattedCode, index) => { + const tokenIndex = outputMap[index]; + collectedMultiLine[tokenIndex] = Buffer.from(encodedFormattedCode, 'base64').toString(); + }); + } + + return tokens + .map((token) => ({ ...token })) + .map((token, index) => { + if (token.type === 'text') return token; + + const matcher = token.content.match(/<%(#=|%=|=|%|#)?([\S\s]*?)\s*%>/m); + const tag = matcher[1] || ''; + const expression = matcher[2]; + const ssq = expression.match(/^\s*\r?\n\s*\S/) ? hardline : ' '; + const exprr = '<%' + tag; + + if (expression.match(/\r?\n/)) { + const formattedCode = collectedMultiLine[index]; + + let cursorPosition = 0; + let formattedExpression = []; + + formattedCode.replace(/\r?\n/g, (match, offset) => { + if (cursorPosition !== offset) { + let string = formattedCode.slice(cursorPosition, offset); + if (formattedExpression.length && ssq === ' ') { + string = ' '.repeat(exprr.length + 1 - 2) + string; + } + formattedExpression.push(string); + } + + formattedExpression.push(hardline); + cursorPosition = offset + match.length; + }); + + let string = formattedCode.slice(cursorPosition); + if (string.length && ssq === ' ') { + string = ' '.repeat(exprr.length + 1 - 2) + string; + } + formattedExpression.push(string); + + token.content = group(concat([exprr, indent(concat([ssq, concat(formattedExpression)])), ssq, '%>'])); + } else { + token.content = `${exprr} ${expression.trim()} %>`; + } + + return token; + }); +}; + +module.exports = { + formatEex, +}; diff --git a/lib/eex/tokenizer.js b/lib/eex/tokenizer.js new file mode 100644 index 0000000..d94496c --- /dev/null +++ b/lib/eex/tokenizer.js @@ -0,0 +1,107 @@ +const getLastIndexOfRegexp = (string, regexp) => { + const match = string.match(new RegExp(regexp, 'mg')); + + return match ? string.lastIndexOf(match[match.length - 1]) : -1; +}; + +const isWithinElement = (htmlBeforeExpression, element) => { + const regexp = new RegExp(`<${element}[\\s\\S]*?>`); + + return getLastIndexOfRegexp(htmlBeforeExpression, regexp) > htmlBeforeExpression.lastIndexOf(``); +}; + +function tokenize(text) { + const regexp = /<%[\s\S]*?%>/gm; + + const tokens = []; + let cursorPosition = 0; + let html = ''; + let htmlWithPlaceholders = ''; // + + const closedTags = text.match(/<\/\w+>/gm); + const uniqueClosedTags = new Set(closedTags); + const rawElementsInText = ['pre', 'code', 'samp', 'kbd', 'var', 'ruby', 'noscript', 'canvas', 'style', 'title'].filter((tag) => + uniqueClosedTags.has(``) + ); + + text.replace(regexp, (match, offset) => { + // when two expressions are next to each other <% %><% %> + // we don't want to create an empty text tag + if (cursorPosition !== offset) { + const string = text.slice(cursorPosition, offset); + tokens.push({ type: 'text', content: string }); + html += string; + htmlWithPlaceholders += string + 'e'; + } + cursorPosition = offset + match.length; + + const inAttribute = () => { + const beginning = htmlWithPlaceholders.lastIndexOf('="') + 1; + if (beginning === 0) return false; + + return beginning >= htmlWithPlaceholders.lastIndexOf('"'); + }; + + const lastTokenType = tokens.length && tokens[tokens.length - 1].type; + + const beforeWhitespace = /\s/.test(text[offset + match.length]); + const afterWhitespace = lastTokenType === 'multiline_expr' || (lastTokenType === 'text' && /\s/.test(html[html.length - 1])); + + const beforeInlineEndTag = /^<\/\w+(?/.test( + text.slice(offset + match.length) + ); + const afterInlineEndTag = + lastTokenType === 'text' && + (html.endsWith('/>') || // TODO: FIX THIS + /<\/\w+(?$/.test( + html + )); + + const inElement = html.lastIndexOf('<') > html.lastIndexOf('>') || inAttribute(); + const inComment = html.lastIndexOf(''); + + let type; + let subType; + + if (/\s+do\s*%>/.test(match) || /fn[\s\S]+->\s*%>/.test(match)) { + type = 'multiline_expr'; + if (/cond\s/.test(match)) { + subType = 'cond'; + } else if (/case\s/.test(match)) { + subType = 'case'; + } + } else if (/<%\s*end\s*%>/.test(match)) { + type = 'end_expr'; + } else if (/<%\s*else\s*%>/.test(match)) { + type = 'mid_expr'; + } else if (/->\s*%>/.test(match)) { + type = 'mid_cond'; + } else { + type = 'expr'; + } + + tokens.push({ + type, + subType, + content: match, + afterWhitespace, + beforeWhitespace, + beforeInlineEndTag, + afterInlineEndTag, + inElement, + inScript: isWithinElement(html, 'script'), + inComment: inComment, + inElementWithoutNeedToEncode: !inElement && !inComment && rawElementsInText.find((tag) => isWithinElement(html, tag)), + }); + }); + + if (cursorPosition !== text.length) { + tokens.push({ type: 'text', content: text.slice(cursorPosition) }); + } + + return tokens; +} + +module.exports = { + tokenize, +}; diff --git a/lib/html_parser/decoder.js b/lib/html_parser/decoder.js new file mode 100644 index 0000000..002e703 --- /dev/null +++ b/lib/html_parser/decoder.js @@ -0,0 +1,171 @@ +const { breakParent, concat, group, line } = require('prettier').doc.builders; +const { isInElement, decodeInAttributes } = require('./decoder/attributes_decoder'); +const { isInTableOrHead, decodeInTableOrHead } = require('./decoder/table_and_head_decoder'); +const { isSelfClosingInText, decodeSelfClosingInText, isSelfClosingAfterOpenTag } = require('./decoder/html_body_decoder'); + +const decodeExpressions = (expressionMap) => { + const opts = { removeWhitespace: false }; + + return (doc) => { + if (!doc.parts || (!expressionMap.size && !opts.removeWhitespace)) return doc; + + const parts = [...doc.parts]; + const decodedParts = []; + + // it also deals with head it seems + // is in nonTextElement! + if (isInTableOrHead(parts)) { + // deals with non conditional expressions in table/head elements + const partlyDecodedDoc = { ...doc, parts: decodeInTableOrHead(parts, expressionMap) }; + // deals with the rest of encoded + return decodeExpressions(expressionMap)(partlyDecodedDoc); + } + + if (isSelfClosingInText(parts)) { + const { removeWhitespace, decodedParts: newDecodedParts } = decodeSelfClosingInText(parts, expressionMap); + opts.removeWhitespace = removeWhitespace; + decodedParts.push(...newDecodedParts); + } else if (isInElement(parts)) { + decodedParts.push(...decodeInAttributes(parts, expressionMap)); + } else { + for (const part of parts) { + // ORIGINAL: e <% e %>. + // WITH: e <% e %>. + // WITHOUT: e <% e %> . + if (part === ' ' && opts.removeWhitespace) { + opts.removeWhitespace = false; + + continue; + } + + // ORIGINAL: <% e %> + // WITH: <% e %> + // WITHOUT: <% e %> + if (part.type === 'line' && !part.soft && opts.removeWhitespace) { + opts.removeWhitespace = false; + + continue; + } + + // + if (/eex\d+eex/.test(part.contents)) { + const decodedContents = part.contents.replace(/eex\d+eex/g, (match) => { + const expression = expressionMap.get(match); + expressionMap.delete(match); + + return expression.print; + }); + + decodedParts.push({ ...part, contents: decodedContents }); + continue; + } + + // Deals with expressions between script tags + if (/eexs\d+eexs/.test(part)) { + const decodedPart = part.replace(/eexs\d+eexs/, (match) => { + const expression = expressionMap.get(match); + expressionMap.delete(match); + + return expression.print; + }); + + decodedParts.push(decodedPart); + continue; + } + + if (isSelfClosingAfterOpenTag(part)) { + let placeholder = part.contents.contents.parts[0].contents.contents.trim(); + + if (placeholder.startsWith('/>')) { + placeholder = placeholder.substring(2); + decodedParts.push('/>'); + } + + const expression = expressionMap.get(placeholder); + expressionMap.delete(placeholder); + + // !expression.afterWhitespace + // ORIGINAL: <% e %> + // WITH: <% e %> + // WITHOUT: <% e %> + + // !decodedParts[decodedParts.length - 1].soft + // ORIGINAL:
<% e %>
+ // WITH:
\n<% e %>\n
+ // WITHOUT:
<% e %>\n
+ if (!expression.afterWhitespace && !decodedParts[decodedParts.length - 1].soft) { + decodedParts.pop(); + } + + decodedParts.push(expression.print); + + if (!expression.beforeWhitespace && expression.beforeInlineEndTag) { + // ORIGINAL: <% e %> + // WITH: <% e %> + // WITHOUT: <% e %> + // expression.beforeInlineEndTag: + // ORIGINAL:
<% e %>
+ // WITH:
<% e %>
+ // WITHOUT: (nothing) + opts.removeWhitespace = true; + } else if (expression.beforeWhitespace) { + // ORIGINAL: <% e %> a + // WITH: <% e %> a + // WITHOUT: <% e %>a + if (part.contents.contents.parts[2] && part.contents.contents.parts[2].type === 'line') { + decodedParts.pop(); + decodedParts.push(group(concat([expression.print, line]))); + } + } + + continue; + } + + const possibleTag = part.contents || part; + + const expression = /<\/?eext\d+>/.test(possibleTag) && expressionMap.get(possibleTag.trim()); + + if (expression) { + expressionMap.delete(possibleTag.trim()); + + if (expression.print !== '') { + if (expression.isMidExpression) { + decodedParts.push(concat([expression.print, breakParent])); + } else { + decodedParts.push(expression.print); + + if (expression.type === 'multiline_expr' || expression.type === 'mid_cond') { + decodedParts.push(breakParent); + } + } + + continue; + } + + if (expression.isMidExpression) { + opts.removeWhitespace = true; + } + + // cond end + // removes empty line + // TODO: show an example + if (expression.type === 'end_expr') { + const lastPart = decodedParts.pop(); + lastPart.contents.parts.pop(); + decodedParts.push(lastPart); + } + + continue; + } + + decodedParts.push(part); + } + } + + return Object.assign({}, doc, { parts: decodedParts }); + }; +}; + +module.exports = { + decodeExpressions, +}; diff --git a/lib/html_parser/decoder/attributes_decoder.js b/lib/html_parser/decoder/attributes_decoder.js new file mode 100644 index 0000000..076bbdf --- /dev/null +++ b/lib/html_parser/decoder/attributes_decoder.js @@ -0,0 +1,99 @@ +const { concat, indent, hardline, group } = require('prettier').doc.builders; + +const isInElement = (parts) => parts.some((part) => typeof part === 'string' && part.match(/eex[a|c]?\d+/)); + +const decodeInAttributes = (parts, expressionMap) => { + const partlyDecodedParts = decodeInAttributeValues(parts, expressionMap); + + return decodeInAttributeNames(partlyDecodedParts, expressionMap); +}; + +const decodeInAttributeNames = (parts, expressionMap, shouldIndent = false) => { + const decodedParts = []; + let skipIndex = false; + + for (const [index, part] of parts.entries()) { + if (skipIndex && index <= skipIndex) { + continue; + } + + skipIndex = false; + + if (shouldIndent && typeof part === 'object' && part.type === 'line') { + decodedParts.push(hardline); + + continue; + } + + if (typeof part !== 'string' || !/^eexa\d+$/.test(part)) { + decodedParts.push(part); + + continue; + } + + if (/^eexa\d+$/.test(part)) { + const endPart = part.replace('a', 'c'); + const endIndex = parts.indexOf(endPart); + const endOriginal = expressionMap.get(parts[endIndex]); + expressionMap.delete(parts[endIndex]); + + const indentGroup = parts.slice(index + 1, endIndex); + const nested = decodeInAttributeNames(indentGroup, expressionMap, true); + nested.pop(); //removes indented extra line + + const expr = expressionMap.get(part); + expressionMap.delete(part); + const list = [expr.print, indent(concat(nested))]; + + if (endOriginal.print !== '') { + list.push(hardline); + list.push(endOriginal.print); + } + + decodedParts.push(group(concat(list))); + skipIndex = endIndex; + } + } + + return decodedParts; +}; + +const decodeInAttributeValues = (parts, expressionMap) => { + const decodedParts = []; + + for (const part of parts) { + if (typeof part !== 'string') { + decodedParts.push(part); + + continue; + } + + let decoded = part.replace(/eex\d+eex/g, (match) => { + const expr = expressionMap.get(match); + expressionMap.delete(match); + + return expr.print; + }); + + if (!/^eex[a|c]\d+$/.test(decoded)) { + // class="<% %>" doesn't have whitespace + decoded = decoded.replace(/\s?eex[a|c]\d+\s/g, (match) => { + const expr = expressionMap.get(match.trim()); + expressionMap.delete(match.trim()); + const afterSpace = expr.afterWhitespace ? ' ' : ''; + const beforeSpace = expr.beforeWhiteSpace ? ' ' : ''; + + return afterSpace + expr.print + beforeSpace; + }); + } + + decodedParts.push(decoded); + } + + return decodedParts; +}; + +module.exports = { + isInElement, + decodeInAttributes, +}; diff --git a/lib/html_parser/decoder/html_body_decoder.js b/lib/html_parser/decoder/html_body_decoder.js new file mode 100644 index 0000000..c5e39b1 --- /dev/null +++ b/lib/html_parser/decoder/html_body_decoder.js @@ -0,0 +1,84 @@ +const { breakParent, concat, indent, softline, hardline, group, line, join } = require('prettier').doc.builders; + +const PLACEHOLDER_REGEX = / { + if (parts.length !== 2) return; + + const hasLine = parts[0].type === 'line' || parts[0].type === 'if-break'; + const hasOpeningGroup = hasLine && parts[1].type === 'group'; + const hasSelfClosing = hasOpeningGroup && parts[1].contents.parts && parts[1].contents.parts[1] === '/>'; + + if (!hasSelfClosing) return; + + return PLACEHOLDER_REGEX.test(parts[1].contents.parts[0].contents.contents); +}; + +const decodeSelfClosingInText = (parts, expressionMap) => { + const decodedParts = []; + let removeWhitespace = false; + let placeholder = parts[1].contents.parts[0].contents.contents.trim(); + + //4<% %> + if (placeholder.startsWith('>')) { + placeholder = placeholder.substring(1); + decodedParts.push('>'); + } + + const original = expressionMap.get(placeholder); + expressionMap.delete(placeholder); + // if-break is present in td + // Email: <% sm %>
+ if (original.afterWhitespace && parts[0].type !== 'if-break') { + decodedParts.push(line); + } + + decodedParts.push(original.print); + + // Maintain whitespace if it's there. + // <%= "alert" %> me + // Space has to stay between printed `alert` and `me` + + //

We published <%= :sho %> with

+ + const rest = parts[1].contents.parts.slice(2); + decodedParts.push(...rest); + + if (parts[2] && parts[2].type === 'line') { + decodedParts.push(parts[2]); + } + + //

<%= @request.submitter.name %> (<%= submitter_name(@request) %>) on <%= ts(@request.inserted_at) %>

+ if (!original.beforeWhitespace && decodedParts[decodedParts.length - 1].type === 'line') { + decodedParts.pop(); + } + + // TODO: validate if it's needed! + // + if (!original.beforeWhitespace && original.beforeInlineEndTag) { + removeWhitespace = true; + } + + return { decodedParts, removeWhitespace }; +}; + +const isSelfClosingAfterOpenTag = (part) => { + if ( + part.type === 'group' && + part.contents && + part.contents.contents && + part.contents.contents.parts && + part.contents.contents.parts.length && + part.contents.contents.parts[1] === '/>' + ) { + return PLACEHOLDER_REGEX.test(part.contents.contents.parts[0].contents.contents); + } + + return false; +}; + +module.exports = { + isSelfClosingInText, + decodeSelfClosingInText, + isSelfClosingAfterOpenTag, +}; diff --git a/lib/html_parser/decoder/table_and_head_decoder.js b/lib/html_parser/decoder/table_and_head_decoder.js new file mode 100644 index 0000000..deec165 --- /dev/null +++ b/lib/html_parser/decoder/table_and_head_decoder.js @@ -0,0 +1,57 @@ +const PLACEHOLDER_REGEXP = / { + for (let [index, part] of parts.entries()) { + if (part === '/>') { + // TODO: change name + const shouldBeBreakPoint = parts[index - 2]; + + if ( + typeof shouldBeBreakPoint === 'object' && + (shouldBeBreakPoint.type === 'break-parent' || shouldBeBreakPoint.type === 'line') + ) { + const partWithEncodedEex = parts[index - 1]; + + if ( + partWithEncodedEex.type === 'group' && + partWithEncodedEex.contents && + typeof partWithEncodedEex.contents.contents === 'string' && + partWithEncodedEex.contents.contents.trim().match(PLACEHOLDER_REGEXP) + ) { + return true; + } + } + } + } +}; + +const decodeInTableOrHead = (parts, expressionMap) => { + const decodedParts = []; + + for (let [index, part] of parts.entries()) { + if (part === '/>') { + const shouldBeBreakPointIndex = index - 2; + // TODO: change name + if (parts[shouldBeBreakPointIndex].type === 'break-parent' || parts[shouldBeBreakPointIndex].type === 'line') { + if (parts[index - 1].type === 'group' && PLACEHOLDER_REGEXP.test(parts[index - 1].contents.contents)) { + const partWithEncodedEex = decodedParts.pop(); + const encodedEex = partWithEncodedEex.contents.contents.trim(); + const original = expressionMap.get(encodedEex); + expressionMap.delete(encodedEex); + + decodedParts.push(original.print); + continue; + } + } + } + + decodedParts.push(part); + } + + return decodedParts; +}; + +module.exports = { + isInTableOrHead, + decodeInTableOrHead, +}; diff --git a/lib/html_parser/encoder.js b/lib/html_parser/encoder.js new file mode 100644 index 0000000..a1ac8bf --- /dev/null +++ b/lib/html_parser/encoder.js @@ -0,0 +1,143 @@ +function encodeExpressions(tokens) { + const expressionMap = new Map(); + const open = []; + const conds = []; + let id = 0; + let lastId = 0; + let firstCond = false; + + const textWithPlaceholders = tokens + .map((token) => { + const { + type, + subType, + content, + inElement, + afterInlineEndTag, + inScript, + inComment, + afterWhitespace, + inElementWithoutNeedToEncode, + } = token; + + if (inComment || inElementWithoutNeedToEncode) { + return content; + } + + switch (type) { + case 'text': + return content; + + case 'multiline_expr': { + id++; + open.push(id); + + if (subType === 'case' || subType === 'cond') { + conds.push(id); + firstCond = false; + } + + if (inElement) { + expressionMap.set(`eexa${id}`, { print: content, ...token }); + + return `eexa${id} `; + } + + expressionMap.set(``, { print: content, ...token }); + // TODO: added space + const addNewLineBefore = afterWhitespace ? '' : '\n'; + return `${addNewLineBefore}\n`; + } + case 'expr': { + id++; + + if (inScript) { + expressionMap.set(`eexs${id}eexs`, { print: content, ...token }); + + return `eexs${id}eexs`; + } + + if (inElement) { + expressionMap.set(`eex${id}eex`, { print: content, ...token }); + + return `eex${id}eex`; + } + + expressionMap.set(` `; + } + case 'mid_expr': + lastId = open.pop(); + id++; + open.push(id); + + if (inElement) { + expressionMap.set(`eexc${lastId}`, { print: '', ...token }); + expressionMap.set(`eexa${id}`, { print: content, ...token }); + + return ` eexc${lastId} eexa${id} `; + } + + expressionMap.set(``, { print: '', isMidExpression: true, ...token }); + expressionMap.set(``, { print: content, isMidExpression: true, ...token }); + + return `\n `; + + case 'mid_cond': + if (!firstCond) { + firstCond = true; + id++; + open.push(id); + expressionMap.set(``, { print: content, ...token }); + + return `\n`; + } else { + lastId = open.pop(); + id++; + open.push(id); + + expressionMap.set(``, { print: '', isMidExpression: true, type: type }); + expressionMap.set(``, { print: content, isMidExpression: true, type: type }); + + return `\n `; + } + + case 'end_expr': + lastId = open.pop(); + + if (open.length && conds.length && conds.includes(open[open.length - 1])) { + const condEnd = open.pop(); + + expressionMap.set(``, { print: '', ...token }); + expressionMap.set(``, { print: content, ...token }); + + return ` `; + } + + if (inElement) { + expressionMap.set(`eexc${lastId}`, { print: content, ...token }); + + return ` eexc${lastId} `; + } + + expressionMap.set(``, { print: content, ...token }); + + return ` `; + } + }) + .join(''); + + if (open.length > 0) { + // TODO: better error wording? + throw 'missing <% end %>'; + } + + return [textWithPlaceholders, expressionMap]; +} + +module.exports = { + encodeExpressions, +}; diff --git a/lib/index.js b/lib/index.js new file mode 100644 index 0000000..590e245 --- /dev/null +++ b/lib/index.js @@ -0,0 +1,35 @@ +const parser = require('./parser'); +const printers = require('./printers'); + +module.exports = { + options: { + eexMultilineLineLength: { + type: 'int', + category: 'Global', + default: 98, + description: 'The line length passed to Code.formatted_string to format multiline expressions.', + range: { start: 0, end: Infinity, step: 1 }, + }, + eexMultilineNoParens: { + type: 'string', + category: 'Global', + array: true, + default: [{ value: [] }], + description: "The functions that shouldn't have arguments wrapped in parens when formatted multiline expression.", + }, + }, + defaultOptions: {}, + parsers: { + eex: parser, + }, + printers, + languages: [ + { + name: 'html-eex', + parsers: ['eex'], + // TODO: ADD mjml? + extensions: ['.html.eex', '.html.leex'], + vscodeLanguageIds: ['html-eex'], + }, + ], +}; diff --git a/lib/parser.js b/lib/parser.js new file mode 100644 index 0000000..f5cf6c0 --- /dev/null +++ b/lib/parser.js @@ -0,0 +1,12 @@ +'use strict'; + +const { tokenize } = require('./eex/tokenizer'); + +function parse(text, parsers, options) { + return tokenize(text); +} + +module.exports = { + parse, + astFormat: 'eex-ast', +}; diff --git a/lib/printers.js b/lib/printers.js new file mode 100644 index 0000000..13c9455 --- /dev/null +++ b/lib/printers.js @@ -0,0 +1,38 @@ +const { encodeExpressions } = require('./html_parser/encoder'); +const { decodeExpressions } = require('./html_parser/decoder'); +const { formatEex } = require('./eex/formatter'); +const { mapDoc } = require('prettier').doc.utils; +const { concat, group } = require('prettier').doc.builders; + +// args: path, print, textToDoc, options +function embed(path, _print, textToDoc, options) { + const tokens = path.stack[0]; + const formattedTokens = formatEex(tokens, options); + + const isTextWithExpressions = tokens.find((token) => token.type === 'text' && token.content.trim()); + + if (!isTextWithExpressions) { + return group(concat(formattedTokens.map((t) => t.content))); + } + + const [text, expressionMap] = encodeExpressions(formattedTokens); + + const htmlDoc = textToDoc(text, { parser: 'html' }); + + const callback = decodeExpressions(expressionMap); + + return mapDoc(htmlDoc, callback); +} + +module.exports = { + 'eex-ast': { + embed: (path, _print, textToDoc, options) => { + try { + return embed(path, _print, textToDoc, options); + } catch (e) { + console.error(e); + return options.originalText; + } + }, + }, +}; diff --git a/package.json b/package.json index b577e8c..12eed7f 100644 --- a/package.json +++ b/package.json @@ -1,18 +1,60 @@ { - "name": "prettier-eex", - "version": "1.0.0", + "name": "prettier-plugin-eex", + "version": "0.1.0", "license": "MIT", - "main": "src", + "repository": { + "type": "git", + "url": "https://github.com/adamzapasnik/prettier-plugin-eex" + }, + "author": { + "name": "Adam Zapaśnik", + "email": "contact@adamzapasnik.io", + "url": "https://adamzapasnik.io" + }, + "bugs": { + "url": "https://github.com/adamzapasnik/prettier-plugin-eex/issues" + }, + "homepage": "https://github.com/adamzapasnik/prettier-plugin-eex#readme", + "keywords": [ + "plugin", + "prettier", + "eex", + "elixir", + "html-eex" + ], + "main": "./lib/index.js", + "files": [ + "lib/", + "README.md", + "LICENSE", + "prettier_eex_formatter_release" + ], "scripts": { - "prettier": "prettier --plugin=. --parser=eex --print-width=120 s.eex", - "html": "prettier --print-width=120 test.html", + "prepare": "cd prettier_eex_formatter && MIX_ENV=prod mix escript.build && cp prettier_eex_formatter ../prettier_eex_formatter_release", "test": "jest" }, - "dependencies": { - "prettier": "^2.0.4" + "husky": { + "hooks": { + "pre-commit": "lint-staged" + } + }, + "lint-staged": { + "*.js": [ + "eslint —-fix" + ] }, "devDependencies": { - "jest": "^25.3.0", - "jest-snapshot-serializer-raw": "^1.1.0" + "eslint": "^7.18.0", + "eslint-config-prettier": "^7.2.0", + "eslint-plugin-import": "^2.22.1", + "eslint-plugin-prettier": "^3.3.1", + "husky": "^4.3.8", + "jest": "^26.6.3", + "jest-snapshot-serializer-raw": "^1.1.0", + "lint-staged": "^10.5.3", + "prettier": "^2.2.1" + }, + "peerDependencies": { + "prettier": "^2.0.0" } -} \ No newline at end of file +} diff --git a/prettier_eex_formatter b/prettier_eex_formatter new file mode 160000 index 0000000..7711940 --- /dev/null +++ b/prettier_eex_formatter @@ -0,0 +1 @@ +Subproject commit 771194035dee5f43fb4fc72d0881a10ecaa240e9 diff --git a/s.eex b/s.eex deleted file mode 100644 index 2758cd0..0000000 --- a/s.eex +++ /dev/null @@ -1,7 +0,0 @@ -
- class="attribute" -class="attribute" - -<% end %> ->
\ No newline at end of file diff --git a/src/i.js b/src/i.js deleted file mode 100644 index 0d92415..0000000 --- a/src/i.js +++ /dev/null @@ -1,3 +0,0 @@ -const prettier = require("prettier"); -const print = prettier.doc.printer.printDocToString; -const { concat, group, join, line, softline } = prettier.doc.builders; diff --git a/src/index.js b/src/index.js deleted file mode 100644 index 74253a5..0000000 --- a/src/index.js +++ /dev/null @@ -1,24 +0,0 @@ -"use strict"; - -// const options = require("./options"); -const parser = require("./parser"); -const printers = require("./printers"); - -module.exports = { - options: {}, - defaultOptions: {}, - parsers: { - eex: parser, - }, - printers, - languages: [ - { - // The language name - name: "Eex", - // Parsers that can parse this language. - // This can be built-in parsers, or parsers you have contributed via this plugin. - parsers: ["eex"], - extensions: [".eex", ".html.eex"], - }, - ], -}; diff --git a/src/parser.js b/src/parser.js deleted file mode 100644 index ee99b63..0000000 --- a/src/parser.js +++ /dev/null @@ -1,244 +0,0 @@ -"use strict"; - -const { tokenize } = require("./tokenizer"); - -// const RemoteExtension = require("./extensions/custom-extension"); -// const nunjucks = require("nunjucks"); -// const ast = require("./ast"); - -// const mustache = require("mustache"); -// const flatMap = require("array.prototype.flatmap"); - -// const env = new nunjucks.Environment(); -// env.addExtension('RemoteExtension', new RemoteExtension()); - -// function buildPlaceholderTag(id, isAttributePlaceholder, type, nextId) { -// const pid = `p${id}`; -// const keepLine = type === TAG_INLINE || type === TAG_FORK; - -// const tagOpenStartChar = isAttributePlaceholder ? "o$" : keepLine ? "<" : "\n<"; -// const tagOpenEndChar = isAttributePlaceholder ? " " : keepLine ? "/> " : ">\n"; -// const tagCloseStartChar = isAttributePlaceholder ? " c$" : `\n Boolean(x)) -// .join(" "); -// } - -// // TODO: Split out -// const TAG_INLINE = 0; -// const TAG_BLOCK = 1; -// const TAG_END = 2; -// const TAG_FORK = 3; - -// // TODO: Split out -// const TAG_MAP = new Map([ -// ["if", TAG_BLOCK], -// ["for", TAG_BLOCK], -// ["asyncEach", TAG_BLOCK], -// ["asyncAll", TAG_BLOCK], -// ["macro", TAG_BLOCK], -// ["block", TAG_BLOCK], -// ["raw", TAG_BLOCK], -// ["verbatim", TAG_BLOCK], -// ["filter", TAG_BLOCK], -// ["call", TAG_BLOCK], -// ["set", TAG_INLINE], -// ["extends", TAG_INLINE], -// ["include", TAG_INLINE], -// ["import", TAG_INLINE], -// ["from", TAG_INLINE], -// ["else", TAG_FORK], -// ["elseif", TAG_FORK], -// ["elif", TAG_FORK], -// ]); - -// function parseTag(token, tagStack, latestText, forceInline, tags = ["{%", "%}"], tagMap = new Map()) { -// const { type, value, start, end } = token; - -// // Parsed tag -// if (type === "name") { -// // TODO: Solidify -// const tagName = value.split(" ")[0]; - -// let tagType = forceInline ? TAG_INLINE : tagName.startsWith("end") ? TAG_END : tagMap.get(tagName); -// if (tagType === undefined) tagType = TAG_BLOCK; - -// let tagId; -// let nextId; - -// const lastTagStartChar = latestText.lastIndexOf("<"); -// const lastTagEndChar = latestText.lastIndexOf(">"); -// let isAttributePlaceholder = lastTagStartChar > lastTagEndChar; - -// if (tagType === TAG_BLOCK && tagStack.length && !forceInline) { -// // Support nested tags within an element -// const endStackTag = tagStack[tagStack.length - 1]; -// isAttributePlaceholder = endStackTag.isAttributePlaceholder; -// } - -// if (tagType === TAG_END || (tagType === TAG_FORK && !forceInline)) { -// const offStackTag = tagStack.pop(); -// tagId = offStackTag.tagId; -// isAttributePlaceholder = offStackTag.isAttributePlaceholder; - -// if (tagType === TAG_FORK) { -// nextId = placeholderId++; -// } -// } else { -// tagId = placeholderId++; -// } - -// const tagLength = end - start; - -// const { placeholder, key } = buildPlaceholderTag(tagId, isAttributePlaceholder, tagType, nextId); - -// token.type = "tag"; -// token.tag = tagName; -// token.tagId = nextId || tagId; -// token.tagType = tagType; -// token.placeholder = placeholder; -// token.key = key; -// token.isAttributePlaceholder = isAttributePlaceholder; -// token.isFork = tagType === TAG_FORK; - -// // TODO: Rewrite value -// token.print = `${tags[0]} ${buildValue(value, {})} ${tags[1]}`; // TODO: Use configured tags - -// if (tagType === TAG_BLOCK || tagType === TAG_FORK) { -// tagStack.push(token); -// } -// } - -// return token; -// } - -// let placeholderId = 0; - -// // args: text, parsers, options -// function parse(text, parsers, options) { -// const variableTags = ["{{", "}}"]; -// // const nunjParsed = nunjucks.parser.parse(text, env.extensionsList); -// // const mustacheParsed = mustache.parse(text, ["{%", "%}"]); -// const variableRegex = new RegExp(variableTags[0]); - -// const tagMap = new Map(TAG_MAP); -// options.blockTags.forEach((t) => tagMap.set(t, TAG_BLOCK)); -// options.inlineTags.forEach((t) => tagMap.set(t, TAG_INLINE)); -// options.forkTags.forEach((t) => tagMap.set(t, TAG_FORK)); - -// const tagStack = []; -// let latestText = ""; - -// // TODO: Split out -// // Handle tags -// return flatMap(mustacheParsed, ([type, value, start, end]) => { -// let token = { -// type, -// value, -// start, -// end, -// }; - -// const isVariable = variableRegex.test(value); - -// if (type === "text") { -// // Text tag, check to see if it contains the variable opening tags -// if (isVariable) { -// const parsed = mustache.parse(value, variableTags); -// let varLatestText = latestText; - -// return parsed.map(([type, value, start, end]) => { -// const varToken = { -// type, -// value, -// start, -// end, -// }; - -// if (type === "text") { -// varLatestText = value.trim() ? value : varLatestText; -// return varToken; -// } - -// return parseTag(varToken, tagStack, varLatestText, true, variableTags, tagMap); -// }); -// } else { -// latestText = value.trim() ? value : latestText; -// } -// } else { -// token = parseTag(token, tagStack, latestText, false, ["{%", "%}"], tagMap); -// } - -// return token; -// }); -// } - -// TODO: figure this shit out -function locStart(node) { - // eslint-disable-next-line no-console - console.log("locStart", node); - return -1; -} - -// TODO: figure this shit out - -function locEnd(node) { - // eslint-disable-next-line no-console - console.log("locEnd", node); - return -1; -} -// TODO: figure this shit out - -function hasPragma(/* text */) { - return false; -} -// function hasPragma(text) {} - -// function preprocess(text, options) {} -function eexParse(text, parsers, options) { - // console.log(tokenize(text)); - return tokenize(text); -} -module.exports = { - parse: eexParse, - // The name of the AST that - astFormat: "eex-ast", - hasPragma, - locStart, - locEnd, - //preprocess: preprocess -}; diff --git a/src/printer/helpers.js b/src/printer/helpers.js deleted file mode 100644 index be9e4c2..0000000 --- a/src/printer/helpers.js +++ /dev/null @@ -1,23 +0,0 @@ -/** - * Printer Helpers - */ - -"use strict"; - -function isBuilderLine(part) { - if (typeof part !== "object") { - return false; - } - - switch (part.type) { - case "line": - case "break-parent": - return true; - default: - return false; - } -} - -module.exports = { - isBuilderLine, -}; diff --git a/src/printer/placeholders.js b/src/printer/placeholders.js deleted file mode 100644 index b69a124..0000000 --- a/src/printer/placeholders.js +++ /dev/null @@ -1,39 +0,0 @@ -/** - * Placeholder Functions - */ - -const PLACEHOLDER_REGEX = /p\d+/; -const ATTRIBUTE_PLACEHOLDER_REGEX = /([oc])\$p(\d+)/g; - -function mapPlaceholders(templateArray, placeholderMap) { - return templateArray.reduce((acc, token) => { - const { type, value, placeholder, isFork, isAttributePlaceholder } = token; - let { key } = token; - - if (type === "tag") { - if (isFork) { - const forkElements = placeholder.trim().split(" "); - const forkElement1 = forkElements[0].trim(); - const forkElement2 = forkElements[1].trim(); - key = forkElement2.replace(">", ""); - - placeholderMap.set(forkElement1, { - print: "", - isFork, - isAttributePlaceholder, - }); - } - - placeholderMap.set(key, token); - return acc + placeholder; - } - - return acc + value; - }, ""); -} - -module.exports = { - PLACEHOLDER_REGEX, - ATTRIBUTE_PLACEHOLDER_REGEX, - mapPlaceholders, -}; diff --git a/src/printer/restore.js b/src/printer/restore.js deleted file mode 100644 index 52e8e35..0000000 --- a/src/printer/restore.js +++ /dev/null @@ -1,279 +0,0 @@ -/** - * Restore Functions - */ - -const { breakParent, concat, indent, softline, hardline, group } = require("prettier").doc.builders; -const { PLACEHOLDER_REGEX, ATTRIBUTE_PLACEHOLDER_REGEX } = require("./placeholders"); -const { isBuilderLine } = require("./helpers"); - -function findKey(key, placeholderMap) { - if (placeholderMap.has(key)) return key; - - const altKey = key.replace(">", ""); - if (placeholderMap.has(altKey)) return altKey; - - return undefined; -} - -function findOriginal(part, placeholderMap) { - let key = ""; - const partIsString = typeof part === "string"; - const partIsPlaceholder = partIsString && PLACEHOLDER_REGEX.test(part); - - if (partIsString && part === "") return; - - if (partIsPlaceholder) { - key = findKey(part, placeholderMap); - } else { - // These are usually elements - // TODO: Split this out - const partIsObject = typeof part === "object"; - const contentsIsString = partIsObject && typeof part.contents === "string"; - const contentsIsPlaceholder = contentsIsString && PLACEHOLDER_REGEX.test(part.contents); - - if (contentsIsPlaceholder) { - key = findKey(part.contents, placeholderMap); - } - } - - if (!key) return; - - if (placeholderMap.has(key)) { - const original = placeholderMap.get(key); - placeholderMap.delete(key); - return original; - } - - // eslint-disable-next-line no-console - // console.warn("Unable to find original for placeholder:", key); -} - -const isElementAttributePlaceholder = (part) => - // TODO: Pull strings from constants file - part.startsWith("o$") || part.startsWith("c$"); - -const hasElementAttributePlaceholder = (part) => - // TODO: Pull strings from constants file - part.includes("o$") || part.includes("c$"); - -function printAttributePlaceholder(arr, placeholderMap) { - // Find "blocks" and indent contents. Remember to support nested. - const parts = []; - let index = -1; - - for (const part of arr) { - index++; - - // Only care about placeholder strings - if (typeof part !== "string" || !hasElementAttributePlaceholder(part)) { - parts.push(part); - continue; - } - - // Placeholder is within a string, break into parts and recurse - if (typeof part === "string" && !isElementAttributePlaceholder(part)) { - let partBreakdown = part; - const placeholders = part.match(ATTRIBUTE_PLACEHOLDER_REGEX); - const attributeParts = []; - - while (placeholders.length) { - const placeholder = placeholders.shift(); - const splitAttribute = partBreakdown.split(placeholder); - - if (splitAttribute[0]) { - // Include the attribute part if it's not just whitespace - if (splitAttribute[0].trim()) { - attributeParts.push(splitAttribute[0]); - } else { - // If it's whitespace, it's a softline - attributeParts.push(" "); - attributeParts.push(softline); - } - } - - attributeParts.push(placeholder); - partBreakdown = splitAttribute[1]; - - if (placeholders.length === 0) attributeParts.push(splitAttribute[1].trim()); - } - - const attributePartGroup = printAttributePlaceholder(attributeParts, placeholderMap); - parts.push(group(concat(attributePartGroup))); - continue; - } - - const original = findOriginal(part, placeholderMap); - - if (original) { - parts.push(original.print); - - if (original.tagType === 1 || original.tagType === 3) { - // Capture parts until end tag found - const endPlaceholder = part.replace("o", "c"); - let found = false; - let captureIndex = index; - const maxIndex = arr.length; - let captureCount = 0; - - while (!found && captureIndex < maxIndex) { - captureIndex++; - captureCount++; - - if (arr[captureIndex] === endPlaceholder) found = true; - } - - const indentGroup = arr.splice(index + 1, captureCount).map((item) => - // Change all softlines to hardlines - typeof item === "object" && item.type === "line" ? hardline : item - ); - - const lastGroupItem = indentGroup[indentGroup.length - 1]; - let closeGroup = hardline; - - // Remove end placeholder if it's a fork - if (lastGroupItem === endPlaceholder) { - const originalLastGroupItem = findOriginal(lastGroupItem, placeholderMap); - - if (originalLastGroupItem.isFork) { - indentGroup.pop(); // Empty tag - indentGroup.pop(); // Extra line - } else if (originalLastGroupItem.tagType === 2) { - indentGroup.pop(); // End tag - indentGroup.pop(); // Extra line - closeGroup = concat([hardline, originalLastGroupItem.print]); - } - } - - // Indent group - const doc = concat([group(indent(concat(printAttributePlaceholder(indentGroup, placeholderMap)))), closeGroup]); - - // Remove extra line - let deleteCount = 0; - if (isBuilderLine(arr[index + 1])) { - deleteCount = 1; - } - - arr.splice(index + 1, deleteCount, doc); - } - continue; - } - - // Fallback to doing nothing - parts.push(part); - } - - return parts; -} - -function mapRestoreTags(placeholderMap) { - return function (doc) { - if (!doc.parts) { - return doc; - } - - const arr = [...doc.parts]; - const parts = []; - - // Markup within an element? - const isAttributePlaceholder = arr.some((part) => - typeof part === "string" ? hasElementAttributePlaceholder(part) : false - ); - - // Self Closing - if (isSelfClosingPlaceholder(arr)) { - const selfClosingPlaceholder = getSelfClosingPlaceholder( - { - parts: arr, - }, - placeholderMap - ); - - parts.push(selfClosingPlaceholder.print); - - // Maintain whitespace if it's there. - if (arr[2] && arr[2].type === "line") parts.push(arr[2]); - } - - // Within Element - else if (isAttributePlaceholder) { - parts.push(...printAttributePlaceholder(arr, placeholderMap)); - } - - // Block (probably) - else { - let index = -1; - - for (const part of arr) { - index++; - const original = findOriginal(part, placeholderMap); - - if (original) { - if (original.print !== "") { - if (original.isFork) { - parts.push(concat([original.print, breakParent])); - } else { - parts.push(original.print); - } - continue; - } - - if (original.isFork && original.print === "") { - // If not within an element, end immediately to prevent excess blank lines - if (!original.isAttributePlaceholder) break; - } - - continue; - } - - parts.push(part); - } - - if (parts.some((part) => part === undefined)) { - throw Error("Cannot have undefined parts"); - } - } - - return Object.assign({}, doc, { parts }); - }; -} - -// TODO: Split out -function isSelfClosingPlaceholder(arr) { - if (!Array.isArray(arr) || !arr.length) { - return false; - } - - const isOpeningGroup = arr[0].type === "group"; - const isSelfClosing = arr[1] === "/>"; - - if (!isOpeningGroup || !isSelfClosing) { - return; - } - - return PLACEHOLDER_REGEX.test(arr[0].contents.contents); -} - -// TODO: Split out -function getSelfClosingPlaceholder(doc, placeholderMap) { - if (typeof doc !== "object") { - return; - } - - const { parts } = doc; - - if (!parts) { - return; - } - - const isPlaceholder = isSelfClosingPlaceholder(parts); - if (!isPlaceholder) { - return; - } - - const placeholder = parts[0].contents.contents.trim(); - return placeholderMap.get(placeholder); -} - -module.exports = { - mapRestoreTags, -}; diff --git a/src/printers.js b/src/printers.js deleted file mode 100644 index dc7eb7e..0000000 --- a/src/printers.js +++ /dev/null @@ -1,572 +0,0 @@ -"use strict"; - -// const { mapRestoreTags } = require("./printer/restore"); -const { mapPlaceholders } = require("./printer/placeholders"); -const { mapDoc } = require("prettier").doc.utils; -const PLACEHOLDER_REGEX = /f\d+/; - -const { breakParent, concat, indent, softline, hardline, group, line, join } = require("prettier").doc.builders; -let embedTextToDoc; - -// args: path, options, print -function print(path) { - const parsedArray = path.stack[0]; - // 1. Need to find all Nunjucks nodes and replace them with placeholders. - // 2. Run the place-held doc through the HTML formatter. - // 3. Upon return, re-instate the Nunjucks template tags with formatting. - - const placeholderMap = new Map(); - - // 1. Install placeholders. - const placeheldString = mapPlaceholders(parsedArray, placeholderMap); - - // 2. Run through HTML formatter. - const htmlDoc = hoistedTextToDoc(placeheldString, { parser: "html" }); - - // 3. Restore Tags. - const callback = mapRestoreTags(placeholderMap); - return mapDoc(htmlDoc, callback); -} - -// TODO: later -// args: path, print, textToDoc, options -function embed(path, print, textToDoc) { - embedTextToDoc = textToDoc; - - return null; -} - -const hasElementAttributePlaceholder = (part) => part.match(/eex\d+/); - -function printAttributePlaceholder(arr, placeholderMap) { - // Find "blocks" and indent contents. Remember to support nested. - const parts = []; - let index = -1; - console.log("inPRINT"); - console.log(arr); - let subParts = []; - let indenta = false; - for (const part of arr) { - index++; - // console.log("nextedpart", part); - // Only care about placeholder strings - console.log("parts", parts); - console.log("subParts", subParts); - console.log("part", part); - - if (typeof part !== "string" || !hasElementAttributePlaceholder(part)) { - if (typeof part === "object" && part.type === "line") { - if (indenta) { - continue; - } - } - // // parts.push({ type: "softline" }); - // // parts.push(indent); - // continue; - // } - // parts.push(indent([part, softline])); - if (indenta) { - subParts.push(concat([hardline, part])); - } else { - parts.push(part); - } - // } else { - // } - // // parts.push(concat([indent, part])); - continue; - } - //NOTE: MMM, TO DZIALA fajnie - - let el = null; - const tt = part.replace(/eex\d+/, function (match) { - // let key = findKey(match, placeholderMap); - // console.log() - el = placeholderMap.get(match); - return el.print; - }); - console.log(el); - // parts.push(newPart); - if (el.type === "multiline_expr") { - // parts.push(indent(concat([tt, hardline]))); - parts.push(concat(tt)); - indenta = true; - // subParts.push(tt); - } else if (el.type === "end_expr") { - // subParts.push(tt); - // join(concat([',', line]) - parts.push(indent(concat(subParts))); - parts.push(concat([hardline, tt])); - console.log("subParts", subParts); - console.log(JSON.stringify(parts, null, 2)); - subParts = []; - } else { - } - // https://dev.to/fvictorio/how-to-write-a-plugin-for-prettier-6gi - // } - // parts.push(concat([el, softline])); - - // parts.push(indent); - // parts.push(softline); - // parts.push(newPart); - - continue; - // Placeholder is within a string, break into parts and recurse - if (typeof part === "string") { - // && !hasElementAttributePlaceholder(part)) { - let partBreakdown = part; - const placeholders = part.match(PLACEHOLDER_REGEX); - // console.log("ppp", placeholders); - const attributeParts = []; - - while (placeholders.length) { - const placeholder = placeholders.shift(); - const splitAttribute = partBreakdown.split(placeholder); - - if (splitAttribute[0]) { - // Include the attribute part if it's not just whitespace - if (splitAttribute[0].trim()) { - attributeParts.push(splitAttribute[0]); - } else { - // If it's whitespace, it's a softline - attributeParts.push(" "); - attributeParts.push(softline); - } - } - - attributeParts.push(placeholder); - partBreakdown = splitAttribute[1]; - - if (placeholders.length === 0) { - attributeParts.push(splitAttribute[1].trim()); - } - } - - const attributePartGroup = printAttributePlaceholder(attributeParts, placeholderMap); - parts.push(group(concat(attributePartGroup))); - continue; - } - - const original = findOriginal(part, placeholderMap); - - if (original) { - parts.push(original.print); - - if (original.tagType === 1 || original.tagType === 3) { - // Capture parts until end tag found - const endPlaceholder = part.replace("o", "c"); - let found = false; - let captureIndex = index; - const maxIndex = arr.length; - let captureCount = 0; - - while (!found && captureIndex < maxIndex) { - captureIndex++; - captureCount++; - - if (arr[captureIndex] === endPlaceholder) { - found = true; - } - } - - const indentGroup = arr.splice(index + 1, captureCount).map((item) => - // Change all softlines to hardlines - typeof item === "object" && item.type === "line" ? hardline : item - ); - - const lastGroupItem = indentGroup[indentGroup.length - 1]; - let closeGroup = hardline; - - // Remove end placeholder if it's a fork - if (lastGroupItem === endPlaceholder) { - const originalLastGroupItem = findOriginal(lastGroupItem, placeholderMap); - - if (originalLastGroupItem.isFork) { - indentGroup.pop(); // Empty tag - indentGroup.pop(); // Extra line - } else if (originalLastGroupItem.tagType === 2) { - indentGroup.pop(); // End tag - indentGroup.pop(); // Extra line - closeGroup = concat([hardline, originalLastGroupItem.print]); - } - } - - // Indent group - const doc = concat([group(indent(concat(printAttributePlaceholder(indentGroup, placeholderMap)))), closeGroup]); - - // Remove extra line - let deleteCount = 0; - // if (isBuilderLine(arr[index + 1])) { - // deleteCount = 1; - // } - - arr.splice(index + 1, deleteCount, doc); - } - continue; - } - - // Fallback to doing nothing - parts.push(part); - } - console.log("beforeleave", group(concat(parts))); - console.log(JSON.stringify(group(concat(parts)), null, 2)); - return [group(concat(parts))]; - // return parts; -} -function mapRestoreTags(mapEex) { - return function (doc) { - if (!doc.parts) { - return doc; - } - - const arr = [...doc.parts]; - const parts = []; - - const isInElement = arr.some((part) => (typeof part === "string" ? hasElementAttributePlaceholder(part) : false)); - - // Self Closing - if (isSelfClosingPlaceholder(arr)) { - const selfClosingPlaceholder = getSelfClosingPlaceholder( - { - parts: arr, - }, - mapEex - ); - - parts.push(selfClosingPlaceholder.print); - - // Maintain whitespace if it's there. - if (arr[2] && arr[2].type === "line") { - parts.push(arr[2]); - } - } - - // Within Element - else if (isInElement) { - console.log("wtf"); - // console.log("\nbuattr"); - // console.log("partsss", arr); - parts.push(...printAttributePlaceholder(arr, mapEex)); - // parts.push(...arr); - } - - // Block (probably) - else { - for (const part of arr) { - const original = findOriginal(part, mapEex); - - // console.log("part", part); - if (original) { - if (original.print !== "") { - if (original.isMidExpression) { - parts.push(concat([original.print, breakParent])); - } else { - parts.push(original.print); - } - continue; - } - - if (original.isMidExpression && original.print === "") { - break; - // If not within an element, end immediately to prevent excess blank lines - // if (!original.isAttributePlaceholder) { - // } - } - - continue; - } - - parts.push(part); - } - - if (parts.some((part) => part === undefined)) { - throw Error("Cannot have undefined parts"); - } - } - - return Object.assign({}, doc, { parts }); - return doc; - }; -} - -function isSelfClosingPlaceholder(arr) { - if (!Array.isArray(arr) || !arr.length) { - return false; - } - - const isOpeningGroup = arr[0].type === "group"; - const isSelfClosing = arr[1] === "/>"; - - if (!isOpeningGroup || !isSelfClosing) { - return; - } - - return PLACEHOLDER_REGEX.test(arr[0].contents.contents); -} - -// TODO: Split out -function getSelfClosingPlaceholder(doc, placeholderMap) { - if (typeof doc !== "object") { - return; - } - - const { parts } = doc; - - if (!parts) { - return; - } - - const isPlaceholder = isSelfClosingPlaceholder(parts); - if (!isPlaceholder) { - return; - } - - const placeholder = parts[0].contents.contents.trim(); - return placeholderMap.get(placeholder); -} - -function findKey(key, placeholderMap) { - if (placeholderMap.has(key)) { - return key; - } - - const altKey = key.replace(">", ""); - if (placeholderMap.has(altKey)) { - return altKey; - } - - return undefined; -} -function findOriginal(part, placeholderMap) { - let key = ""; - const partIsString = typeof part === "string"; - const partIsPlaceholder = partIsString && PLACEHOLDER_REGEX.test(part); - - if (partIsString && part === "") { - return; - } - - if (partIsPlaceholder) { - key = findKey(part, placeholderMap); - } else { - // These are usually elements - // TODO: Split this out - const partIsObject = typeof part === "object"; - const contentsIsString = partIsObject && typeof part.contents === "string"; - const contentsIsPlaceholder = contentsIsString && PLACEHOLDER_REGEX.test(part.contents); - - if (contentsIsPlaceholder) { - key = findKey(part.contents, placeholderMap); - } - } - - if (!key) { - return; - } - - if (placeholderMap.has(key)) { - const original = placeholderMap.get(key); - placeholderMap.delete(key); - return original; - } -} - -function printEex(path, options, print) { - const text = options.originalText; - - const regexp = /<%.*%>/g; - - let id = 0; - let open = []; - - const mapEex = new Map([]); - const replaced = text.replace(regexp, function (match, offset) { - if (/ do %>/.test(match) || / -> %>/.test(match)) { - id++; - open.push(id); - mapEex.set(``; - } else if (/<% end %>/.test(match)) { - const lastId = open.pop(); - mapEex.set(``, { print: match }); - - return `\n`; - } else if (/<% else %>/.test(match)) { - const lastId = open.pop(); - - let s = ""; - s = s.concat(`\n `); - mapEex.set(``, { print: "", isMidExpression: true }); - - id++; - open.push(id); - s = s.concat(``); - mapEex.set(`"); - const isAttributePlaceholder = lastTagStartChar > lastTagEndChar; - if (isAttributePlaceholder) { - return "eex12"; - } - id++; - mapEex.set(``; - } - }); - const htmlDoc = embedTextToDoc(replaced, { parser: "html" }); - const callback = mapRestoreTags(mapEex); - - return mapDoc(htmlDoc, callback); -} - -function printEext(path, options, print) { - let id = 0; - let open = []; - let lastId; - const mapEex = new Map([]); - - const tokens = path.stack[0]; - // console.log(tokens); - const placeholder = tokens - .map((token) => { - const { type: type, content: content, isInElement: isInElement } = token; - switch (type) { - case "text": - return content; - - case "multiline_expr": - id++; - open.push(id); - if (isInElement) { - mapEex.set(`eex${id}`, { print: content, isInElement, type: type }); - - return `eex${id}`; - } - mapEex.set(``; - - case "expr": - id++; - if (isInElement) { - mapEex.set(`eex${id}`, { print: content, isInElement, type: type }); - - return `eex${id}`; - } - - mapEex.set(``; - - case "mid_expr": - if (isInElement) { - id++; - mapEex.set(`eex${id}`, { print: content, isInElement, type: type }); - return `eex${id}`; - } - lastId = open.pop(); - - let s = `\n `; - mapEex.set(``, { print: "", isMidExpression: true, type: type }); - - id++; - open.push(id); - s = s.concat(``); - mapEex.set(``, { print: content, type: type }); - - return `\n`; - - default: - // return ""; - break; - } - }) - .join(""); - - console.log(placeholder); - const htmlDoc = embedTextToDoc(placeholder, { parser: "html" }); - - const callback = mapRestoreTags(mapEex); - return mapDoc(htmlDoc, callback); - return []; -} - -module.exports = { - "eex-ast": { - print: printEext, - embed, - }, -}; - -// if 1 -// if 2 -// ... -// end /2 -// else /1 3 -// if 4 -// ... -// else /4 5 -// ... -// end /5 -// end /3 - -// if -// if -// ... -// end -// else -// if -// ... -// else -// ... -// end -// end - -// const replaced = text.replace(regexp, function (match, offset) { -// if (/ do %>/.test(match) || / -> %>/.test(match)) { -// id++; -// open.push(id); -// mapEex.set(``; -// } else if (/<% end %>/.test(match)) { -// } else if (/<% else %>/.test(match)) { -// const lastId = open.pop(); - -// let s = ""; -// s = s.concat(`\n `); -// mapEex.set(``, { print: "", isMidExpression: true }); - -// id++; -// open.push(id); -// s = s.concat(``); -// mapEex.set(`"); -// const isAttributePlaceholder = lastTagStartChar > lastTagEndChar; -// if (isAttributePlaceholder) { -// return "eex12"; -// } -// id++; -// mapEex.set(``; -// } -// }); diff --git a/src/tokenizer.js b/src/tokenizer.js deleted file mode 100644 index 5a752d0..0000000 --- a/src/tokenizer.js +++ /dev/null @@ -1,50 +0,0 @@ -"use strict"; - -function tokenize(text) { - const regexp = /<%.*?%>/g; - - let id = 0; // dont need - let tokens = []; - // let open = []; - let cursorPosition = 0; - let htmlString = ""; - - text.replace(regexp, function (match, offset) { - if (cursorPosition !== offset) { - // TODO: not sure if I need it - const string = text.slice(cursorPosition, offset); - tokens.push({ type: "text", content: string }); - htmlString += string; - cursorPosition = offset + match.length; // + 1? - } - // const latestText = htmlString.slice(0, offset); - const lastTagStartChar = htmlString.lastIndexOf("<"); - const lastTagEndChar = htmlString.lastIndexOf(">"); - const isInElement = lastTagStartChar > lastTagEndChar; - let type; - - if (/ do %>/.test(match) || / -> %>/.test(match)) { - type = "multiline_expr"; - } else if (/<% end %>/.test(match)) { - type = "end_expr"; - } else if (/<% else %>/.test(match)) { - type = "mid_expr"; - } else { - type = "expr"; - } - tokens.push({ type: type, content: match, isInElement }); - }); - - const string = text.slice(cursorPosition); - - if (cursorPosition !== text.length) { - // TODO: check if length or -1 - tokens.push({ type: "text", content: string }); - } - console.log(tokens); - - return tokens; -} -module.exports = { - tokenize, -}; diff --git a/test.eex b/test.eex deleted file mode 100644 index da82ebb..0000000 --- a/test.eex +++ /dev/null @@ -1,30 +0,0 @@ -
"> -<%= "f" %> -
- - -
-<%= a = "b" %> -
-
- <%= a = "b" %> -
- dddddddddddddmdddddddmdddddddmdddddddmdddddddmdddddddmdddddddmdddddddmdddddddmdddddddmdddddddmdm -
-
- -<%= if ff do %> -<% "ff" %> -<% end %> - - -<%= if ff do %> -bb -<% else %> -<% "ff" %> -<%= form_for @conn, Routes.foo_path(@conn, :new), [as: :foo], fn f -> %> -<%= text_input f, :for %> -<%= submit "Search" %> -<% end %> -<% end %> \ No newline at end of file diff --git a/test.html b/test.html deleted file mode 100644 index 6ff3dad..0000000 --- a/test.html +++ /dev/null @@ -1,3 +0,0 @@ -
"> -ss -
\ No newline at end of file diff --git a/tests/case/__snapshots__/jsfmt.spec.js.snap b/tests/case/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 0000000..e82319d --- /dev/null +++ b/tests/case/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,90 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`case.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + <%= case sm do %> + <% ds -> %> + ds + <% "text" -> %> + 43 + <% end %> + +=====================================output===================================== +<%= case sm do %> + <% ds -> %> + ds + <% "text" -> %> + 43 +<% end %> + +================================================================================ +`; + +exports[`case_in_html.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== +
+ <%= case sm do %> + <% ds -> %> + ds + <% "text" -> %> +
ds
+ <% end %> +
+ + <%= case sm do %> + <% ds -> %> + ds + <% "text" -> %> +
ds
+ <% end %> + +
+ +
+ <%= case sm do %> + <% ds -> %> + ds + <% "text" -> %> +
+ ds +
+ <% end %> +
+ +=====================================output===================================== +
+ <%= case sm do %> + <% ds -> %> + ds + <% "text" -> %> +
ds
+ <% end %> +
+ + <%= case sm do %> + <% ds -> %> + ds + <% "text" -> %> +
ds
+ <% end %> +
+ +
+ <%= case sm do %> + <% ds -> %> + ds + <% "text" -> %> +
ds
+ <% end %> +
+ +================================================================================ +`; diff --git a/tests/case/case.html.eex b/tests/case/case.html.eex new file mode 100644 index 0000000..21af91e --- /dev/null +++ b/tests/case/case.html.eex @@ -0,0 +1,6 @@ + <%= case sm do %> + <% ds -> %> + ds + <% "text" -> %> + 43 + <% end %> diff --git a/tests/case/case_in_html.html.eex b/tests/case/case_in_html.html.eex new file mode 100644 index 0000000..877e860 --- /dev/null +++ b/tests/case/case_in_html.html.eex @@ -0,0 +1,28 @@ +
+ <%= case sm do %> + <% ds -> %> + ds + <% "text" -> %> +
ds
+ <% end %> +
+ + <%= case sm do %> + <% ds -> %> + ds + <% "text" -> %> +
ds
+ <% end %> + +
+ +
+ <%= case sm do %> + <% ds -> %> + ds + <% "text" -> %> +
+ ds +
+ <% end %> +
diff --git a/tests/case/jsfmt.spec.js b/tests/case/jsfmt.spec.js new file mode 100644 index 0000000..24e9607 --- /dev/null +++ b/tests/case/jsfmt.spec.js @@ -0,0 +1 @@ +run_spec(__dirname, ['eex']); diff --git a/tests/cond/__snapshots__/jsfmt.spec.js.snap b/tests/cond/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 0000000..f179b83 --- /dev/null +++ b/tests/cond/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,91 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`cond.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== +<%= cond do %> +<% ee -> %> +ede + <% true -> %> +
dsd
+<% end %> + +=====================================output===================================== +<%= cond do %> + <% ee -> %> + ede + <% true -> %> +
dsd
+<% end %> + +================================================================================ +`; + +exports[`cond_html.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== +
+<%= cond do %> +<% ee -> %> +ede + <% true -> %> +
dsd
+<% end %> + +
+ +<%= cond do %> +<% ee -> %> +ede + <% true -> %> +
dsd
+<% end %> + +
+ +
+<%= cond do %> +<% ee -> %> +ede + <% true -> %> +
+ dsd +
+<% end %> +
+ +=====================================output===================================== +
+ <%= cond do %> + <% ee -> %> + ede + <% true -> %> +
dsd
+ <% end %> +
+ + <%= cond do %> + <% ee -> %> + ede + <% true -> %> +
dsd
+ <% end %> +
+ +
+ <%= cond do %> + <% ee -> %> + ede + <% true -> %> +
dsd
+ <% end %> +
+ +================================================================================ +`; diff --git a/tests/cond/cond.html.eex b/tests/cond/cond.html.eex new file mode 100644 index 0000000..7531f05 --- /dev/null +++ b/tests/cond/cond.html.eex @@ -0,0 +1,6 @@ +<%= cond do %> +<% ee -> %> +ede + <% true -> %> +
dsd
+<% end %> diff --git a/tests/cond/cond_html.html.eex b/tests/cond/cond_html.html.eex new file mode 100644 index 0000000..da82513 --- /dev/null +++ b/tests/cond/cond_html.html.eex @@ -0,0 +1,29 @@ +
+<%= cond do %> +<% ee -> %> +ede + <% true -> %> +
dsd
+<% end %> + +
+ +<%= cond do %> +<% ee -> %> +ede + <% true -> %> +
dsd
+<% end %> + +
+ +
+<%= cond do %> +<% ee -> %> +ede + <% true -> %> +
+ dsd +
+<% end %> +
diff --git a/tests/cond/jsfmt.spec.js b/tests/cond/jsfmt.spec.js new file mode 100644 index 0000000..24e9607 --- /dev/null +++ b/tests/cond/jsfmt.spec.js @@ -0,0 +1 @@ +run_spec(__dirname, ['eex']); diff --git a/tests/eex_formatter/__snapshots__/jsfmt.spec.js.snap b/tests/eex_formatter/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 0000000..8ebb5f4 --- /dev/null +++ b/tests/eex_formatter/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,20 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`multiline.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== +
+ <%= link + %> +
+ +=====================================output===================================== +
+ <%= link %> +
+ +================================================================================ +`; diff --git a/tests/eex_formatter/jsfmt.spec.js b/tests/eex_formatter/jsfmt.spec.js new file mode 100644 index 0000000..24e9607 --- /dev/null +++ b/tests/eex_formatter/jsfmt.spec.js @@ -0,0 +1 @@ +run_spec(__dirname, ['eex']); diff --git a/tests/eex_formatter/multiline.html.eex b/tests/eex_formatter/multiline.html.eex new file mode 100644 index 0000000..b5f7e48 --- /dev/null +++ b/tests/eex_formatter/multiline.html.eex @@ -0,0 +1,4 @@ +
+ <%= link + %> +
diff --git a/tests/for/__snapshots__/jsfmt.spec.js.snap b/tests/for/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 0000000..1b34a5d --- /dev/null +++ b/tests/for/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,75 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`for.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== +<%= for item <- @items do %> + <%= item %> +item + <% end %> + +=====================================output===================================== +<%= for item <- @items do %> + <%= item %> + item +<% end %> + +================================================================================ +`; + +exports[`for_in_html.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== +
+<%= for item <- @items do %> + <%= item %> + item +<% end %> +
+ +<%= for item <- @items do %> + <%= item %> + item +<% end %> + + +
+<%= for item <- @items do %> +
+<%= item %> +
+ item<%= fm %> +<% end %> +
+ +=====================================output===================================== +
+ <%= for item <- @items do %> + <%= item %> + item + <% end %> +
+ + <%= for item <- @items do %> + <%= item %> + item + <% end %> + + +
+ <%= for item <- @items do %> +
+ <%= item %> +
+ item<%= fm %> + <% end %> +
+ +================================================================================ +`; diff --git a/tests/for/for.html.eex b/tests/for/for.html.eex new file mode 100644 index 0000000..69249e5 --- /dev/null +++ b/tests/for/for.html.eex @@ -0,0 +1,4 @@ +<%= for item <- @items do %> + <%= item %> +item + <% end %> diff --git a/tests/for/for_in_html.html.eex b/tests/for/for_in_html.html.eex new file mode 100644 index 0000000..188e72a --- /dev/null +++ b/tests/for/for_in_html.html.eex @@ -0,0 +1,21 @@ +
+<%= for item <- @items do %> + <%= item %> + item +<% end %> +
+ +<%= for item <- @items do %> + <%= item %> + item +<% end %> + + +
+<%= for item <- @items do %> +
+<%= item %> +
+ item<%= fm %> +<% end %> +
diff --git a/tests/for/jsfmt.spec.js b/tests/for/jsfmt.spec.js new file mode 100644 index 0000000..24e9607 --- /dev/null +++ b/tests/for/jsfmt.spec.js @@ -0,0 +1 @@ +run_spec(__dirname, ['eex']); diff --git a/tests/form_for/__snapshots__/jsfmt.spec.js.snap b/tests/form_for/__snapshots__/jsfmt.spec.js.snap index 74a8420..241fd97 100644 --- a/tests/form_for/__snapshots__/jsfmt.spec.js.snap +++ b/tests/form_for/__snapshots__/jsfmt.spec.js.snap @@ -1,8 +1,12 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`form_for.eex - eex-verify: form_for.eex 1`] = ` -Object { - Symbol(raw): "
+exports[`form_for.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== +
sds <%= form_for @changeset, Routes.user_path(@conn, :create), fn f -> %> @@ -14,7 +18,7 @@ sds Age: <%= select f, :age, 18..100 %> - <%= submit \\"Submit\\" %> + <%= submit "Submit" %> <% end %>
@@ -23,7 +27,8 @@ Age: <%= select f, :age, 18..100 %> <%= form_for @changeset, Routes.user_path(@conn, :create), fn f -> %> <%= text_input f, :name %> <% end %> - <% end %>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + <% end %> +=====================================output=====================================
sds <%= form_for @changeset, Routes.user_path(@conn, :create), fn f -> %> @@ -31,7 +36,7 @@ Age: <%= select f, :age, 18..100 %> - <%= submit \\"Submit\\" %> + <%= submit "Submit" %> <% end %>
@@ -40,6 +45,6 @@ Age: <%= select f, :age, 18..100 %> <%= text_input f, :name %> <% end %> <% end %> -", -} + +================================================================================ `; diff --git a/tests/form_for/jsfmt.spec.js b/tests/form_for/jsfmt.spec.js index 422f60c..24e9607 100644 --- a/tests/form_for/jsfmt.spec.js +++ b/tests/form_for/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, ["eex"]); +run_spec(__dirname, ['eex']); diff --git a/tests/html_elements/block/__snapshots__/jsfmt.spec.js.snap b/tests/html_elements/block/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 0000000..6d1acf4 --- /dev/null +++ b/tests/html_elements/block/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,97 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`div.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== +
<% %>
+
<% %>
+
e<% %>e
+
e <% %> e
+ +
<% %>
+
<% %>
+ +
+ <%= if do %> + <% %> + <% else %> + ew + <% %><% %> + <% end %> +
+ +
<% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %>
+
<% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %>
+
e<% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %>e
+
e <% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> e
+ +=====================================output===================================== +
<% %>
+
<% %>
+
e<% %>e
+
e <% %> e
+ +
+
+ <% %> +
+
+
+
+ <% %> +
+
+ +
+ <%= if do %> + <% %> + <% else %> + ew + <% %><% %> + <% end %> +
+ +
+ <% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> +
+
+ <% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> +
+
+ e<% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %>e +
+
+ e + <% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> + e +
+ +================================================================================ +`; + +exports[`figure.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + +=====================================output===================================== + +================================================================================ +`; + +exports[`template.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + +=====================================output===================================== + +================================================================================ +`; diff --git a/tests/html_elements/block/div.html.eex b/tests/html_elements/block/div.html.eex new file mode 100644 index 0000000..bb50ca2 --- /dev/null +++ b/tests/html_elements/block/div.html.eex @@ -0,0 +1,21 @@ +
<% %>
+
<% %>
+
e<% %>e
+
e <% %> e
+ +
<% %>
+
<% %>
+ +
+ <%= if do %> + <% %> + <% else %> + ew + <% %><% %> + <% end %> +
+ +
<% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %>
+
<% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %>
+
e<% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %>e
+
e <% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> e
diff --git a/tests/html_elements/block/figure.html.eex b/tests/html_elements/block/figure.html.eex new file mode 100644 index 0000000..e69de29 diff --git a/tests/html_elements/block/jsfmt.spec.js b/tests/html_elements/block/jsfmt.spec.js new file mode 100644 index 0000000..24e9607 --- /dev/null +++ b/tests/html_elements/block/jsfmt.spec.js @@ -0,0 +1 @@ +run_spec(__dirname, ['eex']); diff --git a/tests/html_elements/block/template.html.eex b/tests/html_elements/block/template.html.eex new file mode 100644 index 0000000..e69de29 diff --git a/tests/html_elements/inline/__snapshots__/jsfmt.spec.js.snap b/tests/html_elements/inline/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 0000000..a60207c --- /dev/null +++ b/tests/html_elements/inline/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,15 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`span.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== +<% e %> a + +=====================================output===================================== +<% e %> a + +================================================================================ +`; diff --git a/tests/html_elements/inline/jsfmt.spec.js b/tests/html_elements/inline/jsfmt.spec.js new file mode 100644 index 0000000..24e9607 --- /dev/null +++ b/tests/html_elements/inline/jsfmt.spec.js @@ -0,0 +1 @@ +run_spec(__dirname, ['eex']); diff --git a/tests/html_elements/inline/span.html.eex b/tests/html_elements/inline/span.html.eex new file mode 100644 index 0000000..1546568 --- /dev/null +++ b/tests/html_elements/inline/span.html.eex @@ -0,0 +1 @@ +<% e %> a diff --git a/tests/html_elements/raw/__snapshots__/jsfmt.spec.js.snap b/tests/html_elements/raw/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 0000000..9876e02 --- /dev/null +++ b/tests/html_elements/raw/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,839 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`canvas.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +
+ +=====================================output===================================== + <% 32 %> + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + <% 32 %> + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + + <% 32 %> + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 +
+ +================================================================================ +`; + +exports[`code.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +
+ +=====================================output===================================== + <% 32 %> + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + <% 32 %> + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + + <% 32 %> + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 +
+ +================================================================================ +`; + +exports[`kbd.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +
+ +=====================================output===================================== + <% 32 %> + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + <% 32 %> + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + + <% 32 %> + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 +
+ +================================================================================ +`; + +exports[`noscript.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + + + + + + + + + + +
+ + + + + + + + + + +
+ +=====================================output===================================== + + + + + + + + + + + +
+ + + + + + + + + + +
+ +================================================================================ +`; + +exports[`pre.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + +
+  <% 32 %>
+
+
 <% 32 %> 
+
32<% 32 %>32
+
32 <% 32 %> 32
+ +
<% 32 %>
+
+<% 32 %>
+
+
 <% 32 %> 
+
32<% 32 %>32
+
32 <% 32 %> 32
+ +
+
+  <% 32 %>
+
+
 <% 32 %> 
+
32<% 32 %>32
+
32 <% 32 %> 32
+ +
<% 32 %>
+
+<% 32 %>
+
+
 <% 32 %> 
+
32<% 32 %>32
+
32 <% 32 %> 32
+
+ +=====================================output===================================== +
+  <% 32 %>
+
+
 <% 32 %> 
+
32<% 32 %>32
+
32 <% 32 %> 32
+ +
<% 32 %>
+
+<% 32 %>
+
+
 <% 32 %> 
+
32<% 32 %>32
+
32 <% 32 %> 32
+ +
+
+  <% 32 %>
+
+
 <% 32 %> 
+
32<% 32 %>32
+
32 <% 32 %> 32
+ +
<% 32 %>
+
+<% 32 %>
+
+
 <% 32 %> 
+
32<% 32 %>32
+
32 <% 32 %> 32
+
+ +================================================================================ +`; + +exports[`rb.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + + +
+ + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ +=====================================output===================================== + + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + <% 32 %> + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + + +
+ + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + + <% 32 %> + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + +
+ +================================================================================ +`; + +exports[`rp.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + + +
+ + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ +=====================================output===================================== + + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + <% 32 %> + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + + +
+ + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + + <% 32 %> + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + +
+ +================================================================================ +`; + +exports[`rt.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + + +
+ + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ +=====================================output===================================== + + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + <% 32 %> + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + + +
+ + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + + <% 32 %> + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + +
+ +================================================================================ +`; + +exports[`rtc.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + + +
+ + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ +=====================================output===================================== + + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + <% 32 %> + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + + +
+ + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + + <% 32 %> + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + +
+ +================================================================================ +`; + +exports[`ruby.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +
+ +=====================================output===================================== + <% 32 %> + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + <% 32 %> + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + + <% 32 %> + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 +
+ +================================================================================ +`; + +exports[`samp.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +
+ +=====================================output===================================== + <% 32 %> + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + <% 32 %> + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + + <% 32 %> + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 +
+ +================================================================================ +`; + +exports[`var.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +
+ +=====================================output===================================== + <% 32 %> + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + <% 32 %> + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 + + <% 32 %> + <% 32 %> + <% 32 %> + 32<% 32 %>32 + 32 <% 32 %> 32 +
+ +================================================================================ +`; diff --git a/tests/html_elements/raw/canvas.html.eex b/tests/html_elements/raw/canvas.html.eex new file mode 100644 index 0000000..6ab3eb8 --- /dev/null +++ b/tests/html_elements/raw/canvas.html.eex @@ -0,0 +1,32 @@ + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +
diff --git a/tests/html_elements/raw/code.html.eex b/tests/html_elements/raw/code.html.eex new file mode 100644 index 0000000..4d38065 --- /dev/null +++ b/tests/html_elements/raw/code.html.eex @@ -0,0 +1,32 @@ + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +
diff --git a/tests/html_elements/raw/jsfmt.spec.js b/tests/html_elements/raw/jsfmt.spec.js new file mode 100644 index 0000000..24e9607 --- /dev/null +++ b/tests/html_elements/raw/jsfmt.spec.js @@ -0,0 +1 @@ +run_spec(__dirname, ['eex']); diff --git a/tests/html_elements/raw/kbd.html.eex b/tests/html_elements/raw/kbd.html.eex new file mode 100644 index 0000000..048c7e2 --- /dev/null +++ b/tests/html_elements/raw/kbd.html.eex @@ -0,0 +1,32 @@ + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +
diff --git a/tests/html_elements/raw/noscript.html.eex b/tests/html_elements/raw/noscript.html.eex new file mode 100644 index 0000000..c6f4420 --- /dev/null +++ b/tests/html_elements/raw/noscript.html.eex @@ -0,0 +1,32 @@ + + + + + + + + + + + + +
+ + + + + + + + + + +
diff --git a/tests/html_elements/raw/pre.html.eex b/tests/html_elements/raw/pre.html.eex new file mode 100644 index 0000000..eaad18b --- /dev/null +++ b/tests/html_elements/raw/pre.html.eex @@ -0,0 +1,32 @@ + +
+  <% 32 %>
+
+
 <% 32 %> 
+
32<% 32 %>32
+
32 <% 32 %> 32
+ +
<% 32 %>
+
+<% 32 %>
+
+
 <% 32 %> 
+
32<% 32 %>32
+
32 <% 32 %> 32
+ +
+
+  <% 32 %>
+
+
 <% 32 %> 
+
32<% 32 %>32
+
32 <% 32 %> 32
+ +
<% 32 %>
+
+<% 32 %>
+
+
 <% 32 %> 
+
32<% 32 %>32
+
32 <% 32 %> 32
+
diff --git a/tests/html_elements/raw/rb.html.eex b/tests/html_elements/raw/rb.html.eex new file mode 100644 index 0000000..c213163 --- /dev/null +++ b/tests/html_elements/raw/rb.html.eex @@ -0,0 +1,35 @@ + + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + + +
+ + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
diff --git a/tests/html_elements/raw/rp.html.eex b/tests/html_elements/raw/rp.html.eex new file mode 100644 index 0000000..b721ee9 --- /dev/null +++ b/tests/html_elements/raw/rp.html.eex @@ -0,0 +1,35 @@ + + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + + +
+ + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
diff --git a/tests/html_elements/raw/rt.html.eex b/tests/html_elements/raw/rt.html.eex new file mode 100644 index 0000000..4a356f7 --- /dev/null +++ b/tests/html_elements/raw/rt.html.eex @@ -0,0 +1,35 @@ + + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + + +
+ + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
diff --git a/tests/html_elements/raw/rtc.html.eex b/tests/html_elements/raw/rtc.html.eex new file mode 100644 index 0000000..098df06 --- /dev/null +++ b/tests/html_elements/raw/rtc.html.eex @@ -0,0 +1,35 @@ + + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + + +
+ + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
diff --git a/tests/html_elements/raw/ruby.html.eex b/tests/html_elements/raw/ruby.html.eex new file mode 100644 index 0000000..fde2849 --- /dev/null +++ b/tests/html_elements/raw/ruby.html.eex @@ -0,0 +1,32 @@ + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +
diff --git a/tests/html_elements/raw/samp.html.eex b/tests/html_elements/raw/samp.html.eex new file mode 100644 index 0000000..cf49282 --- /dev/null +++ b/tests/html_elements/raw/samp.html.eex @@ -0,0 +1,32 @@ + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +
diff --git a/tests/html_elements/raw/var.html.eex b/tests/html_elements/raw/var.html.eex new file mode 100644 index 0000000..fd64dac --- /dev/null +++ b/tests/html_elements/raw/var.html.eex @@ -0,0 +1,32 @@ + + + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +
+ + <% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 + +<% 32 %> + +<% 32 %> + + <% 32 %> +32<% 32 %>32 +32 <% 32 %> 32 +
diff --git a/tests/html_elements/root/__snapshots__/jsfmt.spec.js.snap b/tests/html_elements/root/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 0000000..7442b64 --- /dev/null +++ b/tests/html_elements/root/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,162 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`head.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + <% %> <% %> +<%= if do %> + +<% %> + <% %> + +<% else %> + + <% %> +<% end %> + <% %> + + +=====================================output===================================== + + <% %> + <% %> + <%= if do %> + + <% %> + <% %> + + <% else %> + + <% %> + <% end %> + + <% %> + + +================================================================================ +`; + +exports[`html.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + <% ew %> + + +=====================================output===================================== + + <% ew %> + + +================================================================================ +`; + +exports[`link.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + " /> + + +=====================================output===================================== + + " /> + + +================================================================================ +`; + +exports[`meta.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + + <% if do %> + + <% r %> + <% end %> + + +=====================================output===================================== + + + + <% if do %> + + <% r %> + <% end %> + + +================================================================================ +`; + +exports[`style.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + +=====================================output===================================== + + + + +================================================================================ +`; + +exports[`title.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + <% %> + + + <% %> + + + e<% %>e + + + e <% %> e + + +=====================================output===================================== + + <% %> + + + <% %> + + + e<% %>e + + + e <% %> e + + +================================================================================ +`; diff --git a/tests/html_elements/root/head.html.eex b/tests/html_elements/root/head.html.eex new file mode 100644 index 0000000..0cb6b8e --- /dev/null +++ b/tests/html_elements/root/head.html.eex @@ -0,0 +1,13 @@ + + <% %> <% %> +<%= if do %> + +<% %> + <% %> + +<% else %> + + <% %> +<% end %> + <% %> + diff --git a/tests/html_elements/root/html.html.eex b/tests/html_elements/root/html.html.eex new file mode 100644 index 0000000..4e9f37d --- /dev/null +++ b/tests/html_elements/root/html.html.eex @@ -0,0 +1,3 @@ + + <% ew %> + diff --git a/tests/html_elements/root/jsfmt.spec.js b/tests/html_elements/root/jsfmt.spec.js new file mode 100644 index 0000000..24e9607 --- /dev/null +++ b/tests/html_elements/root/jsfmt.spec.js @@ -0,0 +1 @@ +run_spec(__dirname, ['eex']); diff --git a/tests/html_elements/root/link.html.eex b/tests/html_elements/root/link.html.eex new file mode 100644 index 0000000..3d01e0c --- /dev/null +++ b/tests/html_elements/root/link.html.eex @@ -0,0 +1,3 @@ + + " /> + diff --git a/tests/html_elements/root/meta.html.eex b/tests/html_elements/root/meta.html.eex new file mode 100644 index 0000000..4d25163 --- /dev/null +++ b/tests/html_elements/root/meta.html.eex @@ -0,0 +1,8 @@ + + + + <% if do %> + + <% r %> + <% end %> + diff --git a/tests/html_elements/root/style.html.eex b/tests/html_elements/root/style.html.eex new file mode 100644 index 0000000..3385c55 --- /dev/null +++ b/tests/html_elements/root/style.html.eex @@ -0,0 +1,5 @@ + + + \ No newline at end of file diff --git a/tests/html_elements/root/title.html.eex b/tests/html_elements/root/title.html.eex new file mode 100644 index 0000000..ec23889 --- /dev/null +++ b/tests/html_elements/root/title.html.eex @@ -0,0 +1,12 @@ + + <% %> + + + <% %> + + + e<% %>e + + + e <% %> e + diff --git a/tests/html_elements/script/__snapshots__/jsfmt.spec.js.snap b/tests/html_elements/script/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 0000000..49a412a --- /dev/null +++ b/tests/html_elements/script/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,69 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`script.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + +=====================================output===================================== + + +================================================================================ +`; + +exports[`script_json.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + +=====================================output===================================== + + +================================================================================ +`; + +exports[`script_src.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + +=====================================output===================================== + + + +================================================================================ +`; diff --git a/tests/html_elements/script/jsfmt.spec.js b/tests/html_elements/script/jsfmt.spec.js new file mode 100644 index 0000000..24e9607 --- /dev/null +++ b/tests/html_elements/script/jsfmt.spec.js @@ -0,0 +1 @@ +run_spec(__dirname, ['eex']); diff --git a/tests/html_elements/script/script.html.eex b/tests/html_elements/script/script.html.eex new file mode 100644 index 0000000..e42d579 --- /dev/null +++ b/tests/html_elements/script/script.html.eex @@ -0,0 +1,8 @@ + diff --git a/tests/html_elements/script/script_json.html.eex b/tests/html_elements/script/script_json.html.eex new file mode 100644 index 0000000..6f1af30 --- /dev/null +++ b/tests/html_elements/script/script_json.html.eex @@ -0,0 +1,6 @@ + diff --git a/tests/html_elements/script/script_src.html.eex b/tests/html_elements/script/script_src.html.eex new file mode 100644 index 0000000..40a6aca --- /dev/null +++ b/tests/html_elements/script/script_src.html.eex @@ -0,0 +1,2 @@ + + diff --git a/tests/html_elements/table/__snapshots__/jsfmt.spec.js.snap b/tests/html_elements/table/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 0000000..cdc5be7 --- /dev/null +++ b/tests/html_elements/table/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,496 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`caption.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + +
+ <% re %> + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> +
+ +
<% re %>
+
re<% re %>re
+ + +=====================================output===================================== + + +
+ <% re %> + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> +
+ + + +
+ <% re %> +
+ + +
+ re + <% re %> + re +
+ +================================================================================ +`; + +exports[`colgroup.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + + <%= if e do %> + + <% else %> + + <% end %> + <% e %> + +
+ +=====================================output===================================== + + + + <%= if e do %> + + <% else %> + + <% end %> + <% e %> + +
+ +================================================================================ +`; + +exports[`table.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + <% re %> + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> +
+ +<% re %>
+ +=====================================output===================================== + + <% re %> + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> +
+ + + <% re %> +
+ +================================================================================ +`; + +exports[`tbody.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + <% re %> + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> + +
+ +<% re %>
+ +=====================================output===================================== + + + <% re %> + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> + +
+ + + + <% re %> + +
+ +================================================================================ +`; + +exports[`td.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + + + + + + + +
<% re %>
ew<% re %>ew
ew <% re %> ew
<% re %>
<%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %>
+ +
<% re %>
+ + + + + + + + + + +
<% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %>
ew<% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %>ew
ew <% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> ew
<% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %>
<%= if looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong do %> + <% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> + <% else %> + looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong + <% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> + <% end %>
+ +
<% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %>
+ +=====================================output===================================== + + + + + + + + + + + + + + + + + + + +
<% re %>
ew<% re %>ew
ew <% re %> ew
<% re %>
+ <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> +
+ + + + + + + +
<% re %>
+ + + + + + + + + + + + + + + + + + + + +
+ <% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> +
+ ew<% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %>ew +
+ ew + <% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> + ew +
+ <% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> +
+ <%= if looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong do %> + <% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> + <% else %> + looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong + <% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> + <% end %> +
+ + + + + + + +
+ <% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> +
+ +================================================================================ +`; + +exports[`tfoot.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + <% re %> + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> + +
+ +<% re %>
+ +=====================================output===================================== + + + <% re %> + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> + +
+ + + + <% re %> + +
+ +================================================================================ +`; + +exports[`th.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + + + + + + + +
<% re %>
ew<% re %>ew
ew <% re %> ew
<% re %>
<%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %>
+ +
<% re %>
+ +=====================================output===================================== + + + + + + + + + + + + + + + + + + + +
<% re %>
ew<% re %>ew
ew <% re %> ew
<% re %>
+ <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> +
+ + + + + + + +
<% re %>
+ +================================================================================ +`; + +exports[`thead.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + <% re %> + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> + +
+ +<% re %>
+ +=====================================output===================================== + + + <% re %> + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> + +
+ + + + <% re %> + +
+ +================================================================================ +`; + +exports[`tr.html.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + + <% re %> + <% re %> + + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> + +
+ +<% re %>
+ +=====================================output===================================== + + + + <% re %> + + + <% re %> + + + + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> + + +
+ + + + + <% re %> + + +
+ +================================================================================ +`; diff --git a/tests/html_elements/table/caption.html.eex b/tests/html_elements/table/caption.html.eex new file mode 100644 index 0000000..b934d94 --- /dev/null +++ b/tests/html_elements/table/caption.html.eex @@ -0,0 +1,15 @@ + + +
+ <% re %> + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> +
+ +
<% re %>
+
re<% re %>re
+ diff --git a/tests/html_elements/table/colgroup.html.eex b/tests/html_elements/table/colgroup.html.eex new file mode 100644 index 0000000..0634dd5 --- /dev/null +++ b/tests/html_elements/table/colgroup.html.eex @@ -0,0 +1,11 @@ + + + + <%= if e do %> + + <% else %> + + <% end %> + <% e %> + +
diff --git a/tests/html_elements/table/jsfmt.spec.js b/tests/html_elements/table/jsfmt.spec.js new file mode 100644 index 0000000..24e9607 --- /dev/null +++ b/tests/html_elements/table/jsfmt.spec.js @@ -0,0 +1 @@ +run_spec(__dirname, ['eex']); diff --git a/tests/html_elements/table/table.html.eex b/tests/html_elements/table/table.html.eex new file mode 100644 index 0000000..b81fc90 --- /dev/null +++ b/tests/html_elements/table/table.html.eex @@ -0,0 +1,11 @@ + + <% re %> + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> +
+ +<% re %>
diff --git a/tests/html_elements/table/tbody.html.eex b/tests/html_elements/table/tbody.html.eex new file mode 100644 index 0000000..59a84ba --- /dev/null +++ b/tests/html_elements/table/tbody.html.eex @@ -0,0 +1,13 @@ + + + <% re %> + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> + +
+ +<% re %>
diff --git a/tests/html_elements/table/td.html.eex b/tests/html_elements/table/td.html.eex new file mode 100644 index 0000000..8aaf276 --- /dev/null +++ b/tests/html_elements/table/td.html.eex @@ -0,0 +1,35 @@ + + + + + + + + + +
<% re %>
ew<% re %>ew
ew <% re %> ew
<% re %>
<%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %>
+ +
<% re %>
+ + + + + + + + + + +
<% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %>
ew<% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %>ew
ew <% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> ew
<% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %>
<%= if looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong do %> + <% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> + <% else %> + looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong + <% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> + <% end %>
+ +
<% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %>
diff --git a/tests/html_elements/table/tfoot.html.eex b/tests/html_elements/table/tfoot.html.eex new file mode 100644 index 0000000..b5686a5 --- /dev/null +++ b/tests/html_elements/table/tfoot.html.eex @@ -0,0 +1,13 @@ + + + <% re %> + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> + +
+ +<% re %>
diff --git a/tests/html_elements/table/th.html.eex b/tests/html_elements/table/th.html.eex new file mode 100644 index 0000000..fbda036 --- /dev/null +++ b/tests/html_elements/table/th.html.eex @@ -0,0 +1,17 @@ + + + + + + + + + +
<% re %>
ew<% re %>ew
ew <% re %> ew
<% re %>
<%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %>
+ +
<% re %>
diff --git a/tests/html_elements/table/thead.html.eex b/tests/html_elements/table/thead.html.eex new file mode 100644 index 0000000..0fe0fd1 --- /dev/null +++ b/tests/html_elements/table/thead.html.eex @@ -0,0 +1,13 @@ + + + <% re %> + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> + +
+ +<% re %>
diff --git a/tests/html_elements/table/tr.html.eex b/tests/html_elements/table/tr.html.eex new file mode 100644 index 0000000..fb7f9ed --- /dev/null +++ b/tests/html_elements/table/tr.html.eex @@ -0,0 +1,15 @@ + + + <% re %> + <% re %> + + <%= if 43 do %> + <% 43 %> + <% else %> + 43 + <% 43 %> + <% end %> + +
+ +<% re %>
diff --git a/tests/if/__snapshots__/jsfmt.spec.js.snap b/tests/if/__snapshots__/jsfmt.spec.js.snap index e1f19de..ec170e3 100644 --- a/tests/if/__snapshots__/jsfmt.spec.js.snap +++ b/tests/if/__snapshots__/jsfmt.spec.js.snap @@ -1,8 +1,23 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`js.eex - eex-verify: js.eex 1`] = ` -Object { - Symbol(raw): "
+exports[`js.eex 1`] = ` +====================================options===================================== +parsers: ["eex"] +printWidth: 80 + | printWidth +=====================================input====================================== + + +
+ class="attribute" +class="attribute" + <% else %> + class="attribute" +<% end %> +>
+ +
<%= if ss do %> ss <% else %> @@ -27,12 +42,26 @@ sss sss <% end %>
- +
  • Home
  • - class=\\"dd\\" ->
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + class="dd" +>
    + + + +=====================================output===================================== +
    + class="attribute" + class="attribute" + eexcundefined + <% else %> + class="attribute" + <% end %> +>
    +
    <%= if ss do %> ss @@ -58,8 +87,20 @@ sss sss <% end %>
    +
  • + Home +
  • + +
    class="dd">
    + + -
    class=\\"dd\\">
    -", -} +================================================================================ `; diff --git a/tests/if/js.eex b/tests/if/js.eex index 99249e1..488e7a2 100644 --- a/tests/if/js.eex +++ b/tests/if/js.eex @@ -40,3 +40,5 @@ sss <%= ddd %> class="dd" >
    + + diff --git a/tests/if/jsfmt.spec.js b/tests/if/jsfmt.spec.js index 422f60c..24e9607 100644 --- a/tests/if/jsfmt.spec.js +++ b/tests/if/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, ["eex"]); +run_spec(__dirname, ['eex']); diff --git a/tests/only_eex/only_eex.html.eex b/tests/only_eex/only_eex.html.eex new file mode 100644 index 0000000..1db2caa --- /dev/null +++ b/tests/only_eex/only_eex.html.eex @@ -0,0 +1,12 @@ + + +<% re %> + + +<%= if do %> + 43 + <% else %> + <% 23 %> +<% end %> + +<% looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong %> diff --git a/tests_config/run_spec.js b/tests_config/run_spec.js index 229ccd3..62613ff 100644 --- a/tests_config/run_spec.js +++ b/tests_config/run_spec.js @@ -1,107 +1,179 @@ -"use strict"; - -const fs = require("fs"); -const extname = require("path").extname; -const prettier = require("prettier"); - -function run_spec(dirname, parsers, options) { - options = Object.assign( - { - plugins: ["."], - tabWidth: 2, - }, - options - ); - - /* instabul ignore if */ +// https://github.com/prettier/plugin-php/blob/master/tests_config/run_spec.js + +const fs = require('fs'); +const path = require('path'); +const raw = require('jest-snapshot-serializer-raw').wrap; + +const { TEST_CRLF } = process.env; + +const CURSOR_PLACEHOLDER = '<|>'; +const RANGE_START_PLACEHOLDER = '<<>>'; +const RANGE_END_PLACEHOLDER = '<<>>'; + +const prettier = require('prettier'); + +const plugin = path.join(__dirname, '..'); + +global.run_spec = (dirname, parsers, options) => { + options = Object.assign({}, options, { + plugins: [plugin, ...((options && options.plugins) || [])], + }); + if (!parsers || !parsers.length) { throw new Error(`No parsers were specified for ${dirname}`); } - fs.readdirSync(dirname).forEach((filename) => { - const path = dirname + "/" + filename; + fs.readdirSync(dirname).forEach((basename) => { + const filename = path.join(dirname, basename); + if ( - extname(filename) !== ".snap" && - fs.lstatSync(path).isFile() && - filename[0] !== "." && - filename !== "jsfmt.spec.js" + path.extname(basename) === '.snap' || + !fs.lstatSync(filename).isFile() || + basename[0] === '.' || + basename === 'jsfmt.spec.js' ) { - const source = read(path).replace(/\r\n/g, "\n"); + return; + } - const mergedOptions = Object.assign({}, options, { - parser: parsers[0], - }); - const output = prettyprint(source, path, mergedOptions); - test(`${filename} - ${mergedOptions.parser}-verify`, () => { - expect(raw(source + "~".repeat(80) + "\n" + output)).toMatchSnapshot(filename); + let rangeStart; + let rangeEnd; + let cursorOffset; + + const text = fs.readFileSync(filename, 'utf8'); + + const source = (TEST_CRLF ? text.replace(/\n/g, '\r\n') : text) + .replace(RANGE_START_PLACEHOLDER, (match, offset) => { + rangeStart = offset; + return ''; + }) + .replace(RANGE_END_PLACEHOLDER, (match, offset) => { + rangeEnd = offset; + return ''; }); - parsers.slice(1).forEach((parserName) => { - test(`${filename} - ${parserName}-verify`, () => { - const verifyOptions = Object.assign(mergedOptions, { - parser: parserName, - }); - const verifyOutput = prettyprint(source, path, verifyOptions); - expect(output).toEqual(verifyOutput); - }); + const input = source.replace(CURSOR_PLACEHOLDER, (match, offset) => { + cursorOffset = offset; + return ''; + }); + + const baseOptions = Object.assign({ printWidth: 80 }, options, { + rangeStart, + rangeEnd, + cursorOffset, + }); + const mainOptions = Object.assign({}, baseOptions, { + parser: parsers[0], + }); + + const hasEndOfLine = 'endOfLine' in mainOptions; + + const output = format(input, filename, mainOptions); + const visualizedOutput = visualizeEndOfLine(output); + + test(basename, () => { + expect(visualizedOutput).toEqual(visualizeEndOfLine(consistentEndOfLine(output))); + expect( + raw( + createSnapshot( + hasEndOfLine + ? visualizeEndOfLine(text.replace(RANGE_START_PLACEHOLDER, '').replace(RANGE_END_PLACEHOLDER, '')) + : source, + hasEndOfLine ? visualizedOutput : output, + Object.assign({}, baseOptions, { parsers }) + ) + ) + ).toMatchSnapshot(); + }); + + for (const parser of parsers.slice(1)) { + const verifyOptions = Object.assign({}, baseOptions, { parser }); + test(`${basename} - ${parser}-verify`, () => { + const verifyOutput = format(input, filename, verifyOptions); + expect(visualizedOutput).toEqual(visualizeEndOfLine(verifyOutput)); }); } }); +}; + +function format(source, filename, options) { + const result = prettier.formatWithCursor(source, Object.assign({ filepath: filename }, options)); + + return options.cursorOffset >= 0 + ? result.formatted.slice(0, result.cursorOffset) + CURSOR_PLACEHOLDER + result.formatted.slice(result.cursorOffset) + : result.formatted; } -global.run_spec = run_spec; -function stripLocation(ast) { - if (Array.isArray(ast)) { - return ast.map((e) => stripLocation(e)); - } - if (typeof ast === "object") { - const newObj = {}; - for (const key in ast) { - if ( - key === "loc" || - key === "range" || - key === "raw" || - key === "comments" || - key === "parent" || - key === "prev" - ) { - continue; - } - newObj[key] = stripLocation(ast[key]); +function consistentEndOfLine(text) { + let firstEndOfLine; + return text.replace(/\r\n?|\n/g, (endOfLine) => { + if (!firstEndOfLine) { + firstEndOfLine = endOfLine; } - return newObj; - } - return ast; + return firstEndOfLine; + }); } -function parse(string, opts) { - return stripLocation(prettier.__debug.parse(string, opts)); +function visualizeEndOfLine(text) { + return text.replace(/\r\n?|\n/g, (endOfLine) => { + switch (endOfLine) { + case '\n': + return '\n'; + case '\r\n': + return '\n'; + case '\r': + return '\n'; + default: + throw new Error(`Unexpected end of line ${JSON.stringify(endOfLine)}`); + } + }); } -function prettyprint(src, filename, options) { - return prettier.format( - src, - Object.assign( - { - filepath: filename, - }, - options +function createSnapshot(input, output, options) { + const separatorWidth = 80; + const printWidthIndicator = + options.printWidth > 0 && Number.isFinite(options.printWidth) ? `${' '.repeat(options.printWidth)}| printWidth` : []; + return [] + .concat( + printSeparator(separatorWidth, 'options'), + printOptions(omit(options, (k) => k === 'rangeStart' || k === 'rangeEnd' || k === 'cursorOffset')), + printWidthIndicator, + printSeparator(separatorWidth, 'input'), + input, + printSeparator(separatorWidth, 'output'), + output, + printSeparator(separatorWidth) ) - ); + .join('\n'); } -function read(filename) { - return fs.readFileSync(filename, "utf8"); +function printSeparator(width, description) { + description = description || ''; + const leftLength = Math.floor((width - description.length) / 2); + const rightLength = width - leftLength - description.length; + return '='.repeat(leftLength) + description + '='.repeat(rightLength); } -/** - * Wraps a string in a marker object that is used by `./raw-serializer.js` to - * directly print that string in a snapshot without escaping all double quotes. - * Backticks will still be escaped. - */ -function raw(string) { - if (typeof string !== "string") { - throw new Error("Raw snapshots have to be strings."); +function printOptions(options) { + const keys = Object.keys(options).sort(); + return keys.map((key) => `${key}: ${stringify(options[key])}`).join('\n'); + function stringify(value) { + return value === Infinity + ? 'Infinity' + : Array.isArray(value) + ? `[${value.map((v) => JSON.stringify(v)).join(', ')}]` + : JSON.stringify(value); } - return { [Symbol.for("raw")]: string }; +} + +function omit(obj, fn) { + return Object.keys(obj).reduce((reduced, key) => { + if (key === 'plugins') { + return reduced; + } + const value = obj[key]; + if (!fn(key, value)) { + reduced[key] = value; + } + return reduced; + }, {}); } diff --git a/yarn.lock b/yarn.lock index 958ba3f..d9c26cd 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,152 +2,151 @@ # yarn lockfile v1 -"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.8.3.tgz#33e25903d7481181534e12ec0a25f16b6fcf419e" - integrity sha512-a9gxpmdXtZEInkCSHUJDLHZVBgb1QS0jhss4cPP93EW7s+uC5bikET2twEF3KV+7rDblJcmNvTR7VJejqd2C2g== +"@babel/code-frame@^7.0.0", "@babel/code-frame@^7.10.4", "@babel/code-frame@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.12.11.tgz#f4ad435aa263db935b8f10f2c552d23fb716a63f" + integrity sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw== dependencies: - "@babel/highlight" "^7.8.3" + "@babel/highlight" "^7.10.4" "@babel/core@^7.1.0", "@babel/core@^7.7.5": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.9.0.tgz#ac977b538b77e132ff706f3b8a4dbad09c03c56e" - integrity sha512-kWc7L0fw1xwvI0zi8OKVBuxRVefwGOrKSQMvrQ3dW+bIIavBY3/NpXmpjMy7bQnLgwgzWQZ8TlM57YHpHNHz4w== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.0" - "@babel/helper-module-transforms" "^7.9.0" - "@babel/helpers" "^7.9.0" - "@babel/parser" "^7.9.0" - "@babel/template" "^7.8.6" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.10.tgz#b79a2e1b9f70ed3d84bbfb6d8c4ef825f606bccd" + integrity sha512-eTAlQKq65zHfkHZV0sIVODCPGVgoo1HdBlbSLi9CqOzuZanMv2ihzY+4paiKr1mH+XmYESMAmJ/dpZ68eN6d8w== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.10" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.5" + "@babel/parser" "^7.12.10" + "@babel/template" "^7.12.7" + "@babel/traverse" "^7.12.10" + "@babel/types" "^7.12.10" convert-source-map "^1.7.0" debug "^4.1.0" gensync "^1.0.0-beta.1" json5 "^2.1.2" - lodash "^4.17.13" - resolve "^1.3.2" + lodash "^4.17.19" semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.9.0", "@babel/generator@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.9.5.tgz#27f0917741acc41e6eaaced6d68f96c3fa9afaf9" - integrity sha512-GbNIxVB3ZJe3tLeDm1HSn2AhuD/mVcyLDpgtLXa5tplmWrJdF/elxB56XNqCuD6szyNkDi6wuoKXln3QeBmCHQ== +"@babel/generator@^7.12.10", "@babel/generator@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.11.tgz#98a7df7b8c358c9a37ab07a24056853016aba3af" + integrity sha512-Ggg6WPOJtSi8yYQvLVjG8F/TlpWDlKx0OpS4Kt+xMQPs5OaGYWy+v1A+1TvxI6sAMGZpKWWoAQ1DaeQbImlItA== dependencies: - "@babel/types" "^7.9.5" + "@babel/types" "^7.12.11" jsesc "^2.5.1" - lodash "^4.17.13" source-map "^0.5.0" -"@babel/helper-function-name@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.9.5.tgz#2b53820d35275120e1874a82e5aabe1376920a5c" - integrity sha512-JVcQZeXM59Cd1qanDUxv9fgJpt3NeKUaqBqUEvfmQ+BCOKq2xUgaWZW2hr0dkbyJgezYuplEoh5knmrnS68efw== - dependencies: - "@babel/helper-get-function-arity" "^7.8.3" - "@babel/template" "^7.8.3" - "@babel/types" "^7.9.5" - -"@babel/helper-get-function-arity@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.8.3.tgz#b894b947bd004381ce63ea1db9f08547e920abd5" - integrity sha512-FVDR+Gd9iLjUMY1fzE2SR0IuaJToR4RkCDARVfsBBPSP53GEqSFjD8gNyxg246VUyc/ALRxFaAK8rVG7UT7xRA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-member-expression-to-functions@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.8.3.tgz#659b710498ea6c1d9907e0c73f206eee7dadc24c" - integrity sha512-fO4Egq88utkQFjbPrSHGmGLFqmrshs11d46WI+WZDESt7Wu7wN2G2Iu+NMMZJFDOVRHAMIkB5SNh30NtwCA7RA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-imports@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.8.3.tgz#7fe39589b39c016331b6b8c3f441e8f0b1419498" - integrity sha512-R0Bx3jippsbAEtzkpZ/6FIiuzOURPcMjHp+Z6xPe6DtApDJx+w7UYyOLanZqO8+wKR9G10s/FmHXvxaMd9s6Kg== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-module-transforms@^7.9.0": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.9.0.tgz#43b34dfe15961918707d247327431388e9fe96e5" - integrity sha512-0FvKyu0gpPfIQ8EkxlrAydOWROdHpBmiCiRwLkUiBGhCUPRRbVD2/tm3sFr/c/GWFrQ/ffutGUAnx7V0FzT2wA== - dependencies: - "@babel/helper-module-imports" "^7.8.3" - "@babel/helper-replace-supers" "^7.8.6" - "@babel/helper-simple-access" "^7.8.3" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/template" "^7.8.6" - "@babel/types" "^7.9.0" - lodash "^4.17.13" - -"@babel/helper-optimise-call-expression@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.8.3.tgz#7ed071813d09c75298ef4f208956006b6111ecb9" - integrity sha512-Kag20n86cbO2AvHca6EJsvqAd82gc6VMGule4HwebwMlwkpXuVqrNRj6CkCV2sKxgi9MyAUnZVnZ6lJ1/vKhHQ== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.8.0", "@babel/helper-plugin-utils@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.8.3.tgz#9ea293be19babc0f52ff8ca88b34c3611b208670" - integrity sha512-j+fq49Xds2smCUNYmEHF9kGNkhbet6yVIBp4e6oeQpH1RUs/Ir06xUKzDjDkGcaaokPiTNs2JBWHjaE4csUkZQ== - -"@babel/helper-replace-supers@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.8.6.tgz#5ada744fd5ad73203bf1d67459a27dcba67effc8" - integrity sha512-PeMArdA4Sv/Wf4zXwBKPqVj7n9UF/xg6slNRtZW84FM7JpE1CbG8B612FyM4cxrf4fMAMGO0kR7voy1ForHHFA== - dependencies: - "@babel/helper-member-expression-to-functions" "^7.8.3" - "@babel/helper-optimise-call-expression" "^7.8.3" - "@babel/traverse" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/helper-simple-access@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.8.3.tgz#7f8109928b4dab4654076986af575231deb639ae" - integrity sha512-VNGUDjx5cCWg4vvCTR8qQ7YJYZ+HBjxOgXEl7ounz+4Sn7+LMD3CFrCTEU6/qXKbA2nKg21CwhhBzO0RpRbdCw== - dependencies: - "@babel/template" "^7.8.3" - "@babel/types" "^7.8.3" - -"@babel/helper-split-export-declaration@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.8.3.tgz#31a9f30070f91368a7182cf05f831781065fc7a9" - integrity sha512-3x3yOeyBhW851hroze7ElzdkeRXQYQbFIb7gLK1WQYsw2GWDay5gAJNw1sWJ0VFP6z5J1whqeXH/WCdCjZv6dA== - dependencies: - "@babel/types" "^7.8.3" - -"@babel/helper-validator-identifier@^7.9.0", "@babel/helper-validator-identifier@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.9.5.tgz#90977a8e6fbf6b431a7dc31752eee233bf052d80" - integrity sha512-/8arLKUFq882w4tWGj9JYzRpAlZgiWUJ+dtteNTDqrRBz9Iguck9Rn3ykuBDoUwh2TO4tSAJlrxDUOXWklJe4g== - -"@babel/helpers@^7.9.0": - version "7.9.2" - resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.9.2.tgz#b42a81a811f1e7313b88cba8adc66b3d9ae6c09f" - integrity sha512-JwLvzlXVPjO8eU9c/wF9/zOIN7X6h8DYf7mG4CiFRZRvZNKEF5dQ3H3V+ASkHoIB3mWhatgl5ONhyqHRI6MppA== - dependencies: - "@babel/template" "^7.8.3" - "@babel/traverse" "^7.9.0" - "@babel/types" "^7.9.0" - -"@babel/highlight@^7.8.3": - version "7.9.0" - resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.9.0.tgz#4e9b45ccb82b79607271b2979ad82c7b68163079" - integrity sha512-lJZPilxX7Op3Nv/2cvFdnlepPXDxi29wxteT57Q965oc5R9v86ztx0jfxVrTcBk8C2kcPkkDa2Z4T3ZsPPVWsQ== - dependencies: - "@babel/helper-validator-identifier" "^7.9.0" +"@babel/helper-function-name@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.12.11.tgz#1fd7738aee5dcf53c3ecff24f1da9c511ec47b42" + integrity sha512-AtQKjtYNolKNi6nNNVLQ27CP6D9oFR6bq/HPYSizlzbp7uC1M59XJe8L+0uXjbIaZaUJF99ruHqVGiKXU/7ybA== + dependencies: + "@babel/helper-get-function-arity" "^7.12.10" + "@babel/template" "^7.12.7" + "@babel/types" "^7.12.11" + +"@babel/helper-get-function-arity@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.10.tgz#b158817a3165b5faa2047825dfa61970ddcc16cf" + integrity sha512-mm0n5BPjR06wh9mPQaDdXWDoll/j5UpCAPl1x8fS71GHm7HA6Ua2V4ylG1Ju8lvcTOietbPNNPaSilKj+pj+Ag== + dependencies: + "@babel/types" "^7.12.10" + +"@babel/helper-member-expression-to-functions@^7.12.7": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.7.tgz#aa77bd0396ec8114e5e30787efa78599d874a855" + integrity sha512-DCsuPyeWxeHgh1Dus7APn7iza42i/qXqiFPWyBDdOFtvS581JQePsc1F/nD+fHrcswhLlRc2UpYS1NwERxZhHw== + dependencies: + "@babel/types" "^7.12.7" + +"@babel/helper-module-imports@^7.12.1": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.5.tgz#1bfc0229f794988f76ed0a4d4e90860850b54dfb" + integrity sha512-SR713Ogqg6++uexFRORf/+nPXMmWIn80TALu0uaFb+iQIUoR7bOC7zBWyzBs5b3tBBJXuyD0cRu1F15GyzjOWA== + dependencies: + "@babel/types" "^7.12.5" + +"@babel/helper-module-transforms@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" + integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/helper-validator-identifier" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + lodash "^4.17.19" + +"@babel/helper-optimise-call-expression@^7.12.10": + version "7.12.10" + resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.10.tgz#94ca4e306ee11a7dd6e9f42823e2ac6b49881e2d" + integrity sha512-4tpbU0SrSTjjt65UMWSrUOPZTsgvPgGG4S8QSTNHacKzpS51IVWGDj0yCwyeZND/i+LSN2g/O63jEXEWm49sYQ== + dependencies: + "@babel/types" "^7.12.10" + +"@babel/helper-plugin-utils@^7.0.0", "@babel/helper-plugin-utils@^7.10.4", "@babel/helper-plugin-utils@^7.8.0": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-plugin-utils/-/helper-plugin-utils-7.10.4.tgz#2f75a831269d4f677de49986dff59927533cf375" + integrity sha512-O4KCvQA6lLiMU9l2eawBPMf1xPP8xPfB3iEQw150hOVTqj/rfXz0ThTb4HEzqQfs2Bmo5Ay8BzxfzVtBrr9dVg== + +"@babel/helper-replace-supers@^7.12.1": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.11.tgz#ea511658fc66c7908f923106dd88e08d1997d60d" + integrity sha512-q+w1cqmhL7R0FNzth/PLLp2N+scXEK/L2AHbXUyydxp828F4FEa5WcVoqui9vFRiHDQErj9Zof8azP32uGVTRA== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.12.7" + "@babel/helper-optimise-call-expression" "^7.12.10" + "@babel/traverse" "^7.12.10" + "@babel/types" "^7.12.11" + +"@babel/helper-simple-access@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-split-export-declaration@^7.11.0", "@babel/helper-split-export-declaration@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.11.tgz#1b4cc424458643c47d37022223da33d76ea4603a" + integrity sha512-LsIVN8j48gHgwzfocYUSkO/hjYAOJqlpJEc7tGXcIm4cubjVUf8LGW6eWRyxEu7gA25q02p0rQUWoCI33HNS5g== + dependencies: + "@babel/types" "^7.12.11" + +"@babel/helper-validator-identifier@^7.10.4", "@babel/helper-validator-identifier@^7.12.11": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" + integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== + +"@babel/helpers@^7.12.5": + version "7.12.5" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.5.tgz#1a1ba4a768d9b58310eda516c449913fe647116e" + integrity sha512-lgKGMQlKqA8meJqKsW6rUnc4MdUk35Ln0ATDqdM1a/UpARODdI4j5Y5lVfUScnSNkJcdCRAaWkspykNoFg9sJA== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.5" + "@babel/types" "^7.12.5" + +"@babel/highlight@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.10.4.tgz#7d1bdfd65753538fabe6c38596cdb76d9ac60143" + integrity sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.7.5", "@babel/parser@^7.8.6", "@babel/parser@^7.9.0": - version "7.9.4" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.9.4.tgz#68a35e6b0319bbc014465be43828300113f2f2e8" - integrity sha512-bC49otXX6N0/VYhgOMh4gnP26E9xnDZK3TmbNpxYzzz9BQLBosQwfyOe9/cXUU3txYhTzLCbcqd5c8y/OmCjHA== +"@babel/parser@^7.1.0", "@babel/parser@^7.12.10", "@babel/parser@^7.12.11", "@babel/parser@^7.12.7": + version "7.12.11" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.11.tgz#9ce3595bcd74bc5c466905e86c535b8b25011e79" + integrity sha512-N3UxG+uuF4CMYoNj8AhnbAcJF0PiuJ9KHuy1lQmkYsxTer/MAH9UBNHsBoAX/4s6NvlDD047No8mYVGGzLL4hg== "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" @@ -164,11 +163,18 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-class-properties@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.8.3.tgz#6cb933a8872c8d359bfde69bbeaae5162fd1e8f7" - integrity sha512-UcAyQWg2bAN647Q+O811tG9MrJ38Z10jjhQdKNAL8fsyPzE3cCN/uT+f55cFVY4aGO4jqJAvmqsuY3GQDwAoXg== + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" + integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-syntax-import-meta@^7.8.3": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" + integrity sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-json-strings@^7.8.3": version "7.8.3" @@ -178,11 +184,11 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.8.3.tgz#3995d7d7ffff432f6ddc742b47e730c054599897" - integrity sha512-Zpg2Sgc++37kuFl6ppq2Q7Awc6E6AIW671x5PY8E/f7MCIyPPGK/EoeZXvvY3P42exZ3Q4/t3YOzP/HiN79jDg== + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" + integrity sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-nullish-coalescing-operator@^7.8.3": version "7.8.3" @@ -192,11 +198,11 @@ "@babel/helper-plugin-utils" "^7.8.0" "@babel/plugin-syntax-numeric-separator@^7.8.3": - version "7.8.3" - resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.8.3.tgz#0e3fb63e09bea1b11e96467271c8308007e7c41f" - integrity sha512-H7dCMAdN83PcCmqmkHB5dtp+Xa9a6LKSvA2hiFBC/5alSHxM5VgWZXFqDi0YFe8XNGT6iCa+z4V4zSt/PdZ7Dw== + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz#b9b070b3e33570cd9fd07ba7fa91c0dd37b9af97" + integrity sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug== dependencies: - "@babel/helper-plugin-utils" "^7.8.3" + "@babel/helper-plugin-utils" "^7.10.4" "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" @@ -219,37 +225,44 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" -"@babel/template@^7.7.4", "@babel/template@^7.8.3", "@babel/template@^7.8.6": - version "7.8.6" - resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.8.6.tgz#86b22af15f828dfb086474f964dcc3e39c43ce2b" - integrity sha512-zbMsPMy/v0PWFZEhQJ66bqjhH+z0JgMoBWuikXybgG3Gkd/3t5oQ1Rw2WQhnSrsOmsKXnZOx15tkC4qON/+JPg== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/parser" "^7.8.6" - "@babel/types" "^7.8.6" - -"@babel/traverse@^7.1.0", "@babel/traverse@^7.7.4", "@babel/traverse@^7.8.6", "@babel/traverse@^7.9.0": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.9.5.tgz#6e7c56b44e2ac7011a948c21e283ddd9d9db97a2" - integrity sha512-c4gH3jsvSuGUezlP6rzSJ6jf8fYjLj3hsMZRx/nX0h+fmHN0w+ekubRrHPqnMec0meycA2nwCsJ7dC8IPem2FQ== - dependencies: - "@babel/code-frame" "^7.8.3" - "@babel/generator" "^7.9.5" - "@babel/helper-function-name" "^7.9.5" - "@babel/helper-split-export-declaration" "^7.8.3" - "@babel/parser" "^7.9.0" - "@babel/types" "^7.9.5" +"@babel/plugin-syntax-top-level-await@^7.8.3": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.1.tgz#dd6c0b357ac1bb142d98537450a319625d13d2a0" + integrity sha512-i7ooMZFS+a/Om0crxZodrTzNEPJHZrlMVGMTEpFAj6rYY/bKCddB0Dk/YxfPuYXOopuhKk/e1jV6h+WUU9XN3A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/template@^7.10.4", "@babel/template@^7.12.7", "@babel/template@^7.3.3": + version "7.12.7" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.12.7.tgz#c817233696018e39fbb6c491d2fb684e05ed43bc" + integrity sha512-GkDzmHS6GV7ZeXfJZ0tLRBhZcMcY0/Lnb+eEbXDBfCAcZCjrZKe6p3J4we/D24O9Y8enxWAg1cWwof59yLh2ow== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/parser" "^7.12.7" + "@babel/types" "^7.12.7" + +"@babel/traverse@^7.1.0", "@babel/traverse@^7.12.1", "@babel/traverse@^7.12.10", "@babel/traverse@^7.12.5": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.12.tgz#d0cd87892704edd8da002d674bc811ce64743376" + integrity sha512-s88i0X0lPy45RrLM8b9mz8RPH5FqO9G9p7ti59cToE44xFm1Q+Pjh5Gq4SXBbtb88X7Uy7pexeqRIQDDMNkL0w== + dependencies: + "@babel/code-frame" "^7.12.11" + "@babel/generator" "^7.12.11" + "@babel/helper-function-name" "^7.12.11" + "@babel/helper-split-export-declaration" "^7.12.11" + "@babel/parser" "^7.12.11" + "@babel/types" "^7.12.12" debug "^4.1.0" globals "^11.1.0" - lodash "^4.17.13" + lodash "^4.17.19" -"@babel/types@^7.0.0", "@babel/types@^7.3.0", "@babel/types@^7.8.3", "@babel/types@^7.8.6", "@babel/types@^7.9.0", "@babel/types@^7.9.5": - version "7.9.5" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.9.5.tgz#89231f82915a8a566a703b3b20133f73da6b9444" - integrity sha512-XjnvNqenk818r5zMaba+sLQjnbda31UfUURv3ei0qPQw4u+j2jMyJ5b11y8ZHYTRSI3NnInQkkkRT4fLqqPdHg== +"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.10", "@babel/types@^7.12.11", "@babel/types@^7.12.12", "@babel/types@^7.12.5", "@babel/types@^7.12.7", "@babel/types@^7.3.0", "@babel/types@^7.3.3": + version "7.12.12" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.12.tgz#4608a6ec313abbd87afa55004d373ad04a96c299" + integrity sha512-lnIX7piTxOH22xE7fDXDbSHg9MM1/6ORnafpJmov5rs0kX5g4BZxeXNJLXsMRiO0U5Rb8/FvMS6xlTnTHvxonQ== dependencies: - "@babel/helper-validator-identifier" "^7.9.5" - lodash "^4.17.13" + "@babel/helper-validator-identifier" "^7.12.11" + lodash "^4.17.19" to-fast-properties "^2.0.0" "@bcoe/v8-coverage@^0.2.3": @@ -265,13 +278,30 @@ exec-sh "^0.3.2" minimist "^1.2.0" +"@eslint/eslintrc@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.3.0.tgz#d736d6963d7003b6514e6324bec9c602ac340318" + integrity sha512-1JTKgrOKAHVivSvOYw+sJOunkBjUOvjqWk1DPja7ZFhIS2mX/4EgTT8M7eTK9jrKhL/FvXXEbQwIs3pg1xp3dg== + 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.20" + minimatch "^3.0.4" + strip-json-comments "^3.1.1" + "@istanbuljs/load-nyc-config@^1.0.0": - version "1.0.0" - resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.0.0.tgz#10602de5570baea82f8afbfa2630b24e7a8cfe5b" - integrity sha512-ZR0rq/f/E4f4XcgnDvtMWXCUJpi8eO0rssVhmztsZqLIEFA9UUP9zmpE0VxlM+kv/E1ul2I876Fwil2ayptDVg== + version "1.1.0" + resolved "https://registry.yarnpkg.com/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz#fd3db1d59ecf7cf121e80650bb86712f9b55eced" + integrity sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ== dependencies: camelcase "^5.3.1" find-up "^4.1.0" + get-package-type "^0.1.0" js-yaml "^3.13.1" resolve-from "^5.0.0" @@ -280,173 +310,195 @@ resolved "https://registry.yarnpkg.com/@istanbuljs/schema/-/schema-0.1.2.tgz#26520bf09abe4a5644cd5414e37125a8954241dd" integrity sha512-tsAQNx32a8CoFhjhijUIhI4kccIAgmGhy8LZMZgGfmXcpMbPRUqn5LWmgRttILi6yeGmBJd2xsPkFMs0PzgPCw== -"@jest/console@^25.3.0": - version "25.3.0" - resolved "https://registry.yarnpkg.com/@jest/console/-/console-25.3.0.tgz#33b56b81238427bf3ebe3f7b3378d2f79cdbd409" - integrity sha512-LvSDNqpmZIZyweFaEQ6wKY7CbexPitlsLHGJtcooNECo0An/w49rFhjCJzu6efeb6+a3ee946xss1Jcd9r03UQ== +"@jest/console@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/console/-/console-26.6.2.tgz#4e04bc464014358b03ab4937805ee36a0aeb98f2" + integrity sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g== dependencies: - "@jest/source-map" "^25.2.6" - chalk "^3.0.0" - jest-util "^25.3.0" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + jest-message-util "^26.6.2" + jest-util "^26.6.2" slash "^3.0.0" -"@jest/core@^25.3.0": - version "25.3.0" - resolved "https://registry.yarnpkg.com/@jest/core/-/core-25.3.0.tgz#80f97a7a8b59dde741a24f30871cc26d0197d426" - integrity sha512-+D5a/tFf6pA/Gqft2DLBp/yeSRgXhlJ+Wpst0X/ZkfTRP54qDR3C61VfHwaex+GzZBiTcE9vQeoZ2v5T10+Mqw== - dependencies: - "@jest/console" "^25.3.0" - "@jest/reporters" "^25.3.0" - "@jest/test-result" "^25.3.0" - "@jest/transform" "^25.3.0" - "@jest/types" "^25.3.0" +"@jest/core@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/core/-/core-26.6.3.tgz#7639fcb3833d748a4656ada54bde193051e45fad" + integrity sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/reporters" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" ansi-escapes "^4.2.1" - chalk "^3.0.0" + chalk "^4.0.0" exit "^0.1.2" - graceful-fs "^4.2.3" - jest-changed-files "^25.3.0" - jest-config "^25.3.0" - jest-haste-map "^25.3.0" - jest-message-util "^25.3.0" - jest-regex-util "^25.2.6" - jest-resolve "^25.3.0" - jest-resolve-dependencies "^25.3.0" - jest-runner "^25.3.0" - jest-runtime "^25.3.0" - jest-snapshot "^25.3.0" - jest-util "^25.3.0" - jest-validate "^25.3.0" - jest-watcher "^25.3.0" + graceful-fs "^4.2.4" + jest-changed-files "^26.6.2" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-resolve-dependencies "^26.6.3" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" + jest-watcher "^26.6.2" micromatch "^4.0.2" p-each-series "^2.1.0" - realpath-native "^2.0.0" rimraf "^3.0.0" slash "^3.0.0" strip-ansi "^6.0.0" -"@jest/environment@^25.3.0": - version "25.3.0" - resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-25.3.0.tgz#587f28ddb4b0dfe97404d3d4a4c9dbfa0245fb2e" - integrity sha512-vgooqwJTHLLak4fE+TaCGeYP7Tz1Y3CKOsNxR1sE0V3nx3KRUHn3NUnt+wbcfd5yQWKZQKAfW6wqbuwQLrXo3g== - dependencies: - "@jest/fake-timers" "^25.3.0" - "@jest/types" "^25.3.0" - jest-mock "^25.3.0" - -"@jest/fake-timers@^25.3.0": - version "25.3.0" - resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-25.3.0.tgz#995aad36d5c8984165ca5db12e740ab8dbf7042a" - integrity sha512-NHAj7WbsyR3qBJPpBwSwqaq2WluIvUQsyzpJTN7XDVk7VnlC/y1BAnaYZL3vbPIP8Nhm0Ae5DJe0KExr/SdMJQ== - dependencies: - "@jest/types" "^25.3.0" - jest-message-util "^25.3.0" - jest-mock "^25.3.0" - jest-util "^25.3.0" - lolex "^5.0.0" - -"@jest/reporters@^25.3.0": - version "25.3.0" - resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-25.3.0.tgz#7f39f0e6911561cc5112a1b54656de18faee269b" - integrity sha512-1u0ZBygs0C9DhdYgLCrRfZfNKQa+9+J7Uo+Z9z0RWLHzgsxhoG32lrmMOtUw48yR6bLNELdvzormwUqSk4H4Vg== +"@jest/environment@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/environment/-/environment-26.6.2.tgz#ba364cc72e221e79cc8f0a99555bf5d7577cf92c" + integrity sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA== + dependencies: + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + +"@jest/fake-timers@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/fake-timers/-/fake-timers-26.6.2.tgz#459c329bcf70cee4af4d7e3f3e67848123535aad" + integrity sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA== + dependencies: + "@jest/types" "^26.6.2" + "@sinonjs/fake-timers" "^6.0.1" + "@types/node" "*" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +"@jest/globals@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/globals/-/globals-26.6.2.tgz#5b613b78a1aa2655ae908eba638cc96a20df720a" + integrity sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/types" "^26.6.2" + expect "^26.6.2" + +"@jest/reporters@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/reporters/-/reporters-26.6.2.tgz#1f518b99637a5f18307bd3ecf9275f6882a667f6" + integrity sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw== dependencies: "@bcoe/v8-coverage" "^0.2.3" - "@jest/console" "^25.3.0" - "@jest/test-result" "^25.3.0" - "@jest/transform" "^25.3.0" - "@jest/types" "^25.3.0" - chalk "^3.0.0" + "@jest/console" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.2" + graceful-fs "^4.2.4" istanbul-lib-coverage "^3.0.0" - istanbul-lib-instrument "^4.0.0" + istanbul-lib-instrument "^4.0.3" istanbul-lib-report "^3.0.0" istanbul-lib-source-maps "^4.0.0" istanbul-reports "^3.0.2" - jest-haste-map "^25.3.0" - jest-resolve "^25.3.0" - jest-util "^25.3.0" - jest-worker "^25.2.6" + jest-haste-map "^26.6.2" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" slash "^3.0.0" source-map "^0.6.0" - string-length "^3.1.0" + string-length "^4.0.1" terminal-link "^2.0.0" - v8-to-istanbul "^4.0.1" + v8-to-istanbul "^7.0.0" optionalDependencies: - node-notifier "^6.0.0" + node-notifier "^8.0.0" -"@jest/source-map@^25.2.6": - version "25.2.6" - resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-25.2.6.tgz#0ef2209514c6d445ebccea1438c55647f22abb4c" - integrity sha512-VuIRZF8M2zxYFGTEhkNSvQkUKafQro4y+mwUxy5ewRqs5N/ynSFUODYp3fy1zCnbCMy1pz3k+u57uCqx8QRSQQ== +"@jest/source-map@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/source-map/-/source-map-26.6.2.tgz#29af5e1e2e324cafccc936f218309f54ab69d535" + integrity sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA== dependencies: callsites "^3.0.0" - graceful-fs "^4.2.3" + graceful-fs "^4.2.4" source-map "^0.6.0" -"@jest/test-result@^25.3.0": - version "25.3.0" - resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-25.3.0.tgz#137fab5e5c6fed36e5d40735d1eb029325e3bf06" - integrity sha512-mqrGuiiPXl1ap09Mydg4O782F3ouDQfsKqtQzIjitpwv3t1cHDwCto21jThw6WRRE+dKcWQvLG70GpyLJICfGw== +"@jest/test-result@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/test-result/-/test-result-26.6.2.tgz#55da58b62df134576cc95476efa5f7949e3f5f18" + integrity sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ== dependencies: - "@jest/console" "^25.3.0" - "@jest/types" "^25.3.0" + "@jest/console" "^26.6.2" + "@jest/types" "^26.6.2" "@types/istanbul-lib-coverage" "^2.0.0" collect-v8-coverage "^1.0.0" -"@jest/test-sequencer@^25.3.0": - version "25.3.0" - resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-25.3.0.tgz#271ad5f2b8f8137d092ccedc87e16a50f8676209" - integrity sha512-Xvns3xbji7JCvVcDGvqJ/pf4IpmohPODumoPEZJ0/VgC5gI4XaNVIBET2Dq5Czu6Gk3xFcmhtthh/MBOTljdNg== +"@jest/test-sequencer@^26.6.3": + version "26.6.3" + resolved "https://registry.yarnpkg.com/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz#98e8a45100863886d074205e8ffdc5a7eb582b17" + integrity sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw== dependencies: - "@jest/test-result" "^25.3.0" - jest-haste-map "^25.3.0" - jest-runner "^25.3.0" - jest-runtime "^25.3.0" + "@jest/test-result" "^26.6.2" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-runner "^26.6.3" + jest-runtime "^26.6.3" -"@jest/transform@^25.3.0": - version "25.3.0" - resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-25.3.0.tgz#083c5447d5307d9b9494d6968115b647460e71f1" - integrity sha512-W01p8kTDvvEX6kd0tJc7Y5VdYyFaKwNWy1HQz6Jqlhu48z/8Gxp+yFCDVj+H8Rc7ezl3Mg0hDaGuFVkmHOqirg== +"@jest/transform@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/transform/-/transform-26.6.2.tgz#5ac57c5fa1ad17b2aae83e73e45813894dcf2e4b" + integrity sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA== dependencies: "@babel/core" "^7.1.0" - "@jest/types" "^25.3.0" + "@jest/types" "^26.6.2" babel-plugin-istanbul "^6.0.0" - chalk "^3.0.0" + chalk "^4.0.0" convert-source-map "^1.4.0" fast-json-stable-stringify "^2.0.0" - graceful-fs "^4.2.3" - jest-haste-map "^25.3.0" - jest-regex-util "^25.2.6" - jest-util "^25.3.0" + graceful-fs "^4.2.4" + jest-haste-map "^26.6.2" + jest-regex-util "^26.0.0" + jest-util "^26.6.2" micromatch "^4.0.2" pirates "^4.0.1" - realpath-native "^2.0.0" slash "^3.0.0" source-map "^0.6.1" write-file-atomic "^3.0.0" -"@jest/types@^25.3.0": - version "25.3.0" - resolved "https://registry.yarnpkg.com/@jest/types/-/types-25.3.0.tgz#88f94b277a1d028fd7117bc1f74451e0fc2131e7" - integrity sha512-UkaDNewdqXAmCDbN2GlUM6amDKS78eCqiw/UmF5nE0mmLTd6moJkiZJML/X52Ke3LH7Swhw883IRXq8o9nWjVw== +"@jest/types@^26.6.2": + version "26.6.2" + resolved "https://registry.yarnpkg.com/@jest/types/-/types-26.6.2.tgz#bef5a532030e1d88a2f5a6d933f84e97226ed48e" + integrity sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ== dependencies: "@types/istanbul-lib-coverage" "^2.0.0" - "@types/istanbul-reports" "^1.1.1" + "@types/istanbul-reports" "^3.0.0" + "@types/node" "*" "@types/yargs" "^15.0.0" - chalk "^3.0.0" + chalk "^4.0.0" "@sinonjs/commons@^1.7.0": - version "1.7.2" - resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.7.2.tgz#505f55c74e0272b43f6c52d81946bed7058fc0e2" - integrity sha512-+DUO6pnp3udV/v2VfUWgaY5BIE1IfT7lLfeDzPVeMT1XKkaAp9LgSI9x5RtrFQoZ9Oi0PgXQQHPaoKu7dCjVxw== + version "1.8.2" + resolved "https://registry.yarnpkg.com/@sinonjs/commons/-/commons-1.8.2.tgz#858f5c4b48d80778fde4b9d541f27edc0d56488b" + integrity sha512-sruwd86RJHdsVf/AtBoijDmUqJp3B6hF/DGC23C+JaegnDHaZyewCjoVGTdg3J0uz3Zs7NnIT05OBOmML72lQw== dependencies: type-detect "4.0.8" -"@types/babel__core@^7.1.7": - version "7.1.7" - resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.7.tgz#1dacad8840364a57c98d0dd4855c6dd3752c6b89" - integrity sha512-RL62NqSFPCDK2FM1pSDH0scHpJvsXtZNiYlMB73DgPBaG1E38ZYVL+ei5EkWRbr+KC4YNiAUNBnRj+bgwpgjMw== +"@sinonjs/fake-timers@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz#293674fccb3262ac782c7aadfdeca86b10c75c40" + integrity sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA== + dependencies: + "@sinonjs/commons" "^1.7.0" + +"@types/babel__core@^7.0.0", "@types/babel__core@^7.1.7": + version "7.1.12" + resolved "https://registry.yarnpkg.com/@types/babel__core/-/babel__core-7.1.12.tgz#4d8e9e51eb265552a7e4f1ff2219ab6133bdfb2d" + integrity sha512-wMTHiiTiBAAPebqaPiPDLFA4LYPKr6Ph0Xq/6rq1Ur3v66HXyG+clfR9CNETkD7MQS8ZHvpQOtA53DLws5WAEQ== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" @@ -455,36 +507,38 @@ "@types/babel__traverse" "*" "@types/babel__generator@*": - version "7.6.1" - resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.1.tgz#4901767b397e8711aeb99df8d396d7ba7b7f0e04" - integrity sha512-bBKm+2VPJcMRVwNhxKu8W+5/zT7pwNEqeokFOmbvVSqGzFneNxYcEBro9Ac7/N9tlsaPYnZLK8J1LWKkMsLAew== + version "7.6.2" + resolved "https://registry.yarnpkg.com/@types/babel__generator/-/babel__generator-7.6.2.tgz#f3d71178e187858f7c45e30380f8f1b7415a12d8" + integrity sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ== dependencies: "@babel/types" "^7.0.0" "@types/babel__template@*": - version "7.0.2" - resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.0.2.tgz#4ff63d6b52eddac1de7b975a5223ed32ecea9307" - integrity sha512-/K6zCpeW7Imzgab2bLkLEbz0+1JlFSrUMdw7KoIIu+IUdu51GWaBZpd3y1VXGVXzynvGa4DaIaxNZHiON3GXUg== + version "7.4.0" + resolved "https://registry.yarnpkg.com/@types/babel__template/-/babel__template-7.4.0.tgz#0c888dd70b3ee9eebb6e4f200e809da0076262be" + integrity sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A== dependencies: "@babel/parser" "^7.1.0" "@babel/types" "^7.0.0" -"@types/babel__traverse@*", "@types/babel__traverse@^7.0.6": - version "7.0.10" - resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.0.10.tgz#d9a99f017317d9b3d1abc2ced45d3bca68df0daf" - integrity sha512-74fNdUGrWsgIB/V9kTO5FGHPWYY6Eqn+3Z7L6Hc4e/BxjYV7puvBqp5HwsVYYfLm6iURYBNCx4Ut37OF9yitCw== +"@types/babel__traverse@*", "@types/babel__traverse@^7.0.4", "@types/babel__traverse@^7.0.6": + version "7.11.0" + resolved "https://registry.yarnpkg.com/@types/babel__traverse/-/babel__traverse-7.11.0.tgz#b9a1efa635201ba9bc850323a8793ee2d36c04a0" + integrity sha512-kSjgDMZONiIfSH1Nxcr5JIRMwUetDki63FSQfpTCz8ogF3Ulqm8+mr5f78dUYs6vMiB6gBusQqfQmBvHZj/lwg== dependencies: "@babel/types" "^7.3.0" -"@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== +"@types/graceful-fs@^4.1.2": + version "4.1.4" + resolved "https://registry.yarnpkg.com/@types/graceful-fs/-/graceful-fs-4.1.4.tgz#4ff9f641a7c6d1a3508ff88bc3141b152772e753" + integrity sha512-mWA/4zFQhfvOA8zWkXobwJvBD7vzcxgrOQ0J5CH1votGqdq9m7+FwtGaqyCZqC3NyyBkc9z4m+iry4LlqcMWJg== + dependencies: + "@types/node" "*" "@types/istanbul-lib-coverage@*", "@types/istanbul-lib-coverage@^2.0.0", "@types/istanbul-lib-coverage@^2.0.1": - version "2.0.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.1.tgz#42995b446db9a48a11a07ec083499a860e9138ff" - integrity sha512-hRJD2ahnnpLgsj6KWMYSrmXkM3rm2Dl1qkx6IOFD5FnuNPXJIG5L0dhgKXCYTRMGzU4n0wImQ/xfmRc4POUFlg== + version "2.0.3" + resolved "https://registry.yarnpkg.com/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz#4ba8ddb720221f432e443bd5f9117fd22cfd4762" + integrity sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw== "@types/istanbul-lib-report@*": version "3.0.0" @@ -493,86 +547,123 @@ dependencies: "@types/istanbul-lib-coverage" "*" -"@types/istanbul-reports@^1.1.1": - version "1.1.1" - resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-1.1.1.tgz#7a8cbf6a406f36c8add871625b278eaf0b0d255a" - integrity sha512-UpYjBi8xefVChsCoBpKShdxTllC9pwISirfoZsUa2AAdQg/Jd2KQGtSbw+ya7GPo7x/wAPlH6JBhKhAsXUEZNA== +"@types/istanbul-reports@^3.0.0": + version "3.0.0" + resolved "https://registry.yarnpkg.com/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz#508b13aa344fa4976234e75dddcc34925737d821" + integrity sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA== dependencies: - "@types/istanbul-lib-coverage" "*" "@types/istanbul-lib-report" "*" -"@types/prettier@^1.19.0": - version "1.19.1" - resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-1.19.1.tgz#33509849f8e679e4add158959fdb086440e9553f" - integrity sha512-5qOlnZscTn4xxM5MeGXAMOsIOIKIbh9e85zJWfBRVPlRMEVawzoPhINYbRGkBZCI8LxvBe7tJCdWiarA99OZfQ== +"@types/json5@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" + integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= -"@types/stack-utils@^1.0.1": - version "1.0.1" - resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-1.0.1.tgz#0a851d3bd96498fa25c33ab7278ed3bd65f06c3e" - integrity sha512-l42BggppR6zLmpfU6fq9HEa2oGPEI8yrSPL3GITjfRInppYFahObbIQOQK3UGxEnyQpltZLaPe75046NOZQikw== +"@types/node@*": + version "14.14.22" + resolved "https://registry.yarnpkg.com/@types/node/-/node-14.14.22.tgz#0d29f382472c4ccf3bd96ff0ce47daf5b7b84b18" + integrity sha512-g+f/qj/cNcqKkc3tFqlXOYjrmZA+jNBiDzbP3kH+B+otKFqAdPgVTGP1IeKRdMml/aE69as5S4FqtxAbl+LaMw== + +"@types/normalize-package-data@^2.4.0": + version "2.4.0" + resolved "https://registry.yarnpkg.com/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz#e486d0d97396d79beedd0a6e33f4534ff6b4973e" + integrity sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA== + +"@types/parse-json@^4.0.0": + version "4.0.0" + resolved "https://registry.yarnpkg.com/@types/parse-json/-/parse-json-4.0.0.tgz#2f8bb441434d163b35fb8ffdccd7138927ffb8c0" + integrity sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA== + +"@types/prettier@^2.0.0": + version "2.1.6" + resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.6.tgz#f4b1efa784e8db479cdb8b14403e2144b1e9ff03" + integrity sha512-6gOkRe7OIioWAXfnO/2lFiv+SJichKVSys1mSsgyrYHSEjk8Ctv4tSR/Odvnu+HWlH2C8j53dahU03XmQdd5fA== + +"@types/stack-utils@^2.0.0": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/stack-utils/-/stack-utils-2.0.0.tgz#7036640b4e21cc2f259ae826ce843d277dad8cff" + integrity sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw== "@types/yargs-parser@*": - version "15.0.0" - resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-15.0.0.tgz#cb3f9f741869e20cce330ffbeb9271590483882d" - integrity sha512-FA/BWv8t8ZWJ+gEOnLLd8ygxH/2UFbAvgEonyfN6yWGLKc7zVjbpl2Y4CTjid9h2RfgPP6SEt6uHwEOply00yw== + version "20.2.0" + resolved "https://registry.yarnpkg.com/@types/yargs-parser/-/yargs-parser-20.2.0.tgz#dd3e6699ba3237f0348cd085e4698780204842f9" + integrity sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA== "@types/yargs@^15.0.0": - version "15.0.4" - resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.4.tgz#7e5d0f8ca25e9d5849f2ea443cf7c402decd8299" - integrity sha512-9T1auFmbPZoxHz0enUFlUuKRy3it01R+hlggyVUMtnCTQRunsQYifnSGb8hET4Xo8yiC0o0r1paW3ud5+rbURg== + version "15.0.12" + resolved "https://registry.yarnpkg.com/@types/yargs/-/yargs-15.0.12.tgz#6234ce3e3e3fa32c5db301a170f96a599c960d74" + integrity sha512-f+fD/fQAo3BCbCDlrUpznF1A5Zp9rB0noS5vnoormHSIPFKL0Z2DcUJ3Gxp5ytH4uLRNxy7AwYUC9exZzqGMAw== dependencies: "@types/yargs-parser" "*" -abab@^2.0.0: - version "2.0.3" - resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.3.tgz#623e2075e02eb2d3f2475e49f99c91846467907a" - integrity sha512-tsFzPpcttalNjFBCFMqsKYQcWxxen1pgJR56by//QwvJc4/OUS3kPOOttx2tSIfjsylB0pYu7f5D3K1RCxUnUg== +abab@^2.0.3: + version "2.0.5" + resolved "https://registry.yarnpkg.com/abab/-/abab-2.0.5.tgz#c0b678fb32d60fc1219c784d6a826fe385aeb79a" + integrity sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q== -acorn-globals@^4.3.2: - version "4.3.4" - resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-4.3.4.tgz#9fa1926addc11c97308c4e66d7add0d40c3272e7" - integrity sha512-clfQEh21R+D0leSbUdWf3OcfqyaCSAQ8Ryq00bofSekfr9W8u1jyYZo6ir0xu9Gtcf7BjcHJpnbZH7JOCpP60A== +acorn-globals@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/acorn-globals/-/acorn-globals-6.0.0.tgz#46cdd39f0f8ff08a876619b55f5ac8a6dc770b45" + integrity sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg== dependencies: - acorn "^6.0.1" - acorn-walk "^6.0.1" + acorn "^7.1.1" + acorn-walk "^7.1.1" -acorn-walk@^6.0.1: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== +acorn-jsx@^5.3.1: + version "5.3.1" + resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.1.tgz#fc8661e11b7ac1539c47dbfea2e72b3af34d267b" + integrity sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng== -acorn@^6.0.1: - version "6.4.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.1.tgz#531e58ba3f51b9dacb9a6646ca4debf5b14ca474" - integrity sha512-ZVA9k326Nwrj3Cj9jlh3wGFutC2ZornPNARZwsNYqQYgN0EsV2d53w5RN/co65Ohn4sUAUtb1rSUAOD6XN9idA== +acorn-walk@^7.1.1: + version "7.2.0" + resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" + integrity sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA== -acorn@^7.1.0: - version "7.1.1" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.1.1.tgz#e35668de0b402f359de515c5482a1ab9f89a69bf" - integrity sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg== +acorn@^7.1.1, acorn@^7.4.0: + version "7.4.1" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" + integrity sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A== -ajv@^6.5.5: - version "6.12.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.0.tgz#06d60b96d87b8454a5adaba86e7854da629db4b7" - integrity sha512-D6gFiFA0RRLyUbvijN74DWAjXSFxWKaWP7mldxkVhyhAV3+SWA9HEJPHQ2c9soIeTFJqcSdFDGFgdqs1iUU2Hw== +aggregate-error@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/aggregate-error/-/aggregate-error-3.1.0.tgz#92670ff50f5359bdb7a3e0d40d0ec30c5737687a" + integrity sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA== + dependencies: + clean-stack "^2.0.0" + indent-string "^4.0.0" + +ajv@^6.10.0, ajv@^6.12.3, ajv@^6.12.4: + version "6.12.6" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.12.6.tgz#baf5a62e802b07d977034586f8c3baf5adf26df4" + integrity sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g== dependencies: fast-deep-equal "^3.1.1" fast-json-stable-stringify "^2.0.0" json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ansi-escapes@^4.2.1: +ajv@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/ajv/-/ajv-7.0.3.tgz#13ae747eff125cafb230ac504b2406cf371eece2" + integrity sha512-R50QRlXSxqXcQP5SvKUrw8VZeypvo12i2IX0EeR5PiZ7bEKeHWgzgo264LDadUsCU42lTJVhFikTqJwNeH34gQ== + dependencies: + fast-deep-equal "^3.1.1" + json-schema-traverse "^1.0.0" + require-from-string "^2.0.2" + uri-js "^4.2.2" + +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-escapes@^4.2.1, ansi-escapes@^4.3.0: version "4.3.1" resolved "https://registry.yarnpkg.com/ansi-escapes/-/ansi-escapes-4.3.1.tgz#a5c47cc43181f1f38ffd7076837700d395522a61" integrity sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA== dependencies: type-fest "^0.11.0" -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" @@ -586,11 +677,10 @@ ansi-styles@^3.2.1: color-convert "^1.9.0" ansi-styles@^4.0.0, 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== + version "4.3.0" + resolved "https://registry.yarnpkg.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937" + integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg== dependencies: - "@types/color-name" "^1.1.1" color-convert "^2.0.1" anymatch@^2.0.0: @@ -631,16 +721,31 @@ arr-union@^3.1.0: resolved "https://registry.yarnpkg.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4" integrity sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ= -array-equal@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/array-equal/-/array-equal-1.0.0.tgz#8c2a5ef2472fd9ea742b04c77a75093ba2757c93" - integrity sha1-jCpe8kcv2ep0KwTHenUJO6J1fJM= +array-includes@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/array-includes/-/array-includes-3.1.2.tgz#a8db03e0b88c8c6aeddc49cb132f9bcab4ebf9c8" + integrity sha512-w2GspexNQpx+PutG3QpT437/BenZBj0M/MZGn5mzv/MofYqo0xmRHzn4lFsoDlWJ+THYsGJmFlW68WlDFx7VRw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + get-intrinsic "^1.0.1" + is-string "^1.0.5" 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= +array.prototype.flat@^1.2.3: + version "1.2.4" + resolved "https://registry.yarnpkg.com/array.prototype.flat/-/array.prototype.flat-1.2.4.tgz#6ef638b43312bd401b4c6199fdec7e2dc9e9a123" + integrity sha512-4470Xi3GAPAjZqFcljX2xzckv1qeKPizoNkiS0+O4IoPR2ZNpcjE0pkhdihlDouK+x6QOast26B4Q/O9DJnwSg== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + asn1@~0.2.3: version "0.2.4" resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.4.tgz#8d2475dfab553bb33e77b54e59e880bb8ce23136" @@ -658,10 +763,10 @@ assign-symbols@^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== +astral-regex@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-2.0.0.tgz#483143c567aeed4785759c0865786dc77d7d2e31" + integrity sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ== asynckit@^0.4.0: version "0.4.0" @@ -679,21 +784,22 @@ aws-sign2@~0.7.0: integrity sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg= aws4@^1.8.0: - version "1.9.1" - resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.9.1.tgz#7e33d8f7d449b3f673cd72deb9abdc552dbe528e" - integrity sha512-wMHVg2EOHaMRxbzgFJ9gtjOOCrI80OHLG14rxi28XwOW8ux6IiEbRCGGGqCtdAIg4FQCbW20k9RsT4y3gJlFug== + version "1.11.0" + resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.11.0.tgz#d61f46d83b2519250e2784daf5b09479a8b41c59" + integrity sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA== -babel-jest@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-25.3.0.tgz#999d0c19e8427f66b796bf9ea233eedf087b957c" - integrity sha512-qiXeX1Cmw4JZ5yQ4H57WpkO0MZ61Qj+YnsVUwAMnDV5ls+yHon11XjarDdgP7H8lTmiEi6biiZA8y3Tmvx6pCg== +babel-jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/babel-jest/-/babel-jest-26.6.3.tgz#d87d25cb0037577a0c89f82e5755c5d293c01056" + integrity sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA== dependencies: - "@jest/transform" "^25.3.0" - "@jest/types" "^25.3.0" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/babel__core" "^7.1.7" babel-plugin-istanbul "^6.0.0" - babel-preset-jest "^25.3.0" - chalk "^3.0.0" + babel-preset-jest "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" slash "^3.0.0" babel-plugin-istanbul@^6.0.0: @@ -707,21 +813,25 @@ babel-plugin-istanbul@^6.0.0: istanbul-lib-instrument "^4.0.0" test-exclude "^6.0.0" -babel-plugin-jest-hoist@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-25.2.6.tgz#2af07632b8ac7aad7d414c1e58425d5fc8e84909" - integrity sha512-qE2xjMathybYxjiGFJg0mLFrz0qNp83aNZycWDY/SuHiZNq+vQfRQtuINqyXyue1ELd8Rd+1OhFSLjms8msMbw== +babel-plugin-jest-hoist@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz#8185bd030348d254c6d7dd974355e6a28b21e62d" + integrity sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw== dependencies: + "@babel/template" "^7.3.3" + "@babel/types" "^7.3.3" + "@types/babel__core" "^7.0.0" "@types/babel__traverse" "^7.0.6" -babel-preset-current-node-syntax@^0.1.2: - version "0.1.2" - resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-0.1.2.tgz#fb4a4c51fe38ca60fede1dc74ab35eb843cb41d6" - integrity sha512-u/8cS+dEiK1SFILbOC8/rUI3ml9lboKuuMvZ/4aQnQmhecQAgPw5ew066C1ObnEAUmlx7dv/s2z52psWEtLNiw== +babel-preset-current-node-syntax@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz#b4399239b89b2a011f9ddbe3e4f401fc40cff73b" + integrity sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ== dependencies: "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-bigint" "^7.8.3" "@babel/plugin-syntax-class-properties" "^7.8.3" + "@babel/plugin-syntax-import-meta" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.3" "@babel/plugin-syntax-logical-assignment-operators" "^7.8.3" "@babel/plugin-syntax-nullish-coalescing-operator" "^7.8.3" @@ -729,14 +839,15 @@ babel-preset-current-node-syntax@^0.1.2: "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-top-level-await" "^7.8.3" -babel-preset-jest@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-25.3.0.tgz#9ab40aee52a19bdc52b8b1ec2403d5914ac3d86b" - integrity sha512-tjdvLKNMwDI9r+QWz9sZUQGTq1dpoxjUqFUpEasAc7MOtHg9XuLT2fx0udFG+k1nvMV0WvHHVAN7VmCZ+1Zxbw== +babel-preset-jest@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz#747872b1171df032252426586881d62d31798fee" + integrity sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ== dependencies: - babel-plugin-jest-hoist "^25.2.6" - babel-preset-current-node-syntax "^0.1.2" + babel-plugin-jest-hoist "^26.6.2" + babel-preset-current-node-syntax "^1.0.0" balanced-match@^1.0.0: version "1.0.0" @@ -799,13 +910,6 @@ browser-process-hrtime@^1.0.0: resolved "https://registry.yarnpkg.com/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz#3c9b4b7d782c8121e56f10106d84c0d0ffc94626" integrity sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow== -browser-resolve@^1.11.3: - version "1.11.3" - resolved "https://registry.yarnpkg.com/browser-resolve/-/browser-resolve-1.11.3.tgz#9b7cbb3d0f510e4cb86bdbd796124d28b5890af6" - integrity sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ== - dependencies: - resolve "1.1.7" - bser@2.1.1: version "2.1.1" resolved "https://registry.yarnpkg.com/bser/-/bser-2.1.1.tgz#e6787da20ece9d07998533cfd9de6f5c38f4bc05" @@ -833,6 +937,14 @@ cache-base@^1.0.1: union-value "^1.0.0" unset-value "^1.0.0" +call-bind@^1.0.0, call-bind@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -843,6 +955,11 @@ camelcase@^5.0.0, camelcase@^5.3.1: resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-5.3.1.tgz#e3c9b31569e106811df242f715725a1f4c494320" integrity sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg== +camelcase@^6.0.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-6.2.0.tgz#924af881c9d525ac9d87f40d964e5cea982a1809" + integrity sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg== + capture-exit@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/capture-exit/-/capture-exit-2.0.0.tgz#fb953bfaebeb781f62898239dabb426d08a509a4" @@ -864,19 +981,29 @@ chalk@^2.0.0: escape-string-regexp "^1.0.5" supports-color "^5.3.0" -chalk@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/chalk/-/chalk-3.0.0.tgz#3f73c2bf526591f574cc492c51e2456349f844e4" - integrity sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg== +chalk@^4.0.0, chalk@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" + integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== dependencies: ansi-styles "^4.1.0" supports-color "^7.1.0" +char-regex@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/char-regex/-/char-regex-1.0.2.tgz#d744358226217f981ed58f479b1d6bcc29545dcf" + integrity sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw== + ci-info@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== +cjs-module-lexer@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz#4186fcca0eae175970aee870b9fe2d6cf8d5655f" + integrity sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw== + class-utils@^0.3.5: version "0.3.6" resolved "https://registry.yarnpkg.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463" @@ -887,6 +1014,26 @@ class-utils@^0.3.5: isobject "^3.0.0" static-extend "^0.1.1" +clean-stack@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/clean-stack/-/clean-stack-2.2.0.tgz#ee8472dbb129e727b31e8a10a427dee9dfe4008b" + integrity sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A== + +cli-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/cli-cursor/-/cli-cursor-3.1.0.tgz#264305a7ae490d1d03bf0c9ba7c925d1753af307" + integrity sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw== + dependencies: + restore-cursor "^3.1.0" + +cli-truncate@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-2.1.0.tgz#c39e28bf05edcde5be3b98992a22deed5a2b93c7" + integrity sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg== + dependencies: + slice-ansi "^3.0.0" + string-width "^4.2.0" + cliui@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/cliui/-/cliui-6.0.0.tgz#511d702c0c4e41ca156d7d0e96021f23e13225b1" @@ -945,6 +1092,16 @@ combined-stream@^1.0.6, combined-stream@~1.0.6: dependencies: delayed-stream "~1.0.0" +commander@^6.2.0: + version "6.2.1" + resolved "https://registry.yarnpkg.com/commander/-/commander-6.2.1.tgz#0792eb682dfbc325999bb2b84fddddba110ac73c" + integrity sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA== + +compare-versions@^3.6.0: + version "3.6.0" + resolved "https://registry.yarnpkg.com/compare-versions/-/compare-versions-3.6.0.tgz#1a5689913685e5a87637b8d3ffca75514ec41d62" + integrity sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA== + component-emitter@^1.2.1: version "1.3.0" resolved "https://registry.yarnpkg.com/component-emitter/-/component-emitter-1.3.0.tgz#16e4070fba8ae29b679f2215853ee181ab2eabc0" @@ -955,6 +1112,11 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= +contains-path@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/contains-path/-/contains-path-0.1.0.tgz#fe8cf184ff6670b6baef01a9d4861a5cbec4120a" + integrity sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo= + convert-source-map@^1.4.0, convert-source-map@^1.6.0, convert-source-map@^1.7.0: version "1.7.0" resolved "https://registry.yarnpkg.com/convert-source-map/-/convert-source-map-1.7.0.tgz#17a2cb882d7f77d3490585e2ce6c524424a3a442" @@ -972,6 +1134,17 @@ core-util-is@1.0.2: resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= +cosmiconfig@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/cosmiconfig/-/cosmiconfig-7.0.0.tgz#ef9b44d773959cae63ddecd122de23853b60f8d3" + integrity sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA== + dependencies: + "@types/parse-json" "^4.0.0" + import-fresh "^3.2.1" + parse-json "^5.0.0" + path-type "^4.0.0" + yaml "^1.10.0" + cross-spawn@^6.0.0: version "6.0.5" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-6.0.5.tgz#4a5ec7c64dfae22c3a14124dbacdee846d80cbc4" @@ -983,16 +1156,16 @@ cross-spawn@^6.0.0: shebang-command "^1.2.0" which "^1.2.9" -cross-spawn@^7.0.0: - version "7.0.2" - resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.2.tgz#d0d7dcfa74e89115c7619f4f721a94e1fdb716d6" - integrity sha512-PD6G8QG3S4FK/XCGFbEQrDqO2AnMMsy0meR7lerlIOHAAbkuavGU/pOqprrlvfTNjvowivTeBsjebAL0NSoMxw== +cross-spawn@^7.0.0, cross-spawn@^7.0.2: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" + integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== dependencies: path-key "^3.1.0" shebang-command "^2.0.0" which "^2.0.1" -cssom@^0.4.1: +cssom@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.4.4.tgz#5a66cf93d2d0b661d80bf6a44fb65f5c2e4e0a10" integrity sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw== @@ -1002,10 +1175,10 @@ cssom@~0.3.6: resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" integrity sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg== -cssstyle@^2.0.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.2.0.tgz#e4c44debccd6b7911ed617a4395e5754bba59992" - integrity sha512-sEb3XFPx3jNnCAMtqrXPDeSgQr+jojtCeNf8cvMNMh1cG970+lljssvQDzPq6lmmJu2Vhqood/gtEomBiHOGnA== +cssstyle@^2.2.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/cssstyle/-/cssstyle-2.3.0.tgz#ff665a0ddbdc31864b09647f34163443d90b0852" + integrity sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A== dependencies: cssom "~0.3.6" @@ -1016,40 +1189,50 @@ dashdash@^1.12.0: dependencies: assert-plus "^1.0.0" -data-urls@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-1.1.0.tgz#15ee0582baa5e22bb59c77140da8f9c76963bbfe" - integrity sha512-YTWYI9se1P55u58gL5GkQHW4P6VJBJ5iBT+B5a7i2Tjadhv52paJG0qHX4A0OR6/t52odI64KP2YvFpkDOi3eQ== +data-urls@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/data-urls/-/data-urls-2.0.0.tgz#156485a72963a970f5d5821aaf642bef2bf2db9b" + integrity sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ== dependencies: - abab "^2.0.0" - whatwg-mimetype "^2.2.0" - whatwg-url "^7.0.0" + abab "^2.0.3" + whatwg-mimetype "^2.3.0" + whatwg-url "^8.0.0" -debug@^2.2.0, debug@^2.3.3: +debug@^2.2.0, debug@^2.3.3, debug@^2.6.9: 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.1.0, 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== +debug@^4.0.1, debug@^4.1.0, debug@^4.1.1, debug@^4.2.0: + version "4.3.1" + resolved "https://registry.yarnpkg.com/debug/-/debug-4.3.1.tgz#f0d229c505e0c6d8c49ac553d1b13dc183f6b2ee" + integrity sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ== dependencies: - ms "^2.1.1" + ms "2.1.2" decamelize@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= +decimal.js@^10.2.0: + version "10.2.1" + resolved "https://registry.yarnpkg.com/decimal.js/-/decimal.js-10.2.1.tgz#238ae7b0f0c793d3e3cea410108b35a2c01426a3" + integrity sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw== + 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-is@~0.1.3: +dedent@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/dedent/-/dedent-0.7.0.tgz#2495ddbaf6eb874abb0e1be9df22d2e5a544326c" + integrity sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw= + +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= @@ -1059,6 +1242,13 @@ deepmerge@^4.2.2: resolved "https://registry.yarnpkg.com/deepmerge/-/deepmerge-4.2.2.tgz#44d2ea3679b8f4d4ffba33f03d865fc1e7bf4955" integrity sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg== +define-properties@^1.1.3: + version "1.1.3" + resolved "https://registry.yarnpkg.com/define-properties/-/define-properties-1.1.3.tgz#cf88da6cbee26fe6db7094f61d870cbd84cee9f1" + integrity sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ== + dependencies: + object-keys "^1.0.12" + define-property@^0.2.5: version "0.2.5" resolved "https://registry.yarnpkg.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116" @@ -1091,17 +1281,32 @@ detect-newline@^3.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== -diff-sequences@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-25.2.6.tgz#5f467c00edd35352b7bca46d7927d60e687a76dd" - integrity sha512-Hq8o7+6GaZeoFjtpgvRBUknSXNeJiCx7V9Fr94ZMljNiCr9n9L8H8aJqgWOQiDDGdyn29fRNcDdRVJ5fdyihfg== +diff-sequences@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/diff-sequences/-/diff-sequences-26.6.2.tgz#48ba99157de1923412eed41db6b6d4aa9ca7c0b1" + integrity sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q== -domexception@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/domexception/-/domexception-1.0.1.tgz#937442644ca6a31261ef36e3ec677fe805582c90" - integrity sha512-raigMkn7CJNNo6Ihro1fzG7wr3fHuYVytzquZKX5n0yizGsTcYgzdIUwj1X9pK0VvjeihV+XiclP+DjwbsSKug== +doctrine@1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-1.5.0.tgz#379dce730f6166f76cefa4e6707a159b02c5a6fa" + integrity sha1-N53Ocw9hZvds76TmcHoVmwLFpvo= + dependencies: + esutils "^2.0.2" + isarray "^1.0.0" + +doctrine@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/doctrine/-/doctrine-3.0.0.tgz#addebead72a6574db783639dc87a121773973961" + integrity sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w== dependencies: - webidl-conversions "^4.0.2" + esutils "^2.0.2" + +domexception@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/domexception/-/domexception-2.0.1.tgz#fb44aefba793e1574b0af6aed2801d057529f304" + integrity sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg== + dependencies: + webidl-conversions "^5.0.0" ecc-jsbn@~0.1.1: version "0.1.2" @@ -1111,6 +1316,11 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" +emittery@^0.7.1: + version "0.7.2" + resolved "https://registry.yarnpkg.com/emittery/-/emittery-0.7.2.tgz#25595908e13af0f5674ab419396e2fb394cdfa82" + integrity sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ== + emoji-regex@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37" @@ -1123,15 +1333,63 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +enquirer@^2.3.5, enquirer@^2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/enquirer/-/enquirer-2.3.6.tgz#2a7fe5dd634a1e4125a975ec994ff5456dc3734d" + integrity sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg== + dependencies: + ansi-colors "^4.1.1" + +error-ex@^1.2.0, error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +es-abstract@^1.18.0-next.1: + version "1.18.0-next.2" + resolved "https://registry.yarnpkg.com/es-abstract/-/es-abstract-1.18.0-next.2.tgz#088101a55f0541f595e7e057199e27ddc8f3a5c2" + integrity sha512-Ih4ZMFHEtZupnUh6497zEL4y2+w8+1ljnCyaTa+adcoafI1GOvMwFlDjBLfWR7y9VLfrjRJe9ocuHY1PSR9jjw== + dependencies: + call-bind "^1.0.2" + es-to-primitive "^1.2.1" + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + has "^1.0.3" + has-symbols "^1.0.1" + is-callable "^1.2.2" + is-negative-zero "^2.0.1" + is-regex "^1.1.1" + object-inspect "^1.9.0" + object-keys "^1.1.1" + object.assign "^4.1.2" + string.prototype.trimend "^1.0.3" + string.prototype.trimstart "^1.0.3" + +es-to-primitive@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.1.tgz#e55cd4c9cdc188bcefb03b366c736323fc5c898a" + integrity sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA== + dependencies: + is-callable "^1.1.4" + is-date-object "^1.0.1" + is-symbol "^1.0.2" + escape-string-regexp@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4" integrity sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ= -escodegen@^1.11.1: - version "1.14.1" - resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.1.tgz#ba01d0c8278b5e95a9a45350142026659027a457" - integrity sha512-Bmt7NcRySdIfNPfU2ZoXDrrXsG9ZjvDxcAlMfDUgRBjLOWTuIACXPBFJH7Z+cLb40JeQco5toikyc9t9P8E9SQ== +escape-string-regexp@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" + integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== + +escodegen@^1.14.1: + version "1.14.3" + resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" + integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== dependencies: esprima "^4.0.1" estraverse "^4.2.0" @@ -1140,16 +1398,159 @@ escodegen@^1.11.1: optionalDependencies: source-map "~0.6.1" +eslint-config-prettier@^7.2.0: + version "7.2.0" + resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-7.2.0.tgz#f4a4bd2832e810e8cc7c1411ec85b3e85c0c53f9" + integrity sha512-rV4Qu0C3nfJKPOAhFujFxB7RMP+URFyQqqOZW9DMRD7ZDTFyjaIlETU3xzHELt++4ugC0+Jm084HQYkkJe+Ivg== + +eslint-import-resolver-node@^0.3.4: + version "0.3.4" + resolved "https://registry.yarnpkg.com/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.4.tgz#85ffa81942c25012d8231096ddf679c03042c717" + integrity sha512-ogtf+5AB/O+nM6DIeBUNr2fuT7ot9Qg/1harBfBtaP13ekEWFQEEMP94BCB7zaNW3gyY+8SHYF00rnqYwXKWOA== + dependencies: + debug "^2.6.9" + resolve "^1.13.1" + +eslint-module-utils@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/eslint-module-utils/-/eslint-module-utils-2.6.0.tgz#579ebd094f56af7797d19c9866c9c9486629bfa6" + integrity sha512-6j9xxegbqe8/kZY8cYpcp0xhbK0EgJlg3g9mib3/miLaExuuwc3n5UEfSnU6hWMbT0FAYVvDbL9RrRgpUeQIvA== + dependencies: + debug "^2.6.9" + pkg-dir "^2.0.0" + +eslint-plugin-import@^2.22.1: + version "2.22.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-import/-/eslint-plugin-import-2.22.1.tgz#0896c7e6a0cf44109a2d97b95903c2bb689d7702" + integrity sha512-8K7JjINHOpH64ozkAhpT3sd+FswIZTfMZTjdx052pnWrgRCVfp8op9tbjpAk3DdUeI/Ba4C8OjdC0r90erHEOw== + dependencies: + array-includes "^3.1.1" + array.prototype.flat "^1.2.3" + contains-path "^0.1.0" + debug "^2.6.9" + doctrine "1.5.0" + eslint-import-resolver-node "^0.3.4" + eslint-module-utils "^2.6.0" + has "^1.0.3" + minimatch "^3.0.4" + object.values "^1.1.1" + read-pkg-up "^2.0.0" + resolve "^1.17.0" + tsconfig-paths "^3.9.0" + +eslint-plugin-prettier@^3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/eslint-plugin-prettier/-/eslint-plugin-prettier-3.3.1.tgz#7079cfa2497078905011e6f82e8dd8453d1371b7" + integrity sha512-Rq3jkcFY8RYeQLgk2cCwuc0P7SEFwDravPhsJZOQ5N4YI4DSg50NyqJ/9gdZHzQlHf8MvafSesbNJCcP/FF6pQ== + dependencies: + prettier-linter-helpers "^1.0.0" + +eslint-scope@^5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/eslint-scope/-/eslint-scope-5.1.1.tgz#e786e59a66cb92b3f6c1fb0d508aab174848f48c" + integrity sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw== + dependencies: + esrecurse "^4.3.0" + estraverse "^4.1.1" + +eslint-utils@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/eslint-utils/-/eslint-utils-2.1.0.tgz#d2de5e03424e707dc10c74068ddedae708741b27" + integrity sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg== + dependencies: + eslint-visitor-keys "^1.1.0" + +eslint-visitor-keys@^1.1.0, eslint-visitor-keys@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz#30ebd1ef7c2fdff01c3a4f151044af25fab0523e" + integrity sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ== + +eslint-visitor-keys@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz#21fdc8fbcd9c795cc0321f0563702095751511a8" + integrity sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ== + +eslint@^7.18.0: + version "7.18.0" + resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.18.0.tgz#7fdcd2f3715a41fe6295a16234bd69aed2c75e67" + integrity sha512-fbgTiE8BfUJZuBeq2Yi7J3RB3WGUQ9PNuNbmgi6jt9Iv8qrkxfy19Ds3OpL1Pm7zg3BtTVhvcUZbIRQ0wmSjAQ== + dependencies: + "@babel/code-frame" "^7.0.0" + "@eslint/eslintrc" "^0.3.0" + ajv "^6.10.0" + chalk "^4.0.0" + cross-spawn "^7.0.2" + debug "^4.0.1" + doctrine "^3.0.0" + enquirer "^2.3.5" + eslint-scope "^5.1.1" + eslint-utils "^2.1.0" + eslint-visitor-keys "^2.0.0" + espree "^7.3.1" + esquery "^1.2.0" + esutils "^2.0.2" + file-entry-cache "^6.0.0" + functional-red-black-tree "^1.0.1" + glob-parent "^5.0.0" + globals "^12.1.0" + ignore "^4.0.6" + import-fresh "^3.0.0" + imurmurhash "^0.1.4" + is-glob "^4.0.0" + js-yaml "^3.13.1" + json-stable-stringify-without-jsonify "^1.0.1" + levn "^0.4.1" + lodash "^4.17.20" + minimatch "^3.0.4" + natural-compare "^1.4.0" + optionator "^0.9.1" + progress "^2.0.0" + regexpp "^3.1.0" + semver "^7.2.1" + strip-ansi "^6.0.0" + strip-json-comments "^3.1.0" + table "^6.0.4" + text-table "^0.2.0" + v8-compile-cache "^2.0.3" + +espree@^7.3.0, espree@^7.3.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/espree/-/espree-7.3.1.tgz#f2df330b752c6f55019f8bd89b7660039c1bbbb6" + integrity sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g== + dependencies: + acorn "^7.4.0" + acorn-jsx "^5.3.1" + eslint-visitor-keys "^1.3.0" + esprima@^4.0.0, esprima@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== -estraverse@^4.2.0: +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.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/esrecurse/-/esrecurse-4.3.0.tgz#7ad7964d679abb28bee72cec63758b1c5d2c9921" + integrity sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag== + dependencies: + estraverse "^5.2.0" + +estraverse@^4.1.1, estraverse@^4.2.0: version "4.3.0" resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-4.3.0.tgz#398ad3f3c5a24948be7725e83d11a7de28cdbd1d" integrity sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw== +estraverse@^5.1.0, estraverse@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/estraverse/-/estraverse-5.2.0.tgz#307df42547e6cc7324d3cf03c155d5cdb8c53880" + integrity sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ== + esutils@^2.0.2: version "2.0.3" resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" @@ -1173,10 +1574,10 @@ execa@^1.0.0: signal-exit "^3.0.0" strip-eof "^1.0.0" -execa@^3.2.0: - version "3.4.0" - resolved "https://registry.yarnpkg.com/execa/-/execa-3.4.0.tgz#c08ed4550ef65d858fac269ffc8572446f37eb89" - integrity sha512-r9vdGQk4bmCuK1yKQu1KTwcT2zwfWdbdaXfCtAh+5nU/4fSX+JAb7vZGvI5naJrQlvONrEB20jeruESI69530g== +execa@^4.0.0, execa@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-4.1.0.tgz#4e5491ad1572f2f17a77d388c6c857135b22847a" + integrity sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA== dependencies: cross-spawn "^7.0.0" get-stream "^5.0.0" @@ -1185,7 +1586,6 @@ execa@^3.2.0: merge-stream "^2.0.0" npm-run-path "^4.0.0" onetime "^5.1.0" - p-finally "^2.0.0" signal-exit "^3.0.2" strip-final-newline "^2.0.0" @@ -1207,17 +1607,17 @@ expand-brackets@^2.1.4: snapdragon "^0.8.1" to-regex "^3.0.1" -expect@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/expect/-/expect-25.3.0.tgz#5fd36e51befd05afb7184bc954f8a4792d184c71" - integrity sha512-buboTXML2h/L0Kh44Ys2Cx49mX20ISc5KDirkxIs3Q9AJv0kazweUAbukegr+nHDOvFRKmxdojjIHCjqAceYfg== +expect@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/expect/-/expect-26.6.2.tgz#c6b996bf26bf3fe18b67b2d0f51fc981ba934417" + integrity sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA== dependencies: - "@jest/types" "^25.3.0" + "@jest/types" "^26.6.2" ansi-styles "^4.0.0" - jest-get-type "^25.2.6" - jest-matcher-utils "^25.3.0" - jest-message-util "^25.3.0" - jest-regex-util "^25.2.6" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-regex-util "^26.0.0" extend-shallow@^2.0.1: version "2.0.1" @@ -1264,16 +1664,21 @@ extsprintf@^1.2.0: integrity sha1-4mifjzVvrWLMplo6kcXfX5VRaS8= fast-deep-equal@^3.1.1: - version "3.1.1" - resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.1.tgz#545145077c501491e33b15ec408c294376e94ae4" - integrity sha512-8UEa58QDLauDNfpbrX55Q9jrGHThw2ZMdOky5Gl1CDtVeJDPVrG4Jxx1N8jw2gkWaff5UUuX1KJd+9zGe2B+ZA== + 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-diff@^1.1.2: + version "1.2.0" + resolved "https://registry.yarnpkg.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03" + integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w== fast-json-stable-stringify@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz#874bf69c6f404c2b5d99c481341399fd55892633" integrity sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw== -fast-levenshtein@~2.0.6: +fast-levenshtein@^2.0.6, fast-levenshtein@~2.0.6: version "2.0.6" resolved "https://registry.yarnpkg.com/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz#3d8a5c66883a16a30ca8643e851f19baa7797917" integrity sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc= @@ -1285,6 +1690,20 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +figures@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/figures/-/figures-3.2.0.tgz#625c18bd293c604dc4a8ddb2febf0c88341746af" + integrity sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg== + dependencies: + escape-string-regexp "^1.0.5" + +file-entry-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/file-entry-cache/-/file-entry-cache-6.0.0.tgz#7921a89c391c6d93efec2169ac6bf300c527ea0a" + integrity sha512-fqoO76jZ3ZnYrXLDRxBR1YvOvc0k844kcOg40bgsPrE25LAb/PDqTY+ho64Xh2c8ZXgIKldchCFHczG2UVRcWA== + dependencies: + flat-cache "^3.0.4" + fill-range@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7" @@ -1302,6 +1721,13 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" +find-up@^2.0.0, find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + find-up@^4.0.0, find-up@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/find-up/-/find-up-4.1.0.tgz#97afe7d6cdc0bc5928584b7c8d7b16e8a9aa5d19" @@ -1310,6 +1736,34 @@ find-up@^4.0.0, find-up@^4.1.0: locate-path "^5.0.0" path-exists "^4.0.0" +find-up@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-5.0.0.tgz#4c92819ecb7083561e4f4a240a86be5198f536fc" + integrity sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng== + dependencies: + locate-path "^6.0.0" + path-exists "^4.0.0" + +find-versions@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/find-versions/-/find-versions-4.0.0.tgz#3c57e573bf97769b8cb8df16934b627915da4965" + integrity sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ== + dependencies: + semver-regex "^3.1.2" + +flat-cache@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/flat-cache/-/flat-cache-3.0.4.tgz#61b0338302b2fe9f957dcc32fc2a87f1c3048b11" + integrity sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg== + dependencies: + flatted "^3.1.0" + rimraf "^3.0.2" + +flatted@^3.1.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/flatted/-/flatted-3.1.1.tgz#c4b489e80096d9df1dfc97c79871aea7c617c469" + integrity sha512-zAoAQiudy+r5SvnSw3KJy5os/oRJYHzrzja/tBDqrZtNhUw8bt6y8OBzMWcjWr+8liV8Eb6yOhw8WZ7VFZ5ZzA== + for-in@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80" @@ -1342,20 +1796,49 @@ fs.realpath@^1.0.0: integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= fsevents@^2.1.2: - version "2.1.2" - resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.1.2.tgz#4c0a1fb34bc68e543b4b82a9ec392bfbda840805" - integrity sha512-R4wDiBwZ0KzpgOWetKDug1FZcYhqYnUYKtfZYt4mD5SBz76q0KR4Q9o7GIPamsVPGmW3EYPPJ0dOOjvx32ldZA== + version "2.3.1" + resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.1.tgz#b209ab14c61012636c8863507edf7fb68cc54e9f" + integrity sha512-YR47Eg4hChJGAB1O3yEAOkGO+rlzutoICGqGo9EZ4lKWokzZRSyIW1QmTzqjtw8MJdj9srP869CuWw/hyzSiBw== + +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +functional-red-black-tree@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz#1b0ab3bd553b2a0d6399d29c0e3ea0b252078327" + integrity sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc= gensync@^1.0.0-beta.1: - version "1.0.0-beta.1" - resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" - integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== + version "1.0.0-beta.2" + resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.2.tgz#32a6ee76c3d7f52d46b2b1ae5d93fea8580a25e0" + integrity sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg== get-caller-file@^2.0.1: version "2.0.5" resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-2.0.5.tgz#4f94412a82db32f36e3b0b9741f8a97feb031f7e" integrity sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg== +get-intrinsic@^1.0.1, get-intrinsic@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.0.2.tgz#6820da226e50b24894e08859469dc68361545d49" + integrity sha512-aeX0vrFm21ILl3+JpFFRNe9aUvp6VFZb2/CTbgLb8j75kOhvoNYjt9d8KA/tJG4gSo8nzEDedRl0h7vDmBYRVg== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-symbols "^1.0.1" + +get-own-enumerable-property-symbols@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz#b5fde77f22cbe35f390b4e089922c50bce6ef664" + integrity sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g== + +get-package-type@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/get-package-type/-/get-package-type-0.1.0.tgz#8de2d803cff44df3bc6c456e6668b36c3926e11a" + integrity sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q== + get-stream@^4.0.0: version "4.1.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-4.1.0.tgz#c1b255575f3dc21d59bfc79cd3d2b46b1c3a54b5" @@ -1364,9 +1847,9 @@ get-stream@^4.0.0: pump "^3.0.0" get-stream@^5.0.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.1.0.tgz#01203cdc92597f9b909067c3e656cc1f4d3c4dc9" - integrity sha512-EXr1FOzrzTfGeL0gQdeFEvOMm2mzMOglyiOXSTpPC+iAjAKftbr3jpCMWynogwYnM+eSj9sHGc6wjIcDvYiygw== + version "5.2.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-5.2.0.tgz#4966a1795ee5ace65e706c4b7beb71257d6e22d3" + integrity sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA== dependencies: pump "^3.0.0" @@ -1382,6 +1865,13 @@ getpass@^0.1.1: dependencies: assert-plus "^1.0.0" +glob-parent@^5.0.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 "^4.0.1" + glob@^7.1.1, glob@^7.1.2, glob@^7.1.3, glob@^7.1.4: version "7.1.6" resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.6.tgz#141f33b81a7c2492e125594307480c46679278a6" @@ -1399,10 +1889,17 @@ globals@^11.1.0: resolved "https://registry.yarnpkg.com/globals/-/globals-11.12.0.tgz#ab8795338868a0babd8525758018c2a7eb95c42e" integrity sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA== -graceful-fs@^4.2.3: - version "4.2.3" - resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" - integrity sha512-a30VEBm4PEdx1dRB7MFK7BejejvCvBronbLjht+sHuGYj8PHs7M/5Z+rt5lw551vZ7yfTCj4Vuyy3mSJytDWRQ== +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" + +graceful-fs@^4.1.2, graceful-fs@^4.2.4: + version "4.2.4" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.4.tgz#2256bde14d3632958c465ebc96dc467ca07a29fb" + integrity sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw== growly@^1.3.0: version "1.3.0" @@ -1415,11 +1912,11 @@ har-schema@^2.0.0: integrity sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI= har-validator@~5.1.3: - version "5.1.3" - resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.3.tgz#1ef89ebd3e4996557675eed9893110dc350fa080" - integrity sha512-sNvOCzEQNr/qrvJgc3UG/kD4QtlHycrzwS+6mfTrrSq97BvaYcPZZI1ZSqGSPR73Cxn4LKTD4PttRwfU7jWq5g== + version "5.1.5" + resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-5.1.5.tgz#1f0803b9f8cb20c0fa13822df1ecddb36bde1efd" + integrity sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w== dependencies: - ajv "^6.5.5" + ajv "^6.12.3" har-schema "^2.0.0" has-flag@^3.0.0: @@ -1432,6 +1929,11 @@ has-flag@^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.1: + version "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" @@ -1463,12 +1965,24 @@ has-values@^1.0.0: is-number "^3.0.0" kind-of "^4.0.0" -html-encoding-sniffer@^1.0.2: - version "1.0.2" - resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-1.0.2.tgz#e70d84b94da53aa375e11fe3a351be6642ca46f8" - integrity sha512-71lZziiDnsuabfdYiUeWdCVyKuqwWi23L8YeIgV9jSSZHCtb6wB1BKWooH7L3tn4/FuZJMVWyNaIDr4RGmaSYw== +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== dependencies: - whatwg-encoding "^1.0.1" + function-bind "^1.1.1" + +hosted-git-info@^2.1.4: + version "2.8.8" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.8.8.tgz#7539bd4bc1e0e0a895815a2e0262420b12858488" + integrity sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg== + +html-encoding-sniffer@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz#42a6dc4fd33f00281176e8b23759ca4e4fa185f3" + integrity sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ== + dependencies: + whatwg-encoding "^1.0.5" html-escaper@^2.0.0: version "2.0.2" @@ -1489,6 +2003,22 @@ human-signals@^1.1.1: resolved "https://registry.yarnpkg.com/human-signals/-/human-signals-1.1.1.tgz#c5b1cd14f50aeae09ab6c59fe63ba3395fe4dfa3" integrity sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw== +husky@^4.3.8: + version "4.3.8" + resolved "https://registry.yarnpkg.com/husky/-/husky-4.3.8.tgz#31144060be963fd6850e5cc8f019a1dfe194296d" + integrity sha512-LCqqsB0PzJQ/AlCgfrfzRe3e3+NvmefAdKQhRYpxS4u6clblBoDdzzvHi8fmxKRzvMxPY/1WZWzomPZww0Anow== + dependencies: + chalk "^4.0.0" + ci-info "^2.0.0" + compare-versions "^3.6.0" + cosmiconfig "^7.0.0" + find-versions "^4.0.0" + opencollective-postinstall "^2.0.2" + pkg-dir "^5.0.0" + please-upgrade-node "^3.2.0" + slash "^3.0.0" + which-pm-runs "^1.0.0" + iconv-lite@0.4.24: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -1496,6 +2026,19 @@ iconv-lite@0.4.24: dependencies: safer-buffer ">= 2.1.2 < 3" +ignore@^4.0.6: + version "4.0.6" + resolved "https://registry.yarnpkg.com/ignore/-/ignore-4.0.6.tgz#750e3db5862087b4737ebac8207ffd1ef27b25fc" + integrity sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg== + +import-fresh@^3.0.0, import-fresh@^3.2.1: + version "3.3.0" + resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" + integrity sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw== + dependencies: + parent-module "^1.0.0" + resolve-from "^4.0.0" + import-local@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/import-local/-/import-local-3.0.2.tgz#a8cfd0431d1de4a2199703d003e3e62364fa6db6" @@ -1509,6 +2052,11 @@ imurmurhash@^0.1.4: resolved "https://registry.yarnpkg.com/imurmurhash/-/imurmurhash-0.1.4.tgz#9218b9b2b928a238b13dc4fb6b6d576f231453ea" integrity sha1-khi5srkoojixPcT7a21XbyMUU+o= +indent-string@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-4.0.0.tgz#624f8f4497d619b2d9768531d58f4122854d7251" + integrity sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg== + inflight@^1.0.4: version "1.0.6" resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" @@ -1541,11 +2089,21 @@ is-accessor-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + is-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.4, is-callable@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/is-callable/-/is-callable-1.2.2.tgz#c7c6715cd22d4ddb48d3e19970223aceabb080d9" + integrity sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA== + is-ci@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/is-ci/-/is-ci-2.0.0.tgz#6bc6334181810e04b5c22b3d589fdca55026404c" @@ -1553,6 +2111,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-core-module@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.2.0.tgz#97037ef3d52224d85163f5597b2b63d9afed981a" + integrity sha512-XRAfAdyyY5F5cOXn7hYQDqh2Xmii+DEfIcQGxK/uNwMHhIkPWO0g8msXcbzLe+MpGoR951MlqM/2iIlU4vKDdQ== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -1567,6 +2132,11 @@ is-data-descriptor@^1.0.0: dependencies: kind-of "^6.0.0" +is-date-object@^1.0.1: + version "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" @@ -1585,6 +2155,11 @@ is-descriptor@^1.0.0, is-descriptor@^1.0.2: is-data-descriptor "^1.0.0" kind-of "^6.0.2" +is-docker@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-docker/-/is-docker-2.1.1.tgz#4125a88e44e450d384e09047ede71adc2d144156" + integrity sha512-ZOoqiXfEwtGknTiuDEy8pN2CfE3TxMHprvNer1mXiqwkOT77Rw3YVrUQ52EqAOU3QAWDQ+bQdx7HJzrv7LS2Hw== + 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" @@ -1597,6 +2172,11 @@ is-extendable@^1.0.1: dependencies: is-plain-object "^2.0.4" +is-extglob@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" + integrity sha1-qIwCU1eR8C7TfHahueqXc8gz+MI= + is-fullwidth-code-point@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d" @@ -1607,6 +2187,18 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== +is-glob@^4.0.0, is-glob@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + +is-negative-zero@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/is-negative-zero/-/is-negative-zero-2.0.1.tgz#3de746c18dda2319241a53675908d8f766f11c24" + integrity sha512-2z6JzQvZRa9A2Y7xC6dQQm4FSTSTNWjKIYYTt4246eMTJmIo0Q+ZyOsU66X8lxK1AbB92dFeglPLrhwpeRKO6w== + is-number@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195" @@ -1619,6 +2211,11 @@ is-number@^7.0.0: resolved "https://registry.yarnpkg.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b" integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng== +is-obj@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/is-obj/-/is-obj-1.0.1.tgz#3e4729ac1f5fde025cd7d83a896dab9f4f67db0f" + integrity sha1-PkcprB9f3gJc19g6iW2rn09n2w8= + 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" @@ -1626,6 +2223,23 @@ is-plain-object@^2.0.3, is-plain-object@^2.0.4: dependencies: isobject "^3.0.1" +is-potential-custom-element-name@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.0.tgz#0c52e54bcca391bb2c494b21e8626d7336c6e397" + integrity sha1-DFLlS8yjkbssSUsh6GJtczbG45c= + +is-regex@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/is-regex/-/is-regex-1.1.1.tgz#c6f98aacc546f6cec5468a07b7b153ab564a57b9" + integrity sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg== + dependencies: + has-symbols "^1.0.1" + +is-regexp@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" + integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= + is-stream@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" @@ -1636,6 +2250,18 @@ is-stream@^2.0.0: resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-2.0.0.tgz#bde9c32680d6fae04129d6ac9d921ce7815f78e3" integrity sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw== +is-string@^1.0.5: + version "1.0.5" + resolved "https://registry.yarnpkg.com/is-string/-/is-string-1.0.5.tgz#40493ed198ef3ff477b8c7f92f644ec82a5cd3a6" + integrity sha512-buY6VNRjhQMiF1qWDouloZlQbRhDPCebwxSjxMjxgemYT46YMd2NR0/H+fBhEfWX4A/w9TBJ+ol+okqJKFE6vQ== + +is-symbol@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/is-symbol/-/is-symbol-1.0.3.tgz#38e1014b9e6329be0de9d24a414fd7441ec61937" + integrity sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ== + dependencies: + has-symbols "^1.0.1" + is-typedarray@^1.0.0, is-typedarray@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a" @@ -1646,12 +2272,14 @@ is-windows@^1.0.2: resolved "https://registry.yarnpkg.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA== -is-wsl@^2.1.1: - version "2.1.1" - resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.1.1.tgz#4a1c152d429df3d441669498e2486d3596ebaf1d" - integrity sha512-umZHcSrwlDHo2TGMXv0DZ8dIUGunZ2Iv68YZnrmCiBPkZ4aaOhtv7pXJKeki9k3qJ3RJr0cDyitcl5wEH3AYog== +is-wsl@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" + integrity sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww== + dependencies: + is-docker "^2.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= @@ -1683,15 +2311,12 @@ istanbul-lib-coverage@^3.0.0: resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz#f5944a37c70b550b02a78a5c3b2055b280cec8ec" integrity sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg== -istanbul-lib-instrument@^4.0.0: - version "4.0.1" - resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.1.tgz#61f13ac2c96cfefb076fe7131156cc05907874e6" - integrity sha512-imIchxnodll7pvQBYOqUu88EufLCU56LMeFPZZM/fJZ1irYcYdqroaV+ACK1Ila8ls09iEYArp+nqyC6lW1Vfg== +istanbul-lib-instrument@^4.0.0, istanbul-lib-instrument@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz#873c6fff897450118222774696a3f28902d77c1d" + integrity sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ== dependencies: "@babel/core" "^7.7.5" - "@babel/parser" "^7.7.5" - "@babel/template" "^7.7.4" - "@babel/traverse" "^7.7.4" "@istanbuljs/schema" "^0.1.2" istanbul-lib-coverage "^3.0.0" semver "^6.3.0" @@ -1722,362 +2347,383 @@ istanbul-reports@^3.0.2: html-escaper "^2.0.0" istanbul-lib-report "^3.0.0" -jest-changed-files@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-25.3.0.tgz#85d8de6f4bd13dafda9d7f1e3f2565fc0e183c78" - integrity sha512-eqd5hyLbUjIVvLlJ3vQ/MoPxsxfESVXG9gvU19XXjKzxr+dXmZIqCXiY0OiYaibwlHZBJl2Vebkc0ADEMzCXew== +jest-changed-files@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-changed-files/-/jest-changed-files-26.6.2.tgz#f6198479e1cc66f22f9ae1e22acaa0b429c042d0" + integrity sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ== dependencies: - "@jest/types" "^25.3.0" - execa "^3.2.0" + "@jest/types" "^26.6.2" + execa "^4.0.0" throat "^5.0.0" -jest-cli@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-25.3.0.tgz#d9e11f5700cc5946583cf0d01a9bdebceed448d2" - integrity sha512-XpNQPlW1tzpP7RGG8dxpkRegYDuLjzSiENu92+CYM87nEbmEPb3b4+yo8xcsHOnj0AG7DUt9b3uG8LuHI3MDzw== +jest-cli@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-cli/-/jest-cli-26.6.3.tgz#43117cfef24bc4cd691a174a8796a532e135e92a" + integrity sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg== dependencies: - "@jest/core" "^25.3.0" - "@jest/test-result" "^25.3.0" - "@jest/types" "^25.3.0" - chalk "^3.0.0" + "@jest/core" "^26.6.3" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + chalk "^4.0.0" exit "^0.1.2" + graceful-fs "^4.2.4" import-local "^3.0.2" is-ci "^2.0.0" - jest-config "^25.3.0" - jest-util "^25.3.0" - jest-validate "^25.3.0" + jest-config "^26.6.3" + jest-util "^26.6.2" + jest-validate "^26.6.2" prompts "^2.0.1" - realpath-native "^2.0.0" - yargs "^15.3.1" + yargs "^15.4.1" -jest-config@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-25.3.0.tgz#112b5e2f2e57dec4501dd2fe979044c06fb1317e" - integrity sha512-CmF1JnNWFmoCSPC4tnU52wnVBpuxHjilA40qH/03IHxIevkjUInSMwaDeE6ACfxMPTLidBGBCO3EbxvzPbo8wA== +jest-config@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-config/-/jest-config-26.6.3.tgz#64f41444eef9eb03dc51d5c53b75c8c71f645349" + integrity sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg== dependencies: "@babel/core" "^7.1.0" - "@jest/test-sequencer" "^25.3.0" - "@jest/types" "^25.3.0" - babel-jest "^25.3.0" - chalk "^3.0.0" + "@jest/test-sequencer" "^26.6.3" + "@jest/types" "^26.6.2" + babel-jest "^26.6.3" + chalk "^4.0.0" deepmerge "^4.2.2" glob "^7.1.1" - jest-environment-jsdom "^25.3.0" - jest-environment-node "^25.3.0" - jest-get-type "^25.2.6" - jest-jasmine2 "^25.3.0" - jest-regex-util "^25.2.6" - jest-resolve "^25.3.0" - jest-util "^25.3.0" - jest-validate "^25.3.0" + graceful-fs "^4.2.4" + jest-environment-jsdom "^26.6.2" + jest-environment-node "^26.6.2" + jest-get-type "^26.3.0" + jest-jasmine2 "^26.6.3" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" micromatch "^4.0.2" - pretty-format "^25.3.0" - realpath-native "^2.0.0" + pretty-format "^26.6.2" -jest-diff@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-25.3.0.tgz#0d7d6f5d6171e5dacde9e05be47b3615e147c26f" - integrity sha512-vyvs6RPoVdiwARwY4kqFWd4PirPLm2dmmkNzKqo38uZOzJvLee87yzDjIZLmY1SjM3XR5DwsUH+cdQ12vgqi1w== +jest-diff@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-diff/-/jest-diff-26.6.2.tgz#1aa7468b52c3a68d7d5c5fdcdfcd5e49bd164394" + integrity sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA== dependencies: - chalk "^3.0.0" - diff-sequences "^25.2.6" - jest-get-type "^25.2.6" - pretty-format "^25.3.0" + chalk "^4.0.0" + diff-sequences "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-docblock@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-25.3.0.tgz#8b777a27e3477cd77a168c05290c471a575623ef" - integrity sha512-aktF0kCar8+zxRHxQZwxMy70stc9R1mOmrLsT5VO3pIT0uzGRSDAXxSlz4NqQWpuLjPpuMhPRl7H+5FRsvIQAg== +jest-docblock@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-docblock/-/jest-docblock-26.0.0.tgz#3e2fa20899fc928cb13bd0ff68bd3711a36889b5" + integrity sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w== dependencies: detect-newline "^3.0.0" -jest-each@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-25.3.0.tgz#a319eecf1f6076164ab86f99ca166a55b96c0bd4" - integrity sha512-aBfS4VOf/Qs95yUlX6d6WBv0szvOcTkTTyCIaLuQGj4bSHsT+Wd9dDngVHrCe5uytxpN8VM+NAloI6nbPjXfXw== - dependencies: - "@jest/types" "^25.3.0" - chalk "^3.0.0" - jest-get-type "^25.2.6" - jest-util "^25.3.0" - pretty-format "^25.3.0" - -jest-environment-jsdom@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-25.3.0.tgz#c493ab8c41f28001520c70ef67dd88b88be6af05" - integrity sha512-jdE4bQN+k2QEZ9sWOxsqDJvMzbdFSCN/4tw8X0TQaCqyzKz58PyEf41oIr4WO7ERdp7WaJGBSUKF7imR3UW1lg== - dependencies: - "@jest/environment" "^25.3.0" - "@jest/fake-timers" "^25.3.0" - "@jest/types" "^25.3.0" - jest-mock "^25.3.0" - jest-util "^25.3.0" - jsdom "^15.2.1" - -jest-environment-node@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-25.3.0.tgz#9845f0e63991e8498448cb0ae804935689533db9" - integrity sha512-XO09S29Nx1NU7TiMPHMoDIkxoGBuKSTbE+sHp0gXbeLDXhIdhysUI25kOqFFSD9AuDgvPvxWCXrvNqiFsOH33g== - dependencies: - "@jest/environment" "^25.3.0" - "@jest/fake-timers" "^25.3.0" - "@jest/types" "^25.3.0" - jest-mock "^25.3.0" - jest-util "^25.3.0" - semver "^6.3.0" - -jest-get-type@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-25.2.6.tgz#0b0a32fab8908b44d508be81681487dbabb8d877" - integrity sha512-DxjtyzOHjObRM+sM1knti6or+eOgcGU4xVSb2HNP1TqO4ahsT+rqZg+nyqHWJSvWgKC5cG3QjGFBqxLghiF/Ig== - -jest-haste-map@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-25.3.0.tgz#b7683031c9c9ddc0521d311564108b244b11e4c6" - integrity sha512-LjXaRa+F8wwtSxo9G+hHD/Cp63PPQzvaBL9XCVoJD2rrcJO0Zr2+YYzAFWWYJ5GlPUkoaJFJtOuk0sL6MJY80A== - dependencies: - "@jest/types" "^25.3.0" +jest-each@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-each/-/jest-each-26.6.2.tgz#02526438a77a67401c8a6382dfe5999952c167cb" + integrity sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + jest-get-type "^26.3.0" + jest-util "^26.6.2" + pretty-format "^26.6.2" + +jest-environment-jsdom@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz#78d09fe9cf019a357009b9b7e1f101d23bd1da3e" + integrity sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + jsdom "^16.4.0" + +jest-environment-node@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-environment-node/-/jest-environment-node-26.6.2.tgz#824e4c7fb4944646356f11ac75b229b0035f2b0c" + integrity sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag== + dependencies: + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + jest-mock "^26.6.2" + jest-util "^26.6.2" + +jest-get-type@^26.3.0: + version "26.3.0" + resolved "https://registry.yarnpkg.com/jest-get-type/-/jest-get-type-26.3.0.tgz#e97dc3c3f53c2b406ca7afaed4493b1d099199e0" + integrity sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig== + +jest-haste-map@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-haste-map/-/jest-haste-map-26.6.2.tgz#dd7e60fe7dc0e9f911a23d79c5ff7fb5c2cafeaa" + integrity sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w== + dependencies: + "@jest/types" "^26.6.2" + "@types/graceful-fs" "^4.1.2" + "@types/node" "*" anymatch "^3.0.3" fb-watchman "^2.0.0" - graceful-fs "^4.2.3" - jest-serializer "^25.2.6" - jest-util "^25.3.0" - jest-worker "^25.2.6" + graceful-fs "^4.2.4" + jest-regex-util "^26.0.0" + jest-serializer "^26.6.2" + jest-util "^26.6.2" + jest-worker "^26.6.2" micromatch "^4.0.2" sane "^4.0.3" walker "^1.0.7" - which "^2.0.2" optionalDependencies: fsevents "^2.1.2" -jest-jasmine2@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-25.3.0.tgz#16ae4f68adef65fb45001b26c864bcbcbf972830" - integrity sha512-NCYOGE6+HNzYFSui52SefgpsnIzvxjn6KAgqw66BdRp37xpMD/4kujDHLNW5bS5i53os5TcMn6jYrzQRO8VPrQ== +jest-jasmine2@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz#adc3cf915deacb5212c93b9f3547cd12958f2edd" + integrity sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg== dependencies: "@babel/traverse" "^7.1.0" - "@jest/environment" "^25.3.0" - "@jest/source-map" "^25.2.6" - "@jest/test-result" "^25.3.0" - "@jest/types" "^25.3.0" - chalk "^3.0.0" + "@jest/environment" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" co "^4.6.0" - expect "^25.3.0" + expect "^26.6.2" is-generator-fn "^2.0.0" - jest-each "^25.3.0" - jest-matcher-utils "^25.3.0" - jest-message-util "^25.3.0" - jest-runtime "^25.3.0" - jest-snapshot "^25.3.0" - jest-util "^25.3.0" - pretty-format "^25.3.0" + jest-each "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-runtime "^26.6.3" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + pretty-format "^26.6.2" throat "^5.0.0" -jest-leak-detector@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-25.3.0.tgz#5b6bf04903b35be56038915a55f47291771f769f" - integrity sha512-jk7k24dMIfk8LUSQQGN8PyOy9+J0NAfHZWiDmUDYVMctY8FLJQ1eQ8+PjMoN8PgwhLIggUqgYJnyRFvUz3jLRw== +jest-leak-detector@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz#7717cf118b92238f2eba65054c8a0c9c653a91af" + integrity sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg== dependencies: - jest-get-type "^25.2.6" - pretty-format "^25.3.0" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-matcher-utils@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-25.3.0.tgz#76765788a26edaa8bc5f0100aea52ae383559648" - integrity sha512-ZBUJ2fchNIZt+fyzkuCFBb8SKaU//Rln45augfUtbHaGyVxCO++ANARdBK9oPGXU3hEDgyy7UHnOP/qNOJXFUg== +jest-matcher-utils@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz#8e6fd6e863c8b2d31ac6472eeb237bc595e53e7a" + integrity sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw== dependencies: - chalk "^3.0.0" - jest-diff "^25.3.0" - jest-get-type "^25.2.6" - pretty-format "^25.3.0" + chalk "^4.0.0" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + pretty-format "^26.6.2" -jest-message-util@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-25.3.0.tgz#e3836826fe5ca538a337b87d9bd2648190867f85" - integrity sha512-5QNy9Id4WxJbRITEbA1T1kem9bk7y2fD0updZMSTNHtbEDnYOGLDPAuFBhFgVmOZpv0n6OMdVkK+WhyXEPCcOw== +jest-message-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-message-util/-/jest-message-util-26.6.2.tgz#58173744ad6fc0506b5d21150b9be56ef001ca07" + integrity sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA== dependencies: "@babel/code-frame" "^7.0.0" - "@jest/types" "^25.3.0" - "@types/stack-utils" "^1.0.1" - chalk "^3.0.0" + "@jest/types" "^26.6.2" + "@types/stack-utils" "^2.0.0" + chalk "^4.0.0" + graceful-fs "^4.2.4" micromatch "^4.0.2" + pretty-format "^26.6.2" + slash "^3.0.0" + stack-utils "^2.0.2" + +jest-mock@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-26.6.2.tgz#d6cb712b041ed47fe0d9b6fc3474bc6543feb302" + integrity sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + +jest-pnp-resolver@^1.2.2: + version "1.2.2" + resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz#b704ac0ae028a89108a4d040b3f919dfddc8e33c" + integrity sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w== + +jest-regex-util@^26.0.0: + version "26.0.0" + resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-26.0.0.tgz#d25e7184b36e39fd466c3bc41be0971e821fee28" + integrity sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A== + +jest-resolve-dependencies@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz#6680859ee5d22ee5dcd961fe4871f59f4c784fb6" + integrity sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg== + dependencies: + "@jest/types" "^26.6.2" + jest-regex-util "^26.0.0" + jest-snapshot "^26.6.2" + +jest-resolve@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-26.6.2.tgz#a3ab1517217f469b504f1b56603c5bb541fbb507" + integrity sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ== + dependencies: + "@jest/types" "^26.6.2" + chalk "^4.0.0" + graceful-fs "^4.2.4" + jest-pnp-resolver "^1.2.2" + jest-util "^26.6.2" + read-pkg-up "^7.0.1" + resolve "^1.18.1" slash "^3.0.0" - stack-utils "^1.0.1" - -jest-mock@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-mock/-/jest-mock-25.3.0.tgz#d72644509e40987a732a9a2534a1054f4649402c" - integrity sha512-yRn6GbuqB4j3aYu+Z1ezwRiZfp0o9om5uOcBovVtkcRLeBCNP5mT0ysdenUsxAHnQUgGwPOE1wwhtQYe6NKirQ== - dependencies: - "@jest/types" "^25.3.0" -jest-pnp-resolver@^1.2.1: - version "1.2.1" - resolved "https://registry.yarnpkg.com/jest-pnp-resolver/-/jest-pnp-resolver-1.2.1.tgz#ecdae604c077a7fbc70defb6d517c3c1c898923a" - integrity sha512-pgFw2tm54fzgYvc/OHrnysABEObZCUNFnhjoRjaVOCN8NYc032/gVjPaHD4Aq6ApkSieWtfKAFQtmDKAmhupnQ== - -jest-regex-util@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-regex-util/-/jest-regex-util-25.2.6.tgz#d847d38ba15d2118d3b06390056028d0f2fd3964" - integrity sha512-KQqf7a0NrtCkYmZZzodPftn7fL1cq3GQAFVMn5Hg8uKx/fIenLEobNanUxb7abQ1sjADHBseG/2FGpsv/wr+Qw== - -jest-resolve-dependencies@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-resolve-dependencies/-/jest-resolve-dependencies-25.3.0.tgz#b0e4ae053dd44ddacc18c6ee12b5b7c28e445a90" - integrity sha512-bDUlLYmHW+f7J7KgcY2lkq8EMRqKonRl0XoD4Wp5SJkgAxKJnsaIOlrrVNTfXYf+YOu3VCjm/Ac2hPF2nfsCIA== - dependencies: - "@jest/types" "^25.3.0" - jest-regex-util "^25.2.6" - jest-snapshot "^25.3.0" - -jest-resolve@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-resolve/-/jest-resolve-25.3.0.tgz#cb90a5bbea54a02eccdbbf4126a819595dcf91d6" - integrity sha512-IHoQAAybulsJ+ZgWis+ekYKDAoFkVH5Nx/znpb41zRtpxj4fr2WNV9iDqavdSm8GIpMlsfZxbC/fV9DhW0q9VQ== - dependencies: - "@jest/types" "^25.3.0" - browser-resolve "^1.11.3" - chalk "^3.0.0" - jest-pnp-resolver "^1.2.1" - realpath-native "^2.0.0" - resolve "^1.15.1" - -jest-runner@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-25.3.0.tgz#673ef2ac79d2810eb6b2c1a3f82398375a3d1174" - integrity sha512-csDqSC9qGHYWDrzrElzEgFbteztFeZJmKhSgY5jlCIcN0+PhActzRNku0DA1Xa1HxGOb0/AfbP1EGJlP4fGPtA== - dependencies: - "@jest/console" "^25.3.0" - "@jest/environment" "^25.3.0" - "@jest/test-result" "^25.3.0" - "@jest/types" "^25.3.0" - chalk "^3.0.0" +jest-runner@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runner/-/jest-runner-26.6.3.tgz#2d1fed3d46e10f233fd1dbd3bfaa3fe8924be159" + integrity sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + emittery "^0.7.1" exit "^0.1.2" - graceful-fs "^4.2.3" - jest-config "^25.3.0" - jest-docblock "^25.3.0" - jest-haste-map "^25.3.0" - jest-jasmine2 "^25.3.0" - jest-leak-detector "^25.3.0" - jest-message-util "^25.3.0" - jest-resolve "^25.3.0" - jest-runtime "^25.3.0" - jest-util "^25.3.0" - jest-worker "^25.2.6" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-docblock "^26.0.0" + jest-haste-map "^26.6.2" + jest-leak-detector "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" + jest-runtime "^26.6.3" + jest-util "^26.6.2" + jest-worker "^26.6.2" source-map-support "^0.5.6" throat "^5.0.0" -jest-runtime@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-25.3.0.tgz#af4d40dbcc590fa5de9910cb6a120a13d131050b" - integrity sha512-gn5KYB1wxXRM3nfw8fVpthFu60vxQUCr+ShGq41+ZBFF3DRHZRKj3HDWVAVB4iTNBj2y04QeAo5cZ/boYaPg0w== - dependencies: - "@jest/console" "^25.3.0" - "@jest/environment" "^25.3.0" - "@jest/source-map" "^25.2.6" - "@jest/test-result" "^25.3.0" - "@jest/transform" "^25.3.0" - "@jest/types" "^25.3.0" +jest-runtime@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest-runtime/-/jest-runtime-26.6.3.tgz#4f64efbcfac398331b74b4b3c82d27d401b8fa2b" + integrity sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw== + dependencies: + "@jest/console" "^26.6.2" + "@jest/environment" "^26.6.2" + "@jest/fake-timers" "^26.6.2" + "@jest/globals" "^26.6.2" + "@jest/source-map" "^26.6.2" + "@jest/test-result" "^26.6.2" + "@jest/transform" "^26.6.2" + "@jest/types" "^26.6.2" "@types/yargs" "^15.0.0" - chalk "^3.0.0" + chalk "^4.0.0" + cjs-module-lexer "^0.6.0" collect-v8-coverage "^1.0.0" exit "^0.1.2" glob "^7.1.3" - graceful-fs "^4.2.3" - jest-config "^25.3.0" - jest-haste-map "^25.3.0" - jest-message-util "^25.3.0" - jest-mock "^25.3.0" - jest-regex-util "^25.2.6" - jest-resolve "^25.3.0" - jest-snapshot "^25.3.0" - jest-util "^25.3.0" - jest-validate "^25.3.0" - realpath-native "^2.0.0" + graceful-fs "^4.2.4" + jest-config "^26.6.3" + jest-haste-map "^26.6.2" + jest-message-util "^26.6.2" + jest-mock "^26.6.2" + jest-regex-util "^26.0.0" + jest-resolve "^26.6.2" + jest-snapshot "^26.6.2" + jest-util "^26.6.2" + jest-validate "^26.6.2" slash "^3.0.0" strip-bom "^4.0.0" - yargs "^15.3.1" + yargs "^15.4.1" -jest-serializer@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-25.2.6.tgz#3bb4cc14fe0d8358489dbbefbb8a4e708ce039b7" - integrity sha512-RMVCfZsezQS2Ww4kB5HJTMaMJ0asmC0BHlnobQC6yEtxiFKIxohFA4QSXSabKwSggaNkqxn6Z2VwdFCjhUWuiQ== +jest-serializer@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-serializer/-/jest-serializer-26.6.2.tgz#d139aafd46957d3a448f3a6cdabe2919ba0742d1" + integrity sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g== + dependencies: + "@types/node" "*" + graceful-fs "^4.2.4" jest-snapshot-serializer-raw@^1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/jest-snapshot-serializer-raw/-/jest-snapshot-serializer-raw-1.1.0.tgz#1d7f09c02f3dbbc3ae70b5b7598fb2f45e37d6c8" integrity sha512-OL3bXRCnSn7Kur3YTGYj+A3Hwh2eyb5QL5VLQ9OSsPBOva7r3sCB0Jf1rOT/KN3ypzH42hrkDz96lpbiMo+AlQ== -jest-snapshot@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-25.3.0.tgz#d4feb457494f4aaedcc83fbbf1ca21808fc3df71" - integrity sha512-GGpR6Oro2htJPKh5RX4PR1xwo5jCEjtvSPLW1IS7N85y+2bWKbiknHpJJRKSdGXghElb5hWaeQASJI4IiRayGg== +jest-snapshot@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-snapshot/-/jest-snapshot-26.6.2.tgz#f3b0af1acb223316850bd14e1beea9837fb39c84" + integrity sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og== dependencies: "@babel/types" "^7.0.0" - "@jest/types" "^25.3.0" - "@types/prettier" "^1.19.0" - chalk "^3.0.0" - expect "^25.3.0" - jest-diff "^25.3.0" - jest-get-type "^25.2.6" - jest-matcher-utils "^25.3.0" - jest-message-util "^25.3.0" - jest-resolve "^25.3.0" - make-dir "^3.0.0" + "@jest/types" "^26.6.2" + "@types/babel__traverse" "^7.0.4" + "@types/prettier" "^2.0.0" + chalk "^4.0.0" + expect "^26.6.2" + graceful-fs "^4.2.4" + jest-diff "^26.6.2" + jest-get-type "^26.3.0" + jest-haste-map "^26.6.2" + jest-matcher-utils "^26.6.2" + jest-message-util "^26.6.2" + jest-resolve "^26.6.2" natural-compare "^1.4.0" - pretty-format "^25.3.0" - semver "^6.3.0" - -jest-util@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-25.3.0.tgz#e3b0064165818f10d78514696fd25efba82cf049" - integrity sha512-dc625P/KS/CpWTJJJxKc4bA3A6c+PJGBAqS8JTJqx4HqPoKNqXg/Ec8biL2Z1TabwK7E7Ilf0/ukSEXM1VwzNA== - dependencies: - "@jest/types" "^25.3.0" - chalk "^3.0.0" + pretty-format "^26.6.2" + semver "^7.3.2" + +jest-util@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-util/-/jest-util-26.6.2.tgz#907535dbe4d5a6cb4c47ac9b926f6af29576cbc1" + integrity sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q== + dependencies: + "@jest/types" "^26.6.2" + "@types/node" "*" + chalk "^4.0.0" + graceful-fs "^4.2.4" is-ci "^2.0.0" - make-dir "^3.0.0" + micromatch "^4.0.2" -jest-validate@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-25.3.0.tgz#eb95fdee0039647bcd5d4be641b21e4a142a880c" - integrity sha512-3WuXgIZ4HXUvW6gk9twFFkT9j6zUorKnF2oEY8VEsHb7x5LGvVlN3WUsbqazVKuyXwvikO2zFJ/YTySMsMje2w== +jest-validate@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-validate/-/jest-validate-26.6.2.tgz#23d380971587150467342911c3d7b4ac57ab20ec" + integrity sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ== dependencies: - "@jest/types" "^25.3.0" - camelcase "^5.3.1" - chalk "^3.0.0" - jest-get-type "^25.2.6" + "@jest/types" "^26.6.2" + camelcase "^6.0.0" + chalk "^4.0.0" + jest-get-type "^26.3.0" leven "^3.1.0" - pretty-format "^25.3.0" + pretty-format "^26.6.2" -jest-watcher@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-25.3.0.tgz#fd03fd5ca52f02bd3161ab177466bf1bfdd34e5c" - integrity sha512-dtFkfidFCS9Ucv8azOg2hkiY3sgJEHeTLtGFHS+jfBEE7eRtrO6+2r1BokyDkaG2FOD7485r/SgpC1MFAENfeA== +jest-watcher@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-watcher/-/jest-watcher-26.6.2.tgz#a5b683b8f9d68dbcb1d7dae32172d2cca0592975" + integrity sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ== dependencies: - "@jest/test-result" "^25.3.0" - "@jest/types" "^25.3.0" + "@jest/test-result" "^26.6.2" + "@jest/types" "^26.6.2" + "@types/node" "*" ansi-escapes "^4.2.1" - chalk "^3.0.0" - jest-util "^25.3.0" - string-length "^3.1.0" + chalk "^4.0.0" + jest-util "^26.6.2" + string-length "^4.0.1" -jest-worker@^25.2.6: - version "25.2.6" - resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-25.2.6.tgz#d1292625326794ce187c38f51109faced3846c58" - integrity sha512-FJn9XDUSxcOR4cwDzRfL1z56rUofNTFs539FGASpd50RHdb6EVkhxQqktodW2mI49l+W3H+tFJDotCHUQF6dmA== +jest-worker@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.2.tgz#7f72cbc4d643c365e27b9fd775f9d0eaa9c7a8ed" + integrity sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ== dependencies: + "@types/node" "*" merge-stream "^2.0.0" supports-color "^7.0.0" -jest@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/jest/-/jest-25.3.0.tgz#7a5e59741d94b8662664c77a9f346246d6bf228b" - integrity sha512-iKd5ShQSHzFT5IL/6h5RZJhApgqXSoPxhp5HEi94v6OAw9QkF8T7X+liEU2eEHJ1eMFYTHmeWLrpBWulsDpaUg== +jest@^26.6.3: + version "26.6.3" + resolved "https://registry.yarnpkg.com/jest/-/jest-26.6.3.tgz#40e8fdbe48f00dfa1f0ce8121ca74b88ac9148ef" + integrity sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q== dependencies: - "@jest/core" "^25.3.0" + "@jest/core" "^26.6.3" import-local "^3.0.2" - jest-cli "^25.3.0" + jest-cli "^26.6.3" js-tokens@^4.0.0: version "4.0.0" @@ -2085,9 +2731,9 @@ js-tokens@^4.0.0: integrity sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ== js-yaml@^3.13.1: - version "3.13.1" - resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.13.1.tgz#aff151b30bfdfa8e49e05da22e7415e9dfa37847" - integrity sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw== + version "3.14.1" + resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537" + integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g== dependencies: argparse "^1.0.7" esprima "^4.0.0" @@ -2097,36 +2743,36 @@ jsbn@~0.1.0: resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513" integrity sha1-peZUwuWi3rXyAdls77yoDA7y9RM= -jsdom@^15.2.1: - version "15.2.1" - resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-15.2.1.tgz#d2feb1aef7183f86be521b8c6833ff5296d07ec5" - integrity sha512-fAl1W0/7T2G5vURSyxBzrJ1LSdQn6Tr5UX/xD4PXDx/PDgwygedfW6El/KIj3xJ7FU61TTYnc/l/B7P49Eqt6g== - dependencies: - abab "^2.0.0" - acorn "^7.1.0" - acorn-globals "^4.3.2" - array-equal "^1.0.0" - cssom "^0.4.1" - cssstyle "^2.0.0" - data-urls "^1.1.0" - domexception "^1.0.1" - escodegen "^1.11.1" - html-encoding-sniffer "^1.0.2" +jsdom@^16.4.0: + version "16.4.0" + resolved "https://registry.yarnpkg.com/jsdom/-/jsdom-16.4.0.tgz#36005bde2d136f73eee1a830c6d45e55408edddb" + integrity sha512-lYMm3wYdgPhrl7pDcRmvzPhhrGVBeVhPIqeHjzeiHN3DFmD1RBpbExbi8vU7BJdH8VAZYovR8DMt0PNNDM7k8w== + dependencies: + abab "^2.0.3" + acorn "^7.1.1" + acorn-globals "^6.0.0" + cssom "^0.4.4" + cssstyle "^2.2.0" + data-urls "^2.0.0" + decimal.js "^10.2.0" + domexception "^2.0.1" + escodegen "^1.14.1" + html-encoding-sniffer "^2.0.1" + is-potential-custom-element-name "^1.0.0" nwsapi "^2.2.0" - parse5 "5.1.0" - pn "^1.1.0" - request "^2.88.0" - request-promise-native "^1.0.7" - saxes "^3.1.9" - symbol-tree "^3.2.2" + parse5 "5.1.1" + request "^2.88.2" + request-promise-native "^1.0.8" + saxes "^5.0.0" + symbol-tree "^3.2.4" tough-cookie "^3.0.1" - w3c-hr-time "^1.0.1" - w3c-xmlserializer "^1.1.2" - webidl-conversions "^4.0.2" + w3c-hr-time "^1.0.2" + w3c-xmlserializer "^2.0.0" + webidl-conversions "^6.1.0" whatwg-encoding "^1.0.5" whatwg-mimetype "^2.3.0" - whatwg-url "^7.0.0" - ws "^7.0.0" + whatwg-url "^8.0.0" + ws "^7.2.3" xml-name-validator "^3.0.0" jsesc@^2.5.1: @@ -2134,21 +2780,43 @@ jsesc@^2.5.1: resolved "https://registry.yarnpkg.com/jsesc/-/jsesc-2.5.2.tgz#80564d2e483dacf6e8ef209650a67df3f0c283a4" integrity sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA== +json-parse-even-better-errors@^2.3.0: + version "2.3.1" + resolved "https://registry.yarnpkg.com/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz#7c47805a94319928e05777405dc12e1f7a4ee02d" + integrity sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w== + json-schema-traverse@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz#69f6a87d9513ab8bb8fe63bdb0979c448e684660" integrity sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg== +json-schema-traverse@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz#ae7bcb3656ab77a73ba5c49bf654f38e6b6860e2" + integrity sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug== + json-schema@0.2.3: version "0.2.3" resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13" integrity sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM= +json-stable-stringify-without-jsonify@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz#9db7b59496ad3f3cfef30a75142d2d930ad72651" + integrity sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE= + json-stringify-safe@~5.0.1: version "5.0.1" resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb" integrity sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus= +json5@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/json5/-/json5-1.0.1.tgz#779fb0018604fa854eacbf6252180d83543e3dbe" + integrity sha512-aKS4WQjPenRxiQsC93MNfjx+nbF4PAdYzmd/1JIj8HYzqfbu86beTuNgXDzPknWk0n0uARlyewZo4s++ES36Ow== + dependencies: + minimist "^1.2.0" + json5@^2.1.2: version "2.1.3" resolved "https://registry.yarnpkg.com/json5/-/json5-2.1.3.tgz#c9b0f7fa9233bfe5807fe66fcf3a5617ed597d43" @@ -2200,6 +2868,14 @@ leven@^3.1.0: resolved "https://registry.yarnpkg.com/leven/-/leven-3.1.0.tgz#77891de834064cccba82ae7842bb6b14a13ed7f2" integrity sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A== +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" @@ -2208,6 +2884,65 @@ levn@~0.3.0: prelude-ls "~1.1.2" type-check "~0.3.2" +lines-and-columns@^1.1.6: + version "1.1.6" + resolved "https://registry.yarnpkg.com/lines-and-columns/-/lines-and-columns-1.1.6.tgz#1c00c743b433cd0a4e80758f7b64a57440d9ff00" + integrity sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA= + +lint-staged@^10.5.3: + version "10.5.3" + resolved "https://registry.yarnpkg.com/lint-staged/-/lint-staged-10.5.3.tgz#c682838b3eadd4c864d1022da05daa0912fb1da5" + integrity sha512-TanwFfuqUBLufxCc3RUtFEkFraSPNR3WzWcGF39R3f2J7S9+iF9W0KTVLfSy09lYGmZS5NDCxjNvhGMSJyFCWg== + dependencies: + chalk "^4.1.0" + cli-truncate "^2.1.0" + commander "^6.2.0" + cosmiconfig "^7.0.0" + debug "^4.2.0" + dedent "^0.7.0" + enquirer "^2.3.6" + execa "^4.1.0" + listr2 "^3.2.2" + log-symbols "^4.0.0" + micromatch "^4.0.2" + normalize-path "^3.0.0" + please-upgrade-node "^3.2.0" + string-argv "0.3.1" + stringify-object "^3.3.0" + +listr2@^3.2.2: + version "3.3.0" + resolved "https://registry.yarnpkg.com/listr2/-/listr2-3.3.0.tgz#fab51211e4152d88bab7d91e4f7f896b0d9e5ba1" + integrity sha512-G9IFI/m65icgVlifS0wMQnvn35/8VJGzEb3crpE4NnaegQYQOn/wP7yqi9TTJQ/eoxme4UaPbffBK1XqKP/DOg== + dependencies: + chalk "^4.1.0" + cli-truncate "^2.1.0" + figures "^3.2.0" + indent-string "^4.0.0" + log-update "^4.0.0" + p-map "^4.0.0" + rxjs "^6.6.3" + through "^2.3.8" + wrap-ansi "^7.0.0" + +load-json-file@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-2.0.0.tgz#7947e42149af80d696cbf797bcaabcfe1fe29ca8" + integrity sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg= + dependencies: + graceful-fs "^4.1.2" + parse-json "^2.2.0" + pify "^2.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + locate-path@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-5.0.0.tgz#1afba396afd676a6d42504d0a67a3a7eb9f62aa0" @@ -2215,27 +2950,51 @@ locate-path@^5.0.0: dependencies: p-locate "^4.1.0" +locate-path@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" + integrity sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw== + dependencies: + p-locate "^5.0.0" + lodash.sortby@^4.7.0: version "4.7.0" resolved "https://registry.yarnpkg.com/lodash.sortby/-/lodash.sortby-4.7.0.tgz#edd14c824e2cc9c1e0b0a1b42bb5210516a42438" integrity sha1-7dFMgk4sycHgsKG0K7UhBRakJDg= -lodash@^4.17.13, 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@^4.17.19, lodash@^4.17.20: + version "4.17.20" + resolved "https://registry.yarnpkg.com/lodash/-/lodash-4.17.20.tgz#b44a9b6297bcb698f1c51a3545a2b3b368d59c52" + integrity sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA== -lolex@^5.0.0: - version "5.1.2" - resolved "https://registry.yarnpkg.com/lolex/-/lolex-5.1.2.tgz#953694d098ce7c07bc5ed6d0e42bc6c0c6d5a367" - integrity sha512-h4hmjAvHTmd+25JSwrtTIuwbKdwg5NzZVRMLn9saij4SZaepCrTCxPr35H/3bjwfMJtN+t3CX8672UIkglz28A== +log-symbols@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-4.0.0.tgz#69b3cc46d20f448eccdb75ea1fa733d9e821c920" + integrity sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA== dependencies: - "@sinonjs/commons" "^1.7.0" + chalk "^4.0.0" + +log-update@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/log-update/-/log-update-4.0.0.tgz#589ecd352471f2a1c0c570287543a64dfd20e0a1" + integrity sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg== + dependencies: + ansi-escapes "^4.3.0" + cli-cursor "^3.1.0" + slice-ansi "^4.0.0" + wrap-ansi "^6.2.0" + +lru-cache@^6.0.0: + version "6.0.0" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-6.0.0.tgz#6d6fe6570ebd96aaf90fcad1dafa3b2566db3a94" + integrity sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA== + dependencies: + yallist "^4.0.0" make-dir@^3.0.0: - version "3.0.2" - resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.0.2.tgz#04a1acbf22221e1d6ef43559f43e05a90dbb4392" - integrity sha512-rYKABKutXa6vXTXhoV18cBE7PaewPXHe/Bdq4v+ZLMhxbWApkFFplT0LcbMW+6BbjnQXzZ/sAvSE/JdguApG5w== + version "3.1.0" + resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-3.1.0.tgz#415e967046b3a7f1d185277d84aa58203726a13f" + integrity sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw== dependencies: semver "^6.0.0" @@ -2290,17 +3049,17 @@ micromatch@^4.0.2: braces "^3.0.1" picomatch "^2.0.5" -mime-db@1.43.0: - version "1.43.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.43.0.tgz#0a12e0502650e473d735535050e7c8f4eb4fae58" - integrity sha512-+5dsGEEovYbT8UY9yD7eE4XTc4UwJ1jBYlgaQQF38ENsKR3wj/8q8RFZrF9WIZpB2V1ArTVFUva8sAul1NzRzQ== +mime-db@1.45.0: + version "1.45.0" + resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.45.0.tgz#cceeda21ccd7c3a745eba2decd55d4b73e7879ea" + integrity sha512-CkqLUxUk15hofLoLyljJSrukZi8mAtgd+yE5uO4tqRZsdsAJKv0O+rFMhVDRJgozy+yG6md5KwuXhD4ocIoP+w== mime-types@^2.1.12, mime-types@~2.1.19: - version "2.1.26" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.26.tgz#9c921fc09b7e149a65dfdc0da4d20997200b0a06" - integrity sha512-01paPWYgLrkqAyrlDorC1uDwl2p3qZT7yl806vW7DvDoxwXi46jsjFbg+WdwotBIk6/MbEhO/dh5aZ5sNj/dWQ== + version "2.1.28" + resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.28.tgz#1160c4757eab2c5363888e005273ecf79d2a0ecd" + integrity sha512-0TO2yJ5YHYr7M2zzT7gDU1tbwHxEUWBCLt0lscSNpcdAfFyJOVEpRYNS7EXVcTLNj/25QO8gulHC5JtTzSE2UQ== dependencies: - mime-db "1.43.0" + mime-db "1.45.0" mimic-fn@^2.1.0: version "2.1.0" @@ -2332,7 +3091,7 @@ ms@2.0.0: resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8" integrity sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g= -ms@^2.1.1: +ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== @@ -2374,16 +3133,27 @@ node-modules-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz#8d9dbe28964a4ac5712e9131642107c71e90ec40" integrity sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA= -node-notifier@^6.0.0: - version "6.0.0" - resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-6.0.0.tgz#cea319e06baa16deec8ce5cd7f133c4a46b68e12" - integrity sha512-SVfQ/wMw+DesunOm5cKqr6yDcvUTDl/yc97ybGHMrteNEY6oekXpNpS3lZwgLlwz0FLgHoiW28ZpmBHUDg37cw== +node-notifier@^8.0.0: + version "8.0.1" + resolved "https://registry.yarnpkg.com/node-notifier/-/node-notifier-8.0.1.tgz#f86e89bbc925f2b068784b31f382afdc6ca56be1" + integrity sha512-BvEXF+UmsnAfYfoapKM9nGxnP+Wn7P91YfXmrKnfcYCx6VBeoN5Ez5Ogck6I8Bi5k4RlpqRYaw75pAwzX9OphA== dependencies: growly "^1.3.0" - is-wsl "^2.1.1" - semver "^6.3.0" + is-wsl "^2.2.0" + semver "^7.3.2" shellwords "^0.1.1" - which "^1.3.1" + uuid "^8.3.0" + which "^2.0.2" + +normalize-package-data@^2.3.2, normalize-package-data@^2.5.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" normalize-path@^2.1.1: version "2.1.1" @@ -2430,6 +3200,16 @@ object-copy@^0.1.0: define-property "^0.2.5" kind-of "^3.0.3" +object-inspect@^1.9.0: + version "1.9.0" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.9.0.tgz#c90521d74e1127b67266ded3394ad6116986533a" + integrity sha512-i3Bp9iTqwhaLZBxGkRfo5ZbE07BQRT7MGu8+nNgwW9ItGp1TzCTw2DLEoWwjClxBjOFI/hWljTAmYGCEwmtnOw== + +object-keys@^1.0.12, object-keys@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e" + integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA== + object-visit@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb" @@ -2437,6 +3217,16 @@ object-visit@^1.0.0: dependencies: isobject "^3.0.0" +object.assign@^4.1.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/object.assign/-/object.assign-4.1.2.tgz#0ed54a342eceb37b38ff76eb831a0e788cb63940" + integrity sha512-ixT2L5THXsApyiUPYKmW+2EHpXXe5Ii3M+f4e+aJFAHao5amFRW6J0OO6c/LU8Be47utCx2GL89hxGB6XSmKuQ== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + has-symbols "^1.0.1" + object-keys "^1.1.1" + object.pick@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747" @@ -2444,6 +3234,16 @@ object.pick@^1.3.0: dependencies: isobject "^3.0.1" +object.values@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/object.values/-/object.values-1.1.2.tgz#7a2015e06fcb0f546bd652486ce8583a4731c731" + integrity sha512-MYC0jvJopr8EK6dPBiO8Nb9mvjdypOachO5REGk6MXzujbBrAisKo3HmdEI6kZDL6fC31Mwee/5YbtMebixeag== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + es-abstract "^1.18.0-next.1" + has "^1.0.3" + once@^1.3.0, once@^1.3.1, once@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -2452,12 +3252,17 @@ once@^1.3.0, once@^1.3.1, once@^1.4.0: wrappy "1" onetime@^5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.0.tgz#fff0f3c91617fe62bb50189636e99ac8a6df7be5" - integrity sha512-5NcSkPHhwTVFIQN+TUqXoS5+dlElHXdpAWu9I0HP20YOtIi+aZ0Ct82jdlILDxjLEAWwvm+qj1m6aEtsDVmm6Q== + version "5.1.2" + resolved "https://registry.yarnpkg.com/onetime/-/onetime-5.1.2.tgz#d0e96ebb56b07476df1dd9c4806e5237985ca45e" + integrity sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg== dependencies: mimic-fn "^2.1.0" +opencollective-postinstall@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz#7a0fff978f6dbfa4d006238fbac98ed4198c3259" + integrity sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q== + optionator@^0.8.1: version "0.8.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.8.3.tgz#84fa1d036fe9d3c7e21d99884b601167ec8fb495" @@ -2470,20 +3275,34 @@ optionator@^0.8.1: type-check "~0.3.2" word-wrap "~1.2.3" +optionator@^0.9.1: + version "0.9.1" + resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.1.tgz#4f236a6373dae0566a6d43e1326674f50c291499" + integrity sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw== + dependencies: + deep-is "^0.1.3" + fast-levenshtein "^2.0.6" + levn "^0.4.1" + prelude-ls "^1.2.1" + type-check "^0.4.0" + word-wrap "^1.2.3" + p-each-series@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.1.0.tgz#961c8dd3f195ea96c747e636b262b800a6b1af48" - integrity sha512-ZuRs1miPT4HrjFa+9fRfOFXxGJfORgelKV9f9nNOWw2gl6gVsRaVDOQP0+MI0G0wGKns1Yacsu0GjOFbTK0JFQ== + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-each-series/-/p-each-series-2.2.0.tgz#105ab0357ce72b202a8a8b94933672657b5e2a9a" + integrity sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA== p-finally@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= -p-finally@^2.0.0: - version "2.0.1" - resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-2.0.1.tgz#bd6fcaa9c559a096b680806f4d657b3f0f240561" - integrity sha512-vpm09aKwq6H9phqRQzecoDpD8TmVyGw70qmWlyq5onxY7tqyTTFVvxMykxQSQKILBSFlbXpypIw2T1Ml7+DDtw== +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" p-limit@^2.2.0: version "2.3.0" @@ -2492,6 +3311,20 @@ p-limit@^2.2.0: dependencies: p-try "^2.0.0" +p-limit@^3.0.2: + version "3.1.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.1.0.tgz#e1daccbe78d0d1388ca18c64fea38e3e57e3706b" + integrity sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ== + dependencies: + yocto-queue "^0.1.0" + +p-locate@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + p-locate@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-4.1.0.tgz#a3428bb7088b3a60292f66919278b7c297ad4f07" @@ -2499,21 +3332,69 @@ p-locate@^4.1.0: dependencies: p-limit "^2.2.0" +p-locate@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-5.0.0.tgz#83c8315c6785005e3bd021839411c9e110e6d834" + integrity sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw== + dependencies: + p-limit "^3.0.2" + +p-map@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/p-map/-/p-map-4.0.0.tgz#bb2f95a5eda2ec168ec9274e06a747c3e2904d2b" + integrity sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ== + dependencies: + aggregate-error "^3.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + p-try@^2.0.0: version "2.2.0" resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== -parse5@5.1.0: - version "5.1.0" - resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.0.tgz#c59341c9723f414c452975564c7c00a68d58acd2" - integrity sha512-fxNG2sQjHvlVAYmzBZS9YlDp6PTSSDwa98vkD4QgVDDCAo84z5X1t5XyJQ62ImdLXx5NdIIfihey6xpum9/gRQ== +parent-module@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" + integrity sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g== + dependencies: + callsites "^3.0.0" + +parse-json@^2.2.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-2.2.0.tgz#f480f40434ef80741f8469099f8dea18f55a4dc9" + integrity sha1-9ID0BDTvgHQfhGkJn43qGPVaTck= + dependencies: + error-ex "^1.2.0" + +parse-json@^5.0.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-5.2.0.tgz#c76fc66dee54231c962b22bcc8a72cf2f99753cd" + integrity sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg== + dependencies: + "@babel/code-frame" "^7.0.0" + error-ex "^1.3.1" + json-parse-even-better-errors "^2.3.0" + lines-and-columns "^1.1.6" + +parse5@5.1.1: + version "5.1.1" + resolved "https://registry.yarnpkg.com/parse5/-/parse5-5.1.1.tgz#f68e4e5ba1852ac2cadc00f4555fff6c2abb6178" + integrity sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug== 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-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -2539,6 +3420,18 @@ path-parse@^1.0.6: resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== +path-type@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-2.0.0.tgz#f012ccb8415b7096fc2daa1054c3d72389594c73" + integrity sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM= + dependencies: + pify "^2.0.0" + +path-type@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" + integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== + performance-now@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-2.1.0.tgz#6309f4e0e5fa913ec1c69307ae364b4b377c9e7b" @@ -2549,6 +3442,11 @@ picomatch@^2.0.4, picomatch@^2.0.5: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.2.2.tgz#21f333e9b6b8eaff02468f5146ea406d345f4dad" integrity sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg== +pify@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-2.3.0.tgz#ed141a6ac043a849ea588498e7dca8b15330e90c" + integrity sha1-7RQaasBDqEnqWISY59yosVMw6Qw= + pirates@^4.0.1: version "4.0.1" resolved "https://registry.yarnpkg.com/pirates/-/pirates-4.0.1.tgz#643a92caf894566f91b2b986d2c66950a8e2fb87" @@ -2556,6 +3454,13 @@ pirates@^4.0.1: dependencies: node-modules-regexp "^1.0.0" +pkg-dir@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-2.0.0.tgz#f6d5d1109e19d63edf428e0bd57e12777615334b" + integrity sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s= + dependencies: + find-up "^2.1.0" + pkg-dir@^4.2.0: version "4.2.0" resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-4.2.0.tgz#f099133df7ede422e81d1d8448270eeb3e4261f3" @@ -2563,43 +3468,69 @@ pkg-dir@^4.2.0: dependencies: find-up "^4.0.0" -pn@^1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/pn/-/pn-1.1.0.tgz#e2f4cef0e219f463c179ab37463e4e1ecdccbafb" - integrity sha512-2qHaIQr2VLRFoxe2nASzsV6ef4yOOH+Fi9FBOVH6cqeSgUnoyySPZkxzLuzd+RYOQTRpROA0ztTMqxROKSb/nA== +pkg-dir@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pkg-dir/-/pkg-dir-5.0.0.tgz#a02d6aebe6ba133a928f74aec20bafdfe6b8e760" + integrity sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA== + dependencies: + find-up "^5.0.0" + +please-upgrade-node@^3.2.0: + version "3.2.0" + resolved "https://registry.yarnpkg.com/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz#aeddd3f994c933e4ad98b99d9a556efa0e2fe942" + integrity sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg== + dependencies: + semver-compare "^1.0.0" posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +prelude-ls@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" + integrity sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g== + 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= -prettier@^2.0.4: - version "2.0.4" - resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.0.4.tgz#2d1bae173e355996ee355ec9830a7a1ee05457ef" - integrity sha512-SVJIQ51spzFDvh4fIbCLvciiDMCrRhlN3mbZvv/+ycjvmF5E73bKdGfU8QDLNmjYJf+lsGnDBC4UUnvTe5OO0w== +prettier-linter-helpers@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz#d23d41fe1375646de2d0104d3454a3008802cf7b" + integrity sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w== + dependencies: + fast-diff "^1.1.2" + +prettier@^2.2.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/prettier/-/prettier-2.2.1.tgz#795a1a78dd52f073da0cd42b21f9c91381923ff5" + integrity sha512-PqyhM2yCjg/oKkFPtTGUojv7gnZAoG80ttl45O6x2Ug/rMJw4wcc9k6aaf2hibP7BGVCCM33gZoGjyvt9mm16Q== -pretty-format@^25.3.0: - version "25.3.0" - resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-25.3.0.tgz#d0a4f988ff4a6cd350342fdabbb809aeb4d49ad5" - integrity sha512-wToHwF8bkQknIcFkBqNfKu4+UZqnrLn/Vr+wwKQwwvPzkBfDDKp/qIabFqdgtoi5PEnM8LFByVsOrHoa3SpTVA== +pretty-format@^26.6.2: + version "26.6.2" + resolved "https://registry.yarnpkg.com/pretty-format/-/pretty-format-26.6.2.tgz#e35c2705f14cb7fe2fe94fa078345b444120fc93" + integrity sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg== dependencies: - "@jest/types" "^25.3.0" + "@jest/types" "^26.6.2" ansi-regex "^5.0.0" ansi-styles "^4.0.0" - react-is "^16.12.0" + react-is "^17.0.1" + +progress@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/progress/-/progress-2.0.3.tgz#7e8cf8d8f5b8f239c1bc68beb4eb78567d572ef8" + integrity sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA== prompts@^2.0.1: - version "2.3.2" - resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.3.2.tgz#480572d89ecf39566d2bd3fe2c9fccb7c4c0b068" - integrity sha512-Q06uKs2CkNYVID0VqwfAl9mipo99zkBv/n2JtWY89Yxa3ZabWSrs0e2KTudKVa3peLUvYXMefDqIleLPVUBZMA== + version "2.4.0" + resolved "https://registry.yarnpkg.com/prompts/-/prompts-2.4.0.tgz#4aa5de0723a231d1ee9121c40fdf663df73f61d7" + integrity sha512-awZAKrk3vN6CroQukBL+R9051a4R3zCZBlJm/HBfrSZ8iTpYix3VX1vU4mveiLpiwmOJT4wokTF9m6HUk4KqWQ== dependencies: kleur "^3.0.3" - sisteransi "^1.0.4" + sisteransi "^1.0.5" psl@^1.1.28: version "1.8.0" @@ -2624,15 +3555,46 @@ qs@~6.5.2: resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== -react-is@^16.12.0: - version "16.13.1" - resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" - integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== +react-is@^17.0.1: + version "17.0.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-17.0.1.tgz#5b3531bd76a645a4c9fb6e693ed36419e3301339" + integrity sha512-NAnt2iGDXohE5LI7uBnLnqvLQMtzhkiAOLXTmv+qnF9Ky7xAPcX8Up/xWIhxvLVGJvuLiNc4xQLtuqDRzb4fSA== + +read-pkg-up@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-2.0.0.tgz#6b72a8048984e0c41e79510fd5e9fa99b3b549be" + integrity sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4= + dependencies: + find-up "^2.0.0" + read-pkg "^2.0.0" + +read-pkg-up@^7.0.1: + version "7.0.1" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-7.0.1.tgz#f3a6135758459733ae2b95638056e1854e7ef507" + integrity sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg== + dependencies: + find-up "^4.1.0" + read-pkg "^5.2.0" + type-fest "^0.8.1" -realpath-native@^2.0.0: +read-pkg@^2.0.0: version "2.0.0" - resolved "https://registry.yarnpkg.com/realpath-native/-/realpath-native-2.0.0.tgz#7377ac429b6e1fd599dc38d08ed942d0d7beb866" - integrity sha512-v1SEYUOXXdbBZK8ZuNgO4TBjamPsiSgcFr0aP+tEKpQZK8vooEUqV6nm6Cv502mX4NF2EfsnVqtNAHG+/6Ur1Q== + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-2.0.0.tgz#8ef1c0623c6a6db0dc6713c4bfac46332b2368f8" + integrity sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg= + dependencies: + load-json-file "^2.0.0" + normalize-package-data "^2.3.2" + path-type "^2.0.0" + +read-pkg@^5.2.0: + version "5.2.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-5.2.0.tgz#7bf295438ca5a33e56cd30e053b34ee7250c93cc" + integrity sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg== + dependencies: + "@types/normalize-package-data" "^2.4.0" + normalize-package-data "^2.5.0" + parse-json "^5.0.0" + type-fest "^0.6.0" regex-not@^1.0.0, regex-not@^1.0.2: version "1.0.2" @@ -2642,6 +3604,11 @@ regex-not@^1.0.0, regex-not@^1.0.2: extend-shallow "^3.0.2" safe-regex "^1.1.0" +regexpp@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/regexpp/-/regexpp-3.1.0.tgz#206d0ad0a5648cffbdb8ae46438f3dc51c9f78e2" + integrity sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q== + 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" @@ -2657,23 +3624,23 @@ repeat-string@^1.6.1: resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637" integrity sha1-jcrkcOHIirwtYA//Sndihtp15jc= -request-promise-core@1.1.3: - version "1.1.3" - resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.3.tgz#e9a3c081b51380dfea677336061fea879a829ee9" - integrity sha512-QIs2+ArIGQVp5ZYbWD5ZLCY29D5CfWizP8eWnm8FoGD1TX61veauETVQbrV60662V0oFBkrDOuaBI8XgtuyYAQ== +request-promise-core@1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/request-promise-core/-/request-promise-core-1.1.4.tgz#3eedd4223208d419867b78ce815167d10593a22f" + integrity sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw== dependencies: - lodash "^4.17.15" + lodash "^4.17.19" -request-promise-native@^1.0.7: - version "1.0.8" - resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.8.tgz#a455b960b826e44e2bf8999af64dff2bfe58cb36" - integrity sha512-dapwLGqkHtwL5AEbfenuzjTYg35Jd6KPytsC2/TLkVMz8rm+tNt72MGUWT1RP/aYawMpN6HqbNGBQaRcBtjQMQ== +request-promise-native@^1.0.8: + version "1.0.9" + resolved "https://registry.yarnpkg.com/request-promise-native/-/request-promise-native-1.0.9.tgz#e407120526a5efdc9a39b28a5679bf47b9d9dc28" + integrity sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g== dependencies: - request-promise-core "1.1.3" + request-promise-core "1.1.4" stealthy-require "^1.1.1" tough-cookie "^2.3.3" -request@^2.88.0: +request@^2.88.2: version "2.88.2" resolved "https://registry.yarnpkg.com/request/-/request-2.88.2.tgz#d73c918731cb5a87da047e207234146f664d12b3" integrity sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw== @@ -2704,6 +3671,11 @@ require-directory@^2.1.1: resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + require-main-filename@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" @@ -2716,6 +3688,11 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" +resolve-from@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" + integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== + resolve-from@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" @@ -2726,24 +3703,28 @@ resolve-url@^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.7: - version "1.1.7" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.1.7.tgz#203114d82ad2c5ed9e8e0411b3932875e889e97b" - integrity sha1-IDEU2CrSxe2ejgQRs5ModeiJ6Xs= - -resolve@^1.15.1, resolve@^1.3.2: - version "1.15.1" - resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.15.1.tgz#27bdcdeffeaf2d6244b95bb0f9f4b4653451f3e8" - integrity sha512-84oo6ZTtoTUpjgNEr5SJyzQhzL72gaRodsSfyxC/AXRvwu0Yse9H8eF9IpGo7b8YetZhlI6v7ZQ6bKBFV/6S7w== +resolve@^1.10.0, resolve@^1.13.1, resolve@^1.17.0, resolve@^1.18.1: + version "1.19.0" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.19.0.tgz#1af5bf630409734a067cae29318aac7fa29a267c" + integrity sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg== dependencies: + is-core-module "^2.1.0" path-parse "^1.0.6" +restore-cursor@^3.1.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/restore-cursor/-/restore-cursor-3.1.0.tgz#39f67c54b3a7a58cea5236d95cf0034239631f7e" + integrity sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA== + dependencies: + onetime "^5.1.0" + signal-exit "^3.0.2" + ret@~0.1.10: version "0.1.15" resolved "https://registry.yarnpkg.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc" integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg== -rimraf@^3.0.0: +rimraf@^3.0.0, rimraf@^3.0.2: version "3.0.2" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== @@ -2755,10 +3736,17 @@ rsvp@^4.8.4: resolved "https://registry.yarnpkg.com/rsvp/-/rsvp-4.8.5.tgz#c8f155311d167f68f21e168df71ec5b083113734" integrity sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA== +rxjs@^6.6.3: + version "6.6.3" + resolved "https://registry.yarnpkg.com/rxjs/-/rxjs-6.6.3.tgz#8ca84635c4daa900c0d3967a6ee7ac60271ee552" + integrity sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ== + dependencies: + tslib "^1.9.0" + safe-buffer@^5.0.1, safe-buffer@^5.1.2: - version "5.2.0" - resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" - integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== safe-buffer@~5.1.1: version "5.1.2" @@ -2792,14 +3780,24 @@ sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" -saxes@^3.1.9: - version "3.1.11" - resolved "https://registry.yarnpkg.com/saxes/-/saxes-3.1.11.tgz#d59d1fd332ec92ad98a2e0b2ee644702384b1c5b" - integrity sha512-Ydydq3zC+WYDJK1+gRxRapLIED9PWeSuuS41wqyoRmzvhhh9nc+QQrVMKJYzJFULazeGhzSV0QleN2wD3boh2g== +saxes@^5.0.0: + version "5.0.1" + resolved "https://registry.yarnpkg.com/saxes/-/saxes-5.0.1.tgz#eebab953fa3b7608dbe94e5dadb15c888fa6696d" + integrity sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw== dependencies: - xmlchars "^2.1.1" + xmlchars "^2.2.0" + +semver-compare@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/semver-compare/-/semver-compare-1.0.0.tgz#0dee216a1c941ab37e9efb1788f6afc5ff5537fc" + integrity sha1-De4hahyUGrN+nvsXiPavxf9VN/w= + +semver-regex@^3.1.2: + version "3.1.2" + resolved "https://registry.yarnpkg.com/semver-regex/-/semver-regex-3.1.2.tgz#34b4c0d361eef262e07199dbef316d0f2ab11807" + integrity sha512-bXWyL6EAKOJa81XG1OZ/Yyuq+oT0b2YLlxx7c+mrdYPaPbnj6WgVULXhinMIeZGufuUBu/eVRqXEhiv4imfwxA== -semver@^5.4.1, semver@^5.5.0: +"semver@2 || 3 || 4 || 5", semver@^5.4.1, semver@^5.5.0: version "5.7.1" resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.1.tgz#a954f931aeba508d307bbf069eff0c01c96116f7" integrity sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ== @@ -2809,6 +3807,13 @@ semver@^6.0.0, semver@^6.3.0: resolved "https://registry.yarnpkg.com/semver/-/semver-6.3.0.tgz#ee0a64c8af5e8ceea67687b133761e1becbd1d3d" integrity sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw== +semver@^7.2.1, semver@^7.3.2: + version "7.3.4" + resolved "https://registry.yarnpkg.com/semver/-/semver-7.3.4.tgz#27aaa7d2e4ca76452f98d3add093a72c943edc97" + integrity sha512-tCfb2WLjqFAtXn4KEdxIhalnRtoKFN7nAwj0B3ZXCbQloV2tq5eDbcTmT68JJD3nRJq24/XgxtQKFIpQdtvmVw== + dependencies: + lru-cache "^6.0.0" + set-blocking@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" @@ -2858,7 +3863,7 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.3.tgz#a1410c2edd8f077b08b4e253c8eacfcaf057461c" integrity sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA== -sisteransi@^1.0.4: +sisteransi@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/sisteransi/-/sisteransi-1.0.5.tgz#134d681297756437cc05ca01370d3a7a571075ed" integrity sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg== @@ -2868,6 +3873,24 @@ slash@^3.0.0: resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" integrity sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q== +slice-ansi@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-3.0.0.tgz#31ddc10930a1b7e0b67b08c96c2f49b77a789787" + integrity sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + +slice-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/slice-ansi/-/slice-ansi-4.0.0.tgz#500e8dd0fd55b05815086255b3195adf2a45fe6b" + integrity sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ== + dependencies: + ansi-styles "^4.0.0" + astral-regex "^2.0.0" + is-fullwidth-code-point "^3.0.0" + snapdragon-node@^2.0.1: version "2.1.1" resolved "https://registry.yarnpkg.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b" @@ -2910,9 +3933,9 @@ source-map-resolve@^0.5.0: urix "^0.1.0" source-map-support@^0.5.6: - version "0.5.16" - resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.16.tgz#0ae069e7fe3ba7538c64c98515e35339eac5a042" - integrity sha512-efyLRJDr68D9hBBNIPWFjhpFzURh+KJykQwvMyW5UiZzYwoF6l4YMMDIJJEyFWxWCqfyxLzz6tSfUFR+kXXsVQ== + version "0.5.19" + resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" + integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== dependencies: buffer-from "^1.0.0" source-map "^0.6.0" @@ -2937,6 +3960,32 @@ source-map@^0.7.3: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== +spdx-correct@^3.0.0: + version "3.1.1" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.1.tgz#dece81ac9c1e6713e5f7d1b6f17d468fa53d89a9" + integrity sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz#3f28ce1a77a00372683eade4a433183527a2163d" + integrity sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A== + +spdx-expression-parse@^3.0.0: + version "3.0.1" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz#cf70f50482eefdc98e3ce0a6833e4a53ceeba679" + integrity sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.7" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.7.tgz#e9c18a410e5ed7e12442a549fbd8afa767038d65" + integrity sha512-U+MTEOO0AiDzxwFvoa4JVnMV6mZlJKk2sBLt90s7G0Gd0Mlknc7kxEn3nuDPNZRta7O2uy8oLcZLVT+4sqNZHQ== + split-string@^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" @@ -2964,10 +4013,12 @@ sshpk@^1.7.0: safer-buffer "^2.0.2" tweetnacl "~0.14.0" -stack-utils@^1.0.1: - version "1.0.2" - resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-1.0.2.tgz#33eba3897788558bebfc2db059dc158ec36cebb8" - integrity sha512-MTX+MeG5U994cazkjd/9KNAapsHnibjMLnfXodlkXw76JEea0UiNzrqidzo1emMwk7w5Qhc9jd4Bn9TBb1MFwA== +stack-utils@^2.0.2: + version "2.0.3" + resolved "https://registry.yarnpkg.com/stack-utils/-/stack-utils-2.0.3.tgz#cd5f030126ff116b78ccb3c027fe302713b61277" + integrity sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw== + dependencies: + escape-string-regexp "^2.0.0" static-extend@^0.1.1: version "0.1.2" @@ -2982,13 +4033,18 @@ stealthy-require@^1.1.1: resolved "https://registry.yarnpkg.com/stealthy-require/-/stealthy-require-1.1.1.tgz#35b09875b4ff49f26a777e509b3090a3226bf24b" integrity sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks= -string-length@^3.1.0: - version "3.1.0" - resolved "https://registry.yarnpkg.com/string-length/-/string-length-3.1.0.tgz#107ef8c23456e187a8abd4a61162ff4ac6e25837" - integrity sha512-Ttp5YvkGm5v9Ijagtaz1BnN+k9ObpvS0eIBblPMp2YWL8FBmi9qblQ9fexc2k/CXFgrTIteU3jAw3payCnwSTA== +string-argv@0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/string-argv/-/string-argv-0.3.1.tgz#95e2fbec0427ae19184935f816d74aaa4c5c19da" + integrity sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg== + +string-length@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/string-length/-/string-length-4.0.1.tgz#4a973bf31ef77c4edbceadd6af2611996985f8a1" + integrity sha512-PKyXUd0LK0ePjSOnWn34V2uD6acUWev9uy0Ft05k0E8xRW+SKcA0F7eMr7h5xlzfn+4O3N+55rduYyet3Jk+jw== dependencies: - astral-regex "^1.0.0" - strip-ansi "^5.2.0" + char-regex "^1.0.2" + strip-ansi "^6.0.0" string-width@^4.1.0, string-width@^4.2.0: version "4.2.0" @@ -2999,12 +4055,30 @@ string-width@^4.1.0, string-width@^4.2.0: is-fullwidth-code-point "^3.0.0" strip-ansi "^6.0.0" -strip-ansi@^5.2.0: - version "5.2.0" - resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-5.2.0.tgz#8c9a536feb6afc962bdfa5b104a5091c1ad9c0ae" - integrity sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA== +string.prototype.trimend@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimend/-/string.prototype.trimend-1.0.3.tgz#a22bd53cca5c7cf44d7c9d5c732118873d6cd18b" + integrity sha512-ayH0pB+uf0U28CtjlLvL7NaohvR1amUvVZk+y3DYb0Ey2PUV5zPkkKy9+U1ndVEIXO8hNg18eIv9Jntbii+dKw== + dependencies: + call-bind "^1.0.0" + define-properties "^1.1.3" + +string.prototype.trimstart@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.3.tgz#9b4cb590e123bb36564401d59824298de50fd5aa" + integrity sha512-oBIBUy5lea5tt0ovtOFiEQaBkoBBkyJhZXzJYrSmDo5IUUqbOPvVezuRs/agBIdZ2p2Eo1FD6bD9USyBLfl3xg== dependencies: - ansi-regex "^4.1.0" + call-bind "^1.0.0" + define-properties "^1.1.3" + +stringify-object@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" + integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== + dependencies: + get-own-enumerable-property-symbols "^3.0.0" + is-obj "^1.0.1" + is-regexp "^1.0.0" strip-ansi@^6.0.0: version "6.0.0" @@ -3013,6 +4087,11 @@ strip-ansi@^6.0.0: dependencies: ansi-regex "^5.0.0" +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + strip-bom@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-4.0.0.tgz#9c3505c1db45bcedca3d9cf7a16f5c5aa3901878" @@ -3028,6 +4107,11 @@ strip-final-newline@^2.0.0: resolved "https://registry.yarnpkg.com/strip-final-newline/-/strip-final-newline-2.0.0.tgz#89b852fb2fcbe936f6f4b3187afb0a12c1ab58ad" integrity sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA== +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@^5.3.0: version "5.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" @@ -3036,9 +4120,9 @@ supports-color@^5.3.0: has-flag "^3.0.0" supports-color@^7.0.0, supports-color@^7.1.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.1.0.tgz#68e32591df73e25ad1c4b49108a2ec507962bfd1" - integrity sha512-oRSIpR8pxT1Wr2FquTNnGet79b3BWljqOuoW/h4oBhxJ/HUbX5nX6JSruTkvXDCFMwDPvsaTTbvMLKZWSy0R5g== + 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" @@ -3050,11 +4134,21 @@ supports-hyperlinks@^2.0.0: has-flag "^4.0.0" supports-color "^7.0.0" -symbol-tree@^3.2.2: +symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" integrity sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw== +table@^6.0.4: + version "6.0.7" + resolved "https://registry.yarnpkg.com/table/-/table-6.0.7.tgz#e45897ffbcc1bcf9e8a87bf420f2c9e5a7a52a34" + integrity sha512-rxZevLGTUzWna/qBLObOe16kB2RTnnbhciwgPbMMlazz1yZGVEgnZK762xyVdVznhqxrfCeBMmMkgOOaPwjH7g== + dependencies: + ajv "^7.0.2" + lodash "^4.17.20" + slice-ansi "^4.0.0" + string-width "^4.2.0" + terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -3072,11 +4166,21 @@ test-exclude@^6.0.0: glob "^7.1.4" minimatch "^3.0.4" +text-table@^0.2.0: + version "0.2.0" + resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" + integrity sha1-f17oI66AUgfACvLfSoTsP8+lcLQ= + throat@^5.0.0: version "5.0.0" resolved "https://registry.yarnpkg.com/throat/-/throat-5.0.0.tgz#c5199235803aad18754a667d659b5e72ce16764b" integrity sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA== +through@^2.3.8: + version "2.3.8" + resolved "https://registry.yarnpkg.com/through/-/through-2.3.8.tgz#0dd4c9ffaabc357960b1b724115d7e0e86a2e1f5" + integrity sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU= + tmpl@1.0.x: version "1.0.4" resolved "https://registry.yarnpkg.com/tmpl/-/tmpl-1.0.4.tgz#23640dd7b42d00433911140820e5cf440e521dd1" @@ -3136,12 +4240,27 @@ tough-cookie@^3.0.1: psl "^1.1.28" punycode "^2.1.1" -tr46@^1.0.1: - version "1.0.1" - resolved "https://registry.yarnpkg.com/tr46/-/tr46-1.0.1.tgz#a8b13fd6bfd2489519674ccde55ba3693b706d09" - integrity sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk= +tr46@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/tr46/-/tr46-2.0.2.tgz#03273586def1595ae08fedb38d7733cee91d2479" + integrity sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg== dependencies: - punycode "^2.1.0" + punycode "^2.1.1" + +tsconfig-paths@^3.9.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.9.0.tgz#098547a6c4448807e8fcb8eae081064ee9a3c90b" + integrity sha512-dRcuzokWhajtZWkQsDVKbWyY+jgcLC5sqJhg2PSgf4ZkH2aHPvaOY8YWGhmjb68b5qqTfasSsDO9k7RUiEmZAw== + dependencies: + "@types/json5" "^0.0.29" + json5 "^1.0.1" + minimist "^1.2.0" + strip-bom "^3.0.0" + +tslib@^1.9.0: + version "1.14.1" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" + integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== tunnel-agent@^0.6.0: version "0.6.0" @@ -3155,6 +4274,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" @@ -3172,6 +4298,16 @@ type-fest@^0.11.0: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.11.0.tgz#97abf0872310fed88a5c466b25681576145e33f1" integrity sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ== +type-fest@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.6.0.tgz#8d2a2370d3df886eb5c90ada1c5bf6188acf838b" + integrity sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg== + +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== + typedarray-to-buffer@^3.1.5: version "3.1.5" resolved "https://registry.yarnpkg.com/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz#a97ee7a9ff42691b9f783ff1bc5112fe3fca9080" @@ -3198,9 +4334,9 @@ unset-value@^1.0.0: isobject "^3.0.0" uri-js@^4.2.2: - version "4.2.2" - resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" - integrity sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ== + version "4.4.1" + resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.4.1.tgz#9b1a52595225859e55f669d928f88c6c57f2a77e" + integrity sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg== dependencies: punycode "^2.1.0" @@ -3219,15 +4355,33 @@ uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.4.0.tgz#b23e4358afa8a202fe7a100af1f5f883f02007ee" integrity sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A== -v8-to-istanbul@^4.0.1: - version "4.1.3" - resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-4.1.3.tgz#22fe35709a64955f49a08a7c7c959f6520ad6f20" - integrity sha512-sAjOC+Kki6aJVbUOXJbcR0MnbfjvBzwKZazEJymA2IX49uoOdEdk+4fBq5cXgYgiyKtAyrrJNtBZdOeDIF+Fng== +uuid@^8.3.0: + version "8.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.2.tgz#80d5b5ced271bb9af6c445f21a1a04c606cefbe2" + integrity sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg== + +v8-compile-cache@^2.0.3: + version "2.2.0" + resolved "https://registry.yarnpkg.com/v8-compile-cache/-/v8-compile-cache-2.2.0.tgz#9471efa3ef9128d2f7c6a7ca39c4dd6b5055b132" + integrity sha512-gTpR5XQNKFwOd4clxfnhaqvfqMpqEwr4tOtCyz4MtYZX2JYhfr1JvBFKdS+7K/9rfpZR3VLX+YWBbKoxCgS43Q== + +v8-to-istanbul@^7.0.0: + version "7.1.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-7.1.0.tgz#5b95cef45c0f83217ec79f8fc7ee1c8b486aee07" + integrity sha512-uXUVqNUCLa0AH1vuVxzi+MI4RfxEOKt9pBgKwHbgH7st8Kv2P1m+jvWNnektzBh5QShF3ODgKmUFCf38LnVz1g== dependencies: "@types/istanbul-lib-coverage" "^2.0.1" convert-source-map "^1.6.0" source-map "^0.7.3" +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + verror@1.10.0: version "1.10.0" resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400" @@ -3237,20 +4391,18 @@ verror@1.10.0: core-util-is "1.0.2" extsprintf "^1.2.0" -w3c-hr-time@^1.0.1: +w3c-hr-time@^1.0.2: version "1.0.2" resolved "https://registry.yarnpkg.com/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz#0a89cdf5cc15822df9c360543676963e0cc308cd" integrity sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ== dependencies: browser-process-hrtime "^1.0.0" -w3c-xmlserializer@^1.1.2: - version "1.1.2" - resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-1.1.2.tgz#30485ca7d70a6fd052420a3d12fd90e6339ce794" - integrity sha512-p10l/ayESzrBMYWRID6xbuCKh2Fp77+sA0doRuGn4tTIMrrZVeqfpKjXHY+oDh3K4nLdPgNwMTVP6Vp4pvqbNg== +w3c-xmlserializer@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz#3e7104a05b75146cc60f564380b7f683acf1020a" + integrity sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA== dependencies: - domexception "^1.0.1" - webidl-conversions "^4.0.2" xml-name-validator "^3.0.0" walker@^1.0.7, walker@~1.0.5: @@ -3260,38 +4412,48 @@ walker@^1.0.7, walker@~1.0.5: dependencies: makeerror "1.0.x" -webidl-conversions@^4.0.2: - version "4.0.2" - resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-4.0.2.tgz#a855980b1f0b6b359ba1d5d9fb39ae941faa63ad" - integrity sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg== +webidl-conversions@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-5.0.0.tgz#ae59c8a00b121543a2acc65c0434f57b0fc11aff" + integrity sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA== -whatwg-encoding@^1.0.1, whatwg-encoding@^1.0.5: +webidl-conversions@^6.1.0: + version "6.1.0" + resolved "https://registry.yarnpkg.com/webidl-conversions/-/webidl-conversions-6.1.0.tgz#9111b4d7ea80acd40f5270d666621afa78b69514" + integrity sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w== + +whatwg-encoding@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz#5abacf777c32166a51d085d6b4f3e7d27113ddb0" integrity sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw== dependencies: iconv-lite "0.4.24" -whatwg-mimetype@^2.2.0, whatwg-mimetype@^2.3.0: +whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" integrity sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g== -whatwg-url@^7.0.0: - version "7.1.0" - resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-7.1.0.tgz#c2c492f1eca612988efd3d2266be1b9fc6170d06" - integrity sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg== +whatwg-url@^8.0.0: + version "8.4.0" + resolved "https://registry.yarnpkg.com/whatwg-url/-/whatwg-url-8.4.0.tgz#50fb9615b05469591d2b2bd6dfaed2942ed72837" + integrity sha512-vwTUFf6V4zhcPkWp/4CQPr1TW9Ml6SF4lVyaIMBdJw5i6qUUJ1QWM4Z6YYVkfka0OUIzVo/0aNtGVGk256IKWw== dependencies: lodash.sortby "^4.7.0" - tr46 "^1.0.1" - webidl-conversions "^4.0.2" + tr46 "^2.0.2" + webidl-conversions "^6.1.0" which-module@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= -which@^1.2.9, which@^1.3.1: +which-pm-runs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/which-pm-runs/-/which-pm-runs-1.0.0.tgz#670b3afbc552e0b55df6b7780ca74615f23ad1cb" + integrity sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs= + +which@^1.2.9: version "1.3.1" resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== @@ -3305,7 +4467,7 @@ which@^2.0.1, which@^2.0.2: dependencies: isexe "^2.0.0" -word-wrap@~1.2.3: +word-wrap@^1.2.3, 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== @@ -3319,6 +4481,15 @@ wrap-ansi@^6.2.0: string-width "^4.1.0" strip-ansi "^6.0.0" +wrap-ansi@^7.0.0: + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + wrappy@1: version "1.0.2" resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" @@ -3334,38 +4505,48 @@ write-file-atomic@^3.0.0: signal-exit "^3.0.2" typedarray-to-buffer "^3.1.5" -ws@^7.0.0: - version "7.2.3" - resolved "https://registry.yarnpkg.com/ws/-/ws-7.2.3.tgz#a5411e1fb04d5ed0efee76d26d5c46d830c39b46" - integrity sha512-HTDl9G9hbkNDk98naoR/cHDws7+EyYMOdL1BmjsZXRUjf7d+MficC4B7HLUPlSiho0vg+CWKrGIt/VJBd1xunQ== +ws@^7.2.3: + version "7.4.2" + resolved "https://registry.yarnpkg.com/ws/-/ws-7.4.2.tgz#782100048e54eb36fe9843363ab1c68672b261dd" + integrity sha512-T4tewALS3+qsrpGI/8dqNMLIVdq/g/85U98HPMa6F0m6xTbvhXU6RCQLqPH3+SlomNV/LdY6RXEbBpMH6EOJnA== xml-name-validator@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/xml-name-validator/-/xml-name-validator-3.0.0.tgz#6ae73e06de4d8c6e47f9fb181f78d648ad457c6a" integrity sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw== -xmlchars@^2.1.1: +xmlchars@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/xmlchars/-/xmlchars-2.2.0.tgz#060fe1bcb7f9c76fe2a17db86a9bc3ab894210cb" integrity sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw== y18n@^4.0.0: + version "4.0.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.1.tgz#8db2b83c31c5d75099bb890b23f3094891e247d4" + integrity sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ== + +yallist@^4.0.0: version "4.0.0" - resolved "https://registry.yarnpkg.com/y18n/-/y18n-4.0.0.tgz#95ef94f85ecc81d007c264e190a120f0a3c8566b" - integrity sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w== + resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" + integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== -yargs-parser@^18.1.1: - version "18.1.2" - resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.2.tgz#2f482bea2136dbde0861683abea7756d30b504f1" - integrity sha512-hlIPNR3IzC1YuL1c2UwwDKpXlNFBqD1Fswwh1khz5+d8Cq/8yc/Mn0i+rQXduu8hcrFKvO7Eryk+09NecTQAAQ== +yaml@^1.10.0: + version "1.10.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e" + integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg== + +yargs-parser@^18.1.2: + version "18.1.3" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-18.1.3.tgz#be68c4975c6b2abf469236b0c870362fab09a7b0" + integrity sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ== dependencies: camelcase "^5.0.0" decamelize "^1.2.0" -yargs@^15.3.1: - version "15.3.1" - resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.3.1.tgz#9505b472763963e54afe60148ad27a330818e98b" - integrity sha512-92O1HWEjw27sBfgmXiixJWT5hRBp2eobqXicLtPBIDBhYB+1HpwZlXmbW2luivBJHBzki+7VyCLRtAkScbTBQA== +yargs@^15.4.1: + version "15.4.1" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" + integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== dependencies: cliui "^6.0.0" decamelize "^1.2.0" @@ -3377,4 +4558,9 @@ yargs@^15.3.1: string-width "^4.2.0" which-module "^2.0.0" y18n "^4.0.0" - yargs-parser "^18.1.1" + yargs-parser "^18.1.2" + +yocto-queue@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" + integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==