Merge branch 'master' into next

This commit is contained in:
sosukesuzuki committed 2021-01-23 13:15:50 +09:00
commit 8436923960
69 files changed
+1904 -652

No files matched your search

+1
View File
@@ -72,6 +72,7 @@ rules:
unicorn/no-useless-undefined: error
unicorn/prefer-includes: error
unicorn/prefer-number-properties: error
unicorn/prefer-regexp-test: error
unicorn/prefer-string-slice: error
overrides:
- files:
+43
View File
@@ -0,0 +1,43 @@
#### Print final blockParam on its own line (#9978 by @dcyriller)
<!-- prettier-ignore -->
```hbs
<MyComponent @prop={{true}} @prop2={{true}} @prop3={{true}} @prop4={{true}} as |thing|></MyComponent>
{{#block param hashKey=hashValue hashKey=hashValue hashKey=hashValue as |blockParam|}}
Hello
{{/block}}
{{!-- Prettier stable --}}
<MyComponent
@prop={{true}}
@prop2={{true}}
@prop3={{true}}
@prop4={{true}} as |thing|
/>
{{#block
param
hashKey=hashValue
hashKey=hashValue
hashKey=hashValue as |blockParam|
}}
Hello
{{/block}}
{{!-- Prettier master --}}
<MyComponent
@prop={{true}}
@prop2={{true}}
@prop3={{true}}
@prop4={{true}}
as |thing|
/>
{{#block
param
hashKey=hashValue
hashKey=hashValue
hashKey=hashValue
as |blockParam|
}}
Hello
{{/block}}
```
+22
View File
@@ -0,0 +1,22 @@
#### Prefix-based multiline formatting for the `class` attribute (#7865 by @thorn0)
Formatting of HTML class names will now keep classes on one line until the line length limit is reached; at that point, consecutive classes with the same prefix will be grouped together on each line. For layout frameworks such as Bootstrap and Tailwind CSS, which add many classes to an element, this is important for readability and maintainability vs. the previous behavior (keeping all classes on one line) or e.g. putting each class on its own line.
<!-- prettier-ignore -->
```html
<!-- Prettier stable -->
<div
class="SomeComponent__heading-row d-flex flex-column flex-lg-row justify-content-start justify-content-lg-between align-items-start align-items-lg-center"
></div>
<!-- Prettier master -->
<div
class="
SomeComponent__heading-row
d-flex
flex-column flex-lg-row
justify-content-start justify-content-lg-between
align-items-start align-items-lg-center
"
></div>
```
+28
View File
@@ -0,0 +1,28 @@
#### Improve visual separation between header and body in classes with multiline headers (#10085 by @sosukesuzuki)
<!-- prettier-ignore -->
```ts
// Input
class loooooooooooooooooooong
extends looooooooooooooooooong
implements loooooooooooooooooooong
{
property: string;
}
// Prettier stable
class loooooooooooooooooooong
extends looooooooooooooooooong
implements loooooooooooooooooooong {
property: string;
}
// Prettier master
class loooooooooooooooooooong
extends looooooooooooooooooong
implements loooooooooooooooooooong
{
property: string;
}
```
+4 -2
View File
@@ -1,4 +1,4 @@
#### Print null items in arguments (#9787 by @sosukesuzuki)
#### Disable Babel's error recovery for omitted call arguments (#9787 by @sosukesuzuki, #10065 by @thorn0)
<!-- prettier-ignore -->
```js
@@ -9,5 +9,7 @@ foo("a", , "b");
TypeError: Cannot read property 'type' of null
// Prettier master
foo("a", , "b");
[error] stdin: SyntaxError: Argument expression expected. (1:10)
[error] > 1 | foo("a", , "b");
[error] | ^
```
+5 -5
View File
@@ -308,17 +308,17 @@ Valid options:
## HTML Whitespace Sensitivity
_First available in v1.15.0_
_First available in v1.15.0. First available for Handlebars in 2.3.0_
Specify the global whitespace sensitivity for HTML files, see [whitespace-sensitive formatting] for more info.
Specify the global whitespace sensitivity for HTML, Vue, Angular, and Handlebars. See [whitespace-sensitive formatting] for more info.
[whitespace-sensitive formatting]: https://prettier.io/blog/2018/11/07/1.15.0.html#whitespace-sensitive-formatting
Valid options:
- `"css"` - Respect the default value of CSS `display` property.
- `"strict"` - Whitespaces are considered sensitive.
- `"ignore"` - Whitespaces are considered insensitive.
- `"css"` - Respect the default value of CSS `display` property. For Handlebars treated same as `ignore`.
- `"strict"` - Whitespace (or the lack of it) around all tags is considered significant.
- `"ignore"` - Whitespace (or the lack of it) around all tags is considered insignificant.
| Default | CLI Override | API Override |
| ------- | ------------------------------------------------------------------------ | ----------------------------------------------------------------------- |
+4
View File
@@ -77,6 +77,10 @@ const user = {
[stylesheets]: https://github.com/prettier/prettier/issues/74#issuecomment-275262094
[keyed methods]: https://github.com/prettier/prettier/pull/495#issuecomment-275745434
> ♻️ **A note on formatting reversibility:** The semi-manual formatting for object literals is in fact a workaround, not a feature. It was implemented only because at the time a good heuristic wasn’t found and an urgent fix was needed. However, as a general strategy, Prettier avoids _non-reversible_ formatting like that, so the team is still looking for heuristics that would allow either to remove this behavior completely or at least to reduce the number of situations where it’s applied.
>
> What does **reversible** mean? Once an object literal becomes multiline, Prettier won’t collapse it back. If in Prettier-formatted code, we add a property to an object literal, run Prettier, then change our mind, remove the added property, and then run Prettier again, we might end up with a formatting not identical to the initial one. This useless change might even get included in a commit, which is exactly the kind of situation Prettier was created to prevent.
### Decorators
Just like with objects, decorators are used for a lot of different things. Sometimes it makes sense to write decorators _above_ the line they're decorating, sometimes it’s nicer if they're on the _same_ line. We haven’t been able to find a good rule for this, so Prettier keeps your decorator positioned like you wrote them (if they fit on the line). This isn’t ideal, but a pragmatic solution to a difficult problem.
+11 -11
View File
@@ -20,12 +20,12 @@
"bin"
],
"dependencies": {
"@angular/compiler": "11.0.7",
"@angular/compiler": "11.0.9",
"@babel/code-frame": "7.12.11",
"@babel/parser": "7.12.11",
"@glimmer/syntax": "0.73.1",
"@iarna/toml": "2.2.5",
"@typescript-eslint/typescript-estree": "4.12.0",
"@typescript-eslint/typescript-estree": "4.14.0",
"angular-estree-parser": "2.3.0",
"angular-html-parser": "1.7.1",
"camelcase": "6.2.0",
@@ -59,7 +59,7 @@
"linguist-languages": "7.12.2",
"lodash": "4.17.20",
"mem": "8.0.0",
"meriyah": "3.1.6",
"meriyah": "4.0.0",
"minimatch": "3.0.4",
"minimist": "1.2.5",
"n-readlines": "1.0.1",
@@ -89,30 +89,30 @@
"@babel/core": "7.12.10",
"@babel/preset-env": "7.12.11",
"@babel/types": "7.12.12",
"@glimmer/reference": "0.73.1",
"@glimmer/reference": "0.73.2",
"@rollup/plugin-alias": "3.1.1",
"@rollup/plugin-babel": "5.2.2",
"@rollup/plugin-commonjs": "16.0.0",
"@rollup/plugin-json": "4.1.0",
"@rollup/plugin-node-resolve": "11.0.1",
"@rollup/plugin-node-resolve": "11.1.0",
"@rollup/plugin-replace": "2.3.4",
"@types/estree": "0.0.45",
"@types/estree": "0.0.46",
"@types/node": "14.14.0",
"@typescript-eslint/types": "4.12.0",
"@typescript-eslint/types": "4.14.0",
"babel-jest": "26.6.3",
"babel-loader": "8.2.2",
"benchmark": "2.1.4",
"builtin-modules": "3.2.0",
"cross-env": "7.0.3",
"cspell": "4.2.5",
"eslint": "7.17.0",
"eslint-config-prettier": "7.1.0",
"eslint": "7.18.0",
"eslint-config-prettier": "7.2.0",
"eslint-formatter-friendly": "7.0.0",
"eslint-plugin-import": "2.22.1",
"eslint-plugin-jest": "24.1.3",
"eslint-plugin-prettier-internal-rules": "link:scripts/tools/eslint-plugin-prettier-internal-rules",
"eslint-plugin-react": "7.22.0",
"eslint-plugin-unicorn": "25.0.1",
"eslint-plugin-unicorn": "26.0.1",
"execa": "5.0.0",
"jest": "26.6.3",
"jest-snapshot-serializer-ansi": "1.0.0",
@@ -123,7 +123,7 @@
"prettier": "2.2.1",
"pretty-bytes": "5.5.0",
"rimraf": "3.0.2",
"rollup": "2.36.1",
"rollup": "2.37.1",
"rollup-plugin-node-globals": "1.4.0",
"rollup-plugin-terser": "7.0.2",
"shelljs": "0.8.4",
+15
View File
@@ -628,6 +628,20 @@ function isNonEmptyArray(object) {
return Array.isArray(object) && object.length > 0;
}
/**
* @param {string} description
* @returns {(node: any) => symbol}
*/
function createGroupIdMapper(description) {
const groupIds = new WeakMap();
return function (node) {
if (!groupIds.has(node)) {
groupIds.set(node, Symbol(description));
}
return groupIds.get(node);
};
}
module.exports = {
inferParserByLanguage,
replaceEndOfLineWith,
@@ -665,4 +679,5 @@ module.exports = {
isFrontMatterNode,
getShebang,
isNonEmptyArray,
createGroupIdMapper,
};
+1 -1
View File
@@ -130,7 +130,7 @@ function trim(out) {
while (
out.length > 0 &&
typeof out[out.length - 1] === "string" &&
out[out.length - 1].match(/^[\t ]*$/)
/^[\t ]*$/.test(out[out.length - 1])
) {
trimCount += out.pop().length;
}
+180 -60
View File
@@ -1,15 +1,18 @@
"use strict";
const {
builders: { group, hardline, ifBreak, indent, join, line, softline },
builders: { dedent, group, hardline, ifBreak, indent, join, line, softline },
utils: { getDocParts },
} = require("../document");
const { isNonEmptyArray } = require("../common/util");
const { locStart, locEnd } = require("./loc");
const clean = require("./clean");
const {
getNextNode,
getPreviousNode,
hasPrettierIgnore,
isLastNodeOfSiblings,
isNextNodeOfSomeType,
isNodeOfSomeType,
isParentOfSomeType,
@@ -39,28 +42,44 @@ function print(path, options, print) {
case "Template": {
return group(path.map(print, "body"));
}
case "ElementNode": {
// TODO: make it whitespace sensitive
const bim = isNextNodeOfSomeType(path, ["ElementNode"]) ? hardline : "";
const startingTag = group(printStartingTag(path, print));
const escapeNextElementNode =
options.htmlWhitespaceSensitivity !== "strict" &&
isNextNodeOfSomeType(path, ["ElementNode"])
? softline
: "";
if (isVoid(n)) {
return [group(printStartingTag(path, print)), bim];
return [startingTag, escapeNextElementNode];
}
const isWhitespaceOnly = n.children.every((n) => isWhitespaceNode(n));
const endingTag = ["</", n.tag, ">"];
if (n.children.length === 0) {
return [startingTag, indent(endingTag), escapeNextElementNode];
}
if (options.htmlWhitespaceSensitivity !== "strict") {
return [
startingTag,
indent(printChildren(path, options, print)),
hardline,
indent(endingTag),
escapeNextElementNode,
];
}
return [
group(printStartingTag(path, print)),
group([
isWhitespaceOnly ? "" : indent(printChildren(path, options, print)),
n.children.length > 0 ? hardline : "",
"</",
n.tag,
">",
]),
bim,
startingTag,
indent(group(printChildren(path, options, print))),
indent(endingTag),
escapeNextElementNode,
];
}
case "BlockStatement": {
const pp = path.getParentNode(1);
@@ -74,20 +93,21 @@ function print(path, options, print) {
if (isElseIf) {
return [
printElseIfBlock(path, print),
printProgram(path, print),
printInverse(path, print),
printProgram(path, print, options),
printInverse(path, print, options),
];
}
return [
printOpenBlock(path, print),
group([
printProgram(path, print),
printInverse(path, print),
printCloseBlock(path, print),
printProgram(path, print, options),
printInverse(path, print, options),
printCloseBlock(path, print, options),
]),
];
}
case "ElementModifierStatement": {
return group(["{{", printPathAndParams(path, print), softline, "}}"]);
}
@@ -158,6 +178,65 @@ function print(path, options, print) {
return [n.key, "=", path.call(print, "value")];
}
case "TextNode": {
const inAttrNode = path.stack.includes("attributes");
if (options.htmlWhitespaceSensitivity === "strict" && !inAttrNode) {
// https://infra.spec.whatwg.org/#ascii-whitespace
const leadingWhitespacesRE = /^[\t\n\f\r ]*/;
const trailingWhitespacesRE = /[\t\n\f\r ]*$/;
const whitespacesOnlyRE = /^[\t\n\f\r ]*$/;
if (whitespacesOnlyRE.test(n.chars)) {
let breaks = [line];
const newlines = countNewLines(n.chars);
if (newlines) {
breaks = generateHardlines(newlines, 2);
}
if (isLastNodeOfSiblings(path)) {
breaks = breaks.map((newline) => dedent(newline));
}
return breaks;
}
const [lead] = n.chars.match(leadingWhitespacesRE);
const [tail] = n.chars.match(trailingWhitespacesRE);
let text = n.chars;
let leadBreaks = [];
if (lead) {
leadBreaks = [line];
const leadingNewlines = countNewLines(lead);
if (leadingNewlines) {
leadBreaks = generateHardlines(countNewLines(lead) || 1, 2);
}
text = text.replace(leadingWhitespacesRE, "");
}
let trailBreaks = [];
if (tail) {
trailBreaks = [line];
const trailingNewlines = countNewLines(tail);
if (trailingNewlines) {
trailBreaks = generateHardlines(trailingNewlines || 1, 2);
if (isLastNodeOfSiblings(path)) {
trailBreaks = trailBreaks.map((hardline) => dedent(hardline));
}
}
text = text.replace(trailingWhitespacesRE, "");
}
return [...leadBreaks, text, ...trailBreaks];
}
const maxLineBreaksToPreserve = 2;
const isFirstElement = !getPreviousNode(path);
const isLastElement = !getNextNode(path);
@@ -191,10 +270,8 @@ function print(path, options, print) {
}
}
const inAttrNode = path.stack.includes("attributes");
if (inAttrNode) {
// TODO: format style and srcset attributes
// and cleanup concat that is not necessary
if (!isInAttributeOfName(path, "class")) {
return n.chars;
}
@@ -318,37 +395,50 @@ function print(path, options, print) {
function printStartingTag(path, print) {
const node = path.getValue();
const attributesLike = [];
if (isNonEmptyArray(node.attributes)) {
const attributes = join(line, path.map(print, "attributes"));
attributesLike.push(line, attributes);
}
if (isNonEmptyArray(node.modifiers)) {
const modifiers = join(line, path.map(print, "modifiers"));
attributesLike.push(line, modifiers);
}
if (isNonEmptyArray(node.comments)) {
const comments = join(line, path.map(print, "comments"));
attributesLike.push(line, comments);
}
if (isNonEmptyArray(node.blockParams)) {
const blockParams = printBlockParams(node);
attributesLike.push(line, blockParams);
}
return [
"<",
node.tag,
printAttributesLike(path, print),
printBlockParams(node),
indent(attributesLike),
printStartingTagEndMarker(node),
];
}
function printAttributesLike(path, print) {
const node = path.getValue();
return indent([
node.attributes.length > 0 ? line : "",
join(line, path.map(print, "attributes")),
node.modifiers.length > 0 ? line : "",
join(line, path.map(print, "modifiers")),
node.comments.length > 0 ? line : "",
join(line, path.map(print, "comments")),
]);
}
function printChildren(path, options, print) {
const node = path.getValue();
const isEmpty = node.children.every((n) => isWhitespaceNode(n));
if (options.htmlWhitespaceSensitivity !== "strict" && isEmpty) {
return "";
}
return path.map((childPath, childIndex) => {
if (childIndex === 0) {
return [softline, print(childPath, options, print)];
const printedChild = print(childPath, options, print);
if (childIndex === 0 && options.htmlWhitespaceSensitivity !== "strict") {
return [softline, printedChild];
}
return print(childPath, options, print);
return printedChild;
}, "children");
}
@@ -415,18 +505,32 @@ function printInverseBlockClosingMustache(node) {
function printOpenBlock(path, print) {
const node = path.getValue();
const openingMustache = printOpeningBlockOpeningMustache(node);
const closingMustache = printOpeningBlockClosingMustache(node);
const attributes = [printPath(path, print)];
const params = printParams(path, print);
if (params) {
attributes.push(line, params);
}
if (isNonEmptyArray(node.program.blockParams)) {
const block = printBlockParams(node.program);
attributes.push(line, block);
}
return group([
printOpeningBlockOpeningMustache(node),
printPathAndParams(path, print),
printBlockParams(node.program),
openingMustache,
indent(group(attributes)),
softline,
printOpeningBlockClosingMustache(node),
closingMustache,
]);
}
function printElseBlock(node) {
function printElseBlock(node, options) {
return [
hardline,
options.htmlWhitespaceSensitivity !== "strict" ? hardline : "",
printInverseBlockOpeningMustache(node),
"else",
printInverseBlockClosingMustache(node),
@@ -444,11 +548,23 @@ function printElseIfBlock(path, print) {
];
}
function printCloseBlock(path, print) {
function printCloseBlock(path, print, options) {
const node = path.getValue();
if (options.htmlWhitespaceSensitivity !== "strict") {
const escape = blockStatementHasOnlyWhitespaceInProgram(node)
? softline
: hardline;
return [
escape,
printClosingBlockOpeningMustache(node),
path.call(print, "path"),
printClosingBlockClosingMustache(node),
];
}
return [
blockStatementHasOnlyWhitespaceInProgram(node) ? softline : hardline,
printClosingBlockOpeningMustache(node),
path.call(print, "path"),
printClosingBlockClosingMustache(node),
@@ -475,7 +591,7 @@ function blockStatementHasElse(node) {
return isNodeOfSomeType(node, ["BlockStatement"]) && node.inverse;
}
function printProgram(path, print) {
function printProgram(path, print, options) {
const node = path.getValue();
if (blockStatementHasOnlyWhitespaceInProgram(node)) {
@@ -483,21 +599,29 @@ function printProgram(path, print) {
}
const program = path.call(print, "program");
return indent([hardline, program]);
if (options.htmlWhitespaceSensitivity !== "strict") {
return indent([hardline, program]);
}
return indent(program);
}
function printInverse(path, print) {
function printInverse(path, print, options) {
const node = path.getValue();
const inverse = path.call(print, "inverse");
const parts = [hardline, inverse];
const printed =
options.htmlWhitespaceSensitivity !== "strict"
? [hardline, inverse]
: inverse;
if (blockStatementHasElseIf(node)) {
return parts;
return printed;
}
if (blockStatementHasElse(node)) {
return [printElseBlock(node), indent(parts)];
return [printElseBlock(node, options), indent(printed)];
}
return "";
@@ -634,11 +758,7 @@ function printParams(path, print) {
}
function printBlockParams(node) {
if (!node || node.blockParams.length === 0) {
return "";
}
return [" as |", node.blockParams.join(" "), "|"];
return ["as |", node.blockParams.join(" "), "|"];
}
function doesNotHaveHashParams(node) {
+22
View File
@@ -2,6 +2,27 @@
const htmlVoidElements = require("html-void-elements");
function isLastNodeOfSiblings(path) {
const node = path.getValue();
const parentNode = path.getParentNode(0);
if (
isParentOfSomeType(path, ["ElementNode"]) &&
parentNode.children[parentNode.children.length - 1] === node
) {
return true;
}
if (
isParentOfSomeType(path, ["Block"]) &&
parentNode.body[parentNode.body.length - 1] === node
) {
return true;
}
return false;
}
function isUppercase(string) {
return string.toUpperCase() === string;
}
@@ -83,6 +104,7 @@ module.exports = {
getNextNode,
getPreviousNode,
hasPrettierIgnore,
isLastNodeOfSiblings,
isNextNodeOfSomeType,
isNodeOfSomeType,
isParentOfSomeType,
+44 -2
View File
@@ -2,7 +2,7 @@
const parseSrcset = require("parse-srcset");
const {
builders: { ifBreak, join, line },
builders: { group, ifBreak, indent, join, line, softline },
} = require("../document");
function printImgSrcset(value) {
@@ -59,8 +59,50 @@ function printImgSrcset(value) {
);
}
const prefixDelimiters = ["__", "--", "_", "-"];
function getClassPrefix(className) {
const startIndex = className.search(/[^_-]/);
if (startIndex !== -1) {
for (const delimiter of prefixDelimiters) {
const delimiterIndex = className.indexOf(delimiter, startIndex);
if (delimiterIndex !== -1) {
return className.slice(0, delimiterIndex);
}
}
}
return className;
}
function printClassNames(value) {
return value.trim().split(/\s+/).join(" ");
const classNames = value.trim().split(/\s+/);
// Try keeping consecutive classes with the same prefix on one line.
const groupedByPrefix = [];
let previousPrefix;
for (let i = 0; i < classNames.length; i++) {
const prefix = getClassPrefix(classNames[i]);
if (
prefix !== previousPrefix &&
// "home-link" and "home-link_blue_yes" should be considered same-prefix
prefix !== classNames[i - 1]
) {
groupedByPrefix.push([]);
}
groupedByPrefix[groupedByPrefix.length - 1].push(classNames[i]);
previousPrefix = prefix;
}
return [
indent([
softline,
join(
line,
groupedByPrefix.map((classNames) => group(join(line, classNames)))
),
]),
softline,
];
}
module.exports = {
+1 -1
View File
@@ -68,7 +68,7 @@ function clean(ast, newObj, parent) {
ast.type === "MethodDefinition" ||
ast.type === "ClassProperty" ||
ast.type === "ClassMethod" ||
ast.type === "FieldDefinition" ||
ast.type === "PropertyDefinition" ||
ast.type === "TSDeclareMethod" ||
ast.type === "TSPropertySignature" ||
ast.type === "ObjectTypeProperty") &&
+1 -1
View File
@@ -459,7 +459,7 @@ function handleMethodNameComments({
precedingNode.type === "Decorator" &&
(enclosingNode.type === "ClassMethod" ||
enclosingNode.type === "ClassProperty" ||
enclosingNode.type === "FieldDefinition" ||
enclosingNode.type === "PropertyDefinition" ||
enclosingNode.type === "TSAbstractClassProperty" ||
enclosingNode.type === "TSAbstractMethodDefinition" ||
enclosingNode.type === "TSDeclareMethod" ||
+2 -2
View File
@@ -495,7 +495,7 @@ function needsParens(path, options) {
} else if (
name === "key" &&
(parent.type === "ClassProperty" ||
parent.type === "FieldDefinition") &&
parent.type === "PropertyDefinition") &&
parent.computed
) {
return false;
@@ -747,7 +747,7 @@ function isStatement(node) {
node.type === "ClassDeclaration" ||
node.type === "ClassMethod" ||
node.type === "ClassProperty" ||
node.type === "FieldDefinition" ||
node.type === "PropertyDefinition" ||
node.type === "ClassPrivateProperty" ||
node.type === "ContinueStatement" ||
node.type === "DebuggerStatement" ||
+3
View File
@@ -164,6 +164,9 @@ const messagesShouldThrow = new Set([
// FlowErrors.UnexpectedTypeParameterBeforeAsyncArrowFunction
// https://github.com/babel/babel/blob/a023b6456cac4505096028f91c5b78829955bfc2/packages/babel-parser/src/plugins/flow.js#L118
"Type parameters must come after the async keyword, e.g. instead of `<T> async () => {}`, use `async <T>() => {}`",
// Rethrow on omitted call arguments: foo("a", , "b");
// ErrorMessages.UnexpectedToken
"Unexpected token ','",
]);
function shouldRethrowRecoveredError(error) {
+1 -1
View File
@@ -97,7 +97,7 @@ function printBinaryishExpression(path, options, print) {
parent.type === "AssignmentExpression" ||
parent.type === "VariableDeclarator" ||
parent.type === "ClassProperty" ||
parent.type === "FieldDefinition" ||
parent.type === "PropertyDefinition" ||
parent.type === "TSAbstractClassProperty" ||
parent.type === "ClassPrivateProperty" ||
parent.type === "ObjectProperty" ||
+6
View File
@@ -6,6 +6,7 @@ const {
builders: { hardline, indent },
} = require("../../document");
const { hasComment, CommentCheckFlags, isNextLineEmpty } = require("../utils");
const { printHardlineAfterHeritage } = require("./class");
const { printBody } = require("./statement");
@@ -19,6 +20,11 @@ function printBlock(path, options, print) {
parts.push("static ");
}
if (node.type === "ClassBody" && isNonEmptyArray(node.body)) {
const parent = path.getParentNode();
parts.push(printHardlineAfterHeritage(parent));
}
parts.push("{");
const printed = printBlockBody(path, options, print);
if (printed) {
+15 -7
View File
@@ -1,6 +1,6 @@
"use strict";
const { isNonEmptyArray } = require("../../common/util");
const { isNonEmptyArray, createGroupIdMapper } = require("../../common/util");
const { printComments, printDanglingComments } = require("../../main/comments");
const {
builders: { join, line, hardline, softline, group, indent, ifBreak },
@@ -72,15 +72,16 @@ function printClass(path, options, print) {
if (groupMode) {
const printedExtends = extendsParts;
let printedPartsGroup;
if (shouldIndentOnlyHeritageClauses(n)) {
parts.push(
group(
partsGroup.concat(ifBreak(indent(printedExtends), printedExtends))
)
);
printedPartsGroup = [
...partsGroup,
ifBreak(indent(printedExtends), printedExtends),
];
} else {
parts.push(group(indent(partsGroup.concat(printedExtends))));
printedPartsGroup = indent([...partsGroup, printedExtends]);
}
parts.push(group(printedPartsGroup, { id: getHeritageGroupId(n) }));
} else {
parts.push(...partsGroup, ...extendsParts);
}
@@ -90,6 +91,12 @@ function printClass(path, options, print) {
return parts;
}
const getHeritageGroupId = createGroupIdMapper("heritageGroup");
function printHardlineAfterHeritage(node) {
return ifBreak(hardline, "", { groupId: getHeritageGroupId(node) });
}
function hasMultipleHeritage(node) {
return (
["superClass", "extends", "mixins", "implements"].filter(
@@ -222,4 +229,5 @@ module.exports = {
printClass,
printClassMethod,
printClassProperty,
printHardlineAfterHeritage,
};
+10 -1
View File
@@ -4,7 +4,12 @@ const { printDanglingComments } = require("../../main/comments");
const {
builders: { line, softline, group, indent, ifBreak, hardline },
} = require("../../document");
const { getLast, hasNewlineInRange, hasNewline } = require("../../common/util");
const {
getLast,
hasNewlineInRange,
hasNewline,
isNonEmptyArray,
} = require("../../common/util");
const {
shouldPrintComma,
hasComment,
@@ -17,6 +22,7 @@ const { locStart, locEnd } = require("../loc");
const { printOptionalToken, printTypeAnnotation } = require("./misc");
const { shouldHugFunctionParameters } = require("./function-parameters");
const { shouldHugType } = require("./type-annotation");
const { printHardlineAfterHeritage } = require("./class");
/** @typedef {import("../../document").Doc} Doc */
@@ -175,6 +181,9 @@ function printObject(path, options, print) {
]);
} else {
content = [
isFlowInterfaceLikeBody && isNonEmptyArray(n.properties)
? printHardlineAfterHeritage(parent)
: "",
leftBrace,
indent([options.bracketSpacing ? line : softline, ...props]),
ifBreak(
+2 -5
View File
@@ -23,11 +23,8 @@ function printPropertyKey(path, options, print) {
const parent = path.getParentNode();
const { key } = node;
if (
node.type === "ClassPrivateProperty" &&
// flow has `Identifier` key, and babel has `PrivateName` key
key.type === "Identifier"
) {
// flow has `Identifier` key, other parsers use `PrivateIdentifier` (ESTree) or `PrivateName`
if (node.type === "ClassPrivateProperty" && key.type === "Identifier") {
return ["#", path.call(print, "key")];
}
+13 -7
View File
@@ -1,6 +1,5 @@
"use strict";
const { getLast } = require("../../common/util");
const {
builders: { hardline },
} = require("../../document");
@@ -25,9 +24,7 @@ function printStatementSequence(path, options, print, property) {
const node = path.getValue();
const parts = [];
const isClassBody = node.type === "ClassBody";
const lastStatement = getLast(
node[property].filter(({ type }) => type !== "EmptyStatement")
);
const lastStatement = getLastStatement(node[property]);
path.each((path, index, statements) => {
const node = path.getValue();
@@ -62,7 +59,7 @@ function printStatementSequence(path, options, print, property) {
parts.push(";");
} else if (
node.type === "ClassProperty" ||
node.type === "FieldDefinition"
node.type === "PropertyDefinition"
) {
// `ClassBody` don't allow `EmptyStatement`,
// so we can use `statements` to get next node
@@ -84,6 +81,15 @@ function printStatementSequence(path, options, print, property) {
return parts;
}
function getLastStatement(statements) {
for (let i = statements.length - 1; i >= 0; i--) {
const statement = statements[i];
if (statement.type !== "EmptyStatement") {
return statement;
}
}
}
function statementNeedsASIProtection(path, options) {
const node = path.getNode();
@@ -145,7 +151,7 @@ function printSwitchCaseConsequent(path, options, print) {
* @returns {boolean}
*/
function classPropMayCauseASIProblems(node) {
if (node.type !== "ClassProperty" && node.type !== "FieldDefinition") {
if (node.type !== "ClassProperty" && node.type !== "PropertyDefinition") {
return false;
}
@@ -187,7 +193,7 @@ function classChildNeedsASIProtection(node) {
}
switch (node.type) {
case "ClassProperty":
case "FieldDefinition":
case "PropertyDefinition":
case "TSAbstractClassProperty":
return node.computed;
case "MethodDefinition": // Flow
+2 -7
View File
@@ -12,15 +12,10 @@ const {
shouldPrintComma,
getFunctionParameters,
} = require("../utils");
const { createGroupIdMapper } = require("../../common/util");
const { shouldHugType } = require("./type-annotation");
const typeParametersGroupIds = new WeakMap();
function getTypeParametersGroupId(node) {
if (!typeParametersGroupIds.has(node)) {
typeParametersGroupIds.set(node, Symbol("typeParameters"));
}
return typeParametersGroupIds.get(node);
}
const getTypeParametersGroupId = createGroupIdMapper("typeParameters");
function printTypeParameters(path, options, print, paramsKey) {
const n = path.getValue();
+5 -4
View File
@@ -109,7 +109,7 @@ function genericPrint(path, options, printPath, args) {
node.type === "ClassMethod" ||
node.type === "ClassPrivateMethod" ||
node.type === "ClassProperty" ||
node.type === "FieldDefinition" ||
node.type === "PropertyDefinition" ||
node.type === "TSAbstractClassProperty" ||
node.type === "ClassPrivateProperty" ||
node.type === "MethodDefinition" ||
@@ -836,7 +836,7 @@ function printPathNoParens(path, options, print, args) {
case "MethodDefinition":
return printClassMethod(path, options, print);
case "ClassProperty":
case "FieldDefinition":
case "PropertyDefinition":
case "ClassPrivateProperty":
return printClassProperty(path, options, print);
case "TemplateElement":
@@ -1090,9 +1090,10 @@ function printPathNoParens(path, options, print, args) {
case "TSThisType":
return "this";
case "PrivateIdentifier":
return ["#", path.call(print, "name")];
case "PrivateName":
// babel use `id`, meriyah use `name`
return ["#", path.call(print, n.id ? "id" : "name")];
return ["#", path.call(print, "id")];
case "InterpreterDirective":
parts.push("#!", n.value, hardline);
+9 -10
View File
@@ -834,18 +834,16 @@ function isFunctionCompositionArgs(args) {
}
let count = 0;
for (const arg of args) {
if (arg) {
if (isFunctionOrArrowExpression(arg)) {
count += 1;
if (count > 1) {
if (isFunctionOrArrowExpression(arg)) {
count += 1;
if (count > 1) {
return true;
}
} else if (isCallOrOptionalCallExpression(arg)) {
for (const childArg of arg.arguments) {
if (isFunctionOrArrowExpression(childArg)) {
return true;
}
} else if (isCallOrOptionalCallExpression(arg)) {
for (const childArg of arg.arguments) {
if (isFunctionOrArrowExpression(childArg)) {
return true;
}
}
}
}
}
@@ -907,6 +905,7 @@ function isSimpleCallArgument(node, depth) {
node.type === "ThisExpression" ||
node.type === "Super" ||
node.type === "PrivateName" ||
node.type === "PrivateIdentifier" ||
node.type === "ArgumentPlaceholder" ||
node.type === "Import"
) {
+1 -1
View File
@@ -27,7 +27,7 @@
const IMPORT_REGEX = /^import\s/;
const EXPORT_REGEX = /^export\s/;
const BLOCKS_REGEX = "[a-z][a-z0-9]*(\\.[a-z][a-z0-9]*)*|";
const COMMENT_REGEX = "<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->";
const COMMENT_REGEX = /<!---->|<!---?[^>-](?:-?[^-])*-->/;
const EMPTY_NEWLINE = "\n\n";
const isImport = (text) => IMPORT_REGEX.test(text);
+1 -1
View File
@@ -52,7 +52,7 @@ function htmlToJsx() {
mapAst(ast, (node, _index, [parent]) => {
if (
node.type !== "html" ||
node.value.match(mdx.COMMENT_REGEX) ||
mdx.COMMENT_REGEX.test(node.value) ||
INLINE_NODE_WRAPPER_TYPES.includes(parent.type)
) {
return node;
+3 -3
View File
@@ -721,7 +721,7 @@ function printChildren(path, options, print, events) {
options,
};
if (!shouldNotPrePrintHardline(childNode, data)) {
if (shouldPrePrintHardline(childNode, data)) {
parts.push(hardline);
// Can't find a case to pass `shouldPrePrintTripleHardline`
@@ -772,7 +772,7 @@ function isPrettierIgnore(node) {
return match === null ? false : match[1] ? match[1] : "next";
}
function shouldNotPrePrintHardline(node, data) {
function shouldPrePrintHardline(node, data) {
const isFirstNode = data.parts.length === 0;
const isInlineNode = INLINE_NODE_TYPES.includes(node.type);
@@ -780,7 +780,7 @@ function shouldNotPrePrintHardline(node, data) {
node.type === "html" &&
INLINE_NODE_WRAPPER_TYPES.includes(data.parentNode.type);
return isFirstNode || isInlineNode || isInlineHTML;
return !isFirstNode && !isInlineNode && !isInlineHTML;
}
function shouldPrePrintDoubleHardline(node, data) {
@@ -110,7 +110,9 @@ printWidth: 1
</div>
<div
class="common--error-message"
class="
common--error-message
"
test-hook="upper-error-message"
ng-if="
!$ctrl.showsFormBelowPlain() &&
@@ -3468,7 +3470,16 @@ printWidth: 1
}}
</label>
<div
class="Nemo possimus non voluptates dicta accusamus id quia"
class="
Nemo
possimus
non
voluptates
dicta
accusamus
id
quia
"
>
{{
copyTypes[
@@ -8051,7 +8062,9 @@ can be found in the LICENSE file at http://angular.io/license
</p>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -8072,7 +8085,9 @@ can be found in the LICENSE file at http://angular.io/license
[hidden]="isUnchanged")
</p>
<div
class="context"
class="
context
"
>
{{
title
@@ -8119,7 +8134,9 @@ can be found in the LICENSE file at http://angular.io/license
(keyup)="
(0)
"
class="context"
class="
context
"
>
Type
something:
@@ -8132,7 +8149,9 @@ can be found in the LICENSE file at http://angular.io/license
</div>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -8154,7 +8173,9 @@ can be found in the LICENSE file at http://angular.io/license
)
</p>
<div
class="context"
class="
context
"
>
<button
(click)="
@@ -8173,7 +8194,9 @@ can be found in the LICENSE file at http://angular.io/license
context
</p>
<div
class="context"
class="
context
"
>
<button
(click)="
@@ -8197,7 +8220,9 @@ can be found in the LICENSE file at http://angular.io/license
</p>
<!-- template hides the following; plenty of examples later -->
<div
class="context"
class="
context
"
>
<button
*ngFor="
@@ -8224,7 +8249,9 @@ can be found in the LICENSE file at http://angular.io/license
(#heroForm)
</p>
<div
class="context"
class="
context
"
>
<form
#heroForm
@@ -8239,7 +8266,9 @@ can be found in the LICENSE file at http://angular.io/license
</div>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -8257,7 +8286,9 @@ can be found in the LICENSE file at http://angular.io/license
<!--<img src="http://www.wpclipart.com/cartoon/people/hero/hero_silhoutte_T.png">-->
<!-- Public Domain terms of use: http://www.wpclipart.com/terms.html -->
<div
class="special"
class="
special
"
>
Mental
Model
@@ -8275,7 +8306,9 @@ can be found in the LICENSE file at http://angular.io/license
<div>
<!-- Normal HTML -->
<div
class="special"
class="
special
"
>
Mental
Model
@@ -8385,7 +8418,9 @@ can be found in the LICENSE file at http://angular.io/license
</button>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -8428,7 +8463,9 @@ can be found in the LICENSE file at http://angular.io/license
/>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -8505,7 +8542,9 @@ can be found in the LICENSE file at http://angular.io/license
</button>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -8667,7 +8706,9 @@ can be found in the LICENSE file at http://angular.io/license
</p>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -8761,7 +8802,9 @@ can be found in the LICENSE file at http://angular.io/license
</div>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -8777,7 +8820,11 @@ can be found in the LICENSE file at http://angular.io/license
<!-- standard class attribute setting -->
<div
class="bad curly special"
class="
bad
curly
special
"
>
Bad
curly
@@ -8786,7 +8833,11 @@ can be found in the LICENSE file at http://angular.io/license
<!-- reset/override all class names with a binding -->
<div
class="bad curly special"
class="
bad
curly
special
"
[class]="
badCurly
"
@@ -8810,7 +8861,9 @@ can be found in the LICENSE file at http://angular.io/license
<!-- binding to \`class.special\` trumps the class attribute -->
<div
class="special"
class="
special
"
[class.special]="
!isSpecial
"
@@ -8837,7 +8890,9 @@ can be found in the LICENSE file at http://angular.io/license
</div>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -8890,7 +8945,9 @@ can be found in the LICENSE file at http://angular.io/license
</button>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -8964,7 +9021,9 @@ can be found in the LICENSE file at http://angular.io/license
</app-big-hero-detail>
<div
class="parent-div"
class="
parent-div
"
(click)="
onClickMe(
$event
@@ -8975,7 +9034,9 @@ can be found in the LICENSE file at http://angular.io/license
Click
me
<div
class="child-div"
class="
child-div
"
>
Click
me
@@ -9022,7 +9083,9 @@ can be found in the LICENSE file at http://angular.io/license
</div>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -9079,7 +9142,9 @@ can be found in the LICENSE file at http://angular.io/license
</div>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -9151,7 +9216,9 @@ bindon-ngModel
(ngModelChange)="setUppercaseName($event)"
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -9275,7 +9342,11 @@ bindon-ngModel
</div>
<div
class="bad curly special"
class="
bad
curly
special
"
>
Bad
curly
@@ -9293,7 +9364,9 @@ bindon-ngModel
</div>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -9426,7 +9499,9 @@ bindon-ngModel
</div>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -9554,7 +9629,9 @@ bindon-ngModel
</div>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -9569,7 +9646,9 @@ bindon-ngModel
</h2>
<div
class="box"
class="
box
"
>
<div
*ngFor="
@@ -9584,7 +9663,9 @@ bindon-ngModel
<br />
<div
class="box"
class="
box
"
>
<!-- *ngFor w/ hero-detail Component -->
<app-hero-detail
@@ -9598,7 +9679,9 @@ bindon-ngModel
</div>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -9618,7 +9701,9 @@ bindon-ngModel
separator
</p>
<div
class="box"
class="
box
"
>
<div
*ngFor="
@@ -9645,7 +9730,9 @@ bindon-ngModel
separator
</p>
<div
class="box"
class="
box
"
>
<!-- Ex: "1 - Hercules" -->
<div
@@ -9666,7 +9753,9 @@ bindon-ngModel
</div>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -9709,7 +9798,9 @@ bindon-ngModel
trackBy
</p>
<div
class="box"
class="
box
"
>
<div
#noTrackBy
@@ -9748,7 +9839,9 @@ bindon-ngModel
trackBy
</p>
<div
class="box"
class="
box
"
>
<div
#withTrackBy
@@ -9795,7 +9888,9 @@ bindon-ngModel
separator
</p>
<div
class="box"
class="
box
"
>
<div
*ngFor="
@@ -9822,7 +9917,9 @@ bindon-ngModel
separator
</p>
<div
class="box"
class="
box
"
>
<div
*ngFor="
@@ -9849,7 +9946,9 @@ bindon-ngModel
separator
</p>
<div
class="box"
class="
box
"
>
<div
*ngFor="
@@ -9875,7 +9974,9 @@ bindon-ngModel
function
</p>
<div
class="box"
class="
box
"
>
<div
*ngFor="
@@ -9893,7 +9994,9 @@ bindon-ngModel
</div>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -9986,7 +10089,9 @@ bindon-ngModel
</div>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -10054,7 +10159,9 @@ bindon-ngModel
></app-hero-form>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -10107,7 +10214,9 @@ bindon-ngModel
}}
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -10185,7 +10294,9 @@ bindon-ngModel
</div>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -10282,7 +10393,9 @@ See console log:
</div>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -10319,7 +10432,9 @@ See console log:
</div>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -10371,7 +10486,9 @@ See console log:
</div>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -10433,7 +10550,9 @@ See console log:
</p>
<a
class="to-toc"
class="
to-toc
"
href="#toc"
>top</a
>
@@ -10456,13 +10575,17 @@ can be found in the LICENSE file at http://angular.io/license
#heroForm="ngForm"
>
<div
class="form-group"
class="
form-group
"
>
<label
for="name"
>Name
<input
class="form-control"
class="
form-control
"
name="name"
required
[(ngModel)]="
@@ -78,7 +78,8 @@ printWidth: 80
param
param
param
hashKey=hashValue as |blockParam|
hashKey=hashValue
as |blockParam|
}}
Hello
{{/block}}
@@ -43,6 +43,8 @@ printWidth: 80
<div></div>
<img />
<MyComponent @prop={{true}} @prop2={{true}} @prop3={{true}} @prop4={{true}} as |thing|></MyComponent>
=====================================output=====================================
<div class="attribute" {{modifier}} {{! comment}}>
Hello
@@ -80,5 +82,13 @@ printWidth: 80
<div></div>
<img />
<MyComponent
@prop={{true}}
@prop2={{true}}
@prop3={{true}}
@prop4={{true}}
as |thing|
/>
================================================================================
`;
@@ -34,3 +34,5 @@
<div></div>
<img />
<MyComponent @prop={{true}} @prop2={{true}} @prop3={{true}} @prop4={{true}} as |thing|></MyComponent>
@@ -433,125 +433,118 @@ sometimes{{nogaps}}areimportant<Hello></Hello>
</table>
=====================================output=====================================
<p>
Hi {{firstName}} {{
lastName
}} , welcome!
</p>
<p>Hi
{{firstName}}
{{lastName}}
, welcome!</p>
{{#component propA}}
for {{propB}} do {{propC}} f
for
{{propB}}
do
{{propC}}
f
{{/component}}
{{#component propA}}
for {{propB}}
<span>
name
</span>
do {{propC}} f
for
{{propB}}
<span>name</span>do
{{propC}}
f
{{/component}}
{{propA}} {{propB}}
{{propA}}
{{propB}}
{{propC}}{{propD}}
<span>
{{propE}} {{propF}}
</span>
<span>
{{propG}}{{propH}}
</span>
<span>{{propE}} {{propF}}</span>
<span>{{propG}}{{propH}}</span>
hey
<button>
Click here! Click here! Click here! Click here! Click here! Click here!
</button>
<button
>Click here! Click here! Click here! Click here! Click here! Click here!</button>
<button>
Click here! Click here! Click here! Click here! Click here! Click here!
</button>
<div>
<button>
Click here! Click here! Click here! Click here! Click here! Click here!
</button>
<button>
Click here! Click here! Click here! Click here! Click here! Click here!
</button>
<button
>Click here! Click here! Click here! Click here! Click here! Click here!</button><button
>Click here! Click here! Click here! Click here! Click here! Click here!</button>
</div>
<div>
<button>
Click here! Click here! Click here! Click here! Click here! Click here!
</button>
<button>
Click here! Click here! Click here! Click here! Click here! Click here!
</button>
<button
>Click here! Click here! Click here! Click here! Click here! Click here!</button>
<button
>Click here! Click here! Click here! Click here! Click here! Click here!</button>
</div>
<video src="brave.webm"></video>
<SomeComponent />
{{name}}
Some sentence with {{dynamic
}} expressions.
Some sentence with
{{dynamic}}
expressions.
sometimes{{nogaps
}}areimportant
<Hello />
}}areimportant<Hello />
{{name}} is your name
{{name}}
is your name
{{#block}}{{/block}}
{{#block}}
some {{text}}
some
{{text}}
{{/block}}
{{#block}}
some {{text}}
some
{{text}}
{{/block}}
<HelloWorld />
<HelloWorld>
some {{text}}
some
{{text}}
</HelloWorld>
<HelloWorld>
some {{text}}
some
{{text}}
</HelloWorld>
<div class="a list of classes">
</div>
<div class="a list of classes">
</div>
<span>
This is your name: {{name}}.
</span>
<span>
This is your name: {{name}} (employee)
</span>
<span>
This is your name: {{name}} ({{role}})
</span>
<span>This is your name:
{{name}}.</span>
<span>This is your name:
{{name}}
(employee)</span>
<span>This is your name:
{{name}}
({{role}})</span>
<span>123</span>
<span>
123
</span>
<span>
123
</span>
<span>
123
123</span>
<span>123
</span>
<span>
123
</span>
<div>123</div>
<div>
123
</div>
<div>
123
</div>
<div>
123
123</div>
<div>123
</div>
<div>
123
@@ -560,49 +553,23 @@ sometimes{{nogaps
<table>
<thead>
<tr>
<th>
A
</th>
<th>
B
</th>
<th>
C
</th>
<th>A</th>
<th>B</th>
<th>C</th>
</tr>
</thead>
</table>
<table>
<thead>
<tr>
<th>
A
</th>
<th>
B
</th>
<th>
C
</th>
</tr>
</thead>
</table>
<table><thead><tr><th>A</th><th
>B</th><th
>C</th></tr></thead></table>
<table>
<thead>
<tr>
<th>
A
</th>
<th>
B
</th>
<th>
C
</th>
<th> A </th>
<th> B </th>
<th> C </th>
</tr>
</thead>
</table>
@@ -613,5 +580,164 @@ sometimes{{nogaps
</tr>
</thead>
</table>
================================================================================
`;
exports[`snippet: #12 - {"htmlWhitespaceSensitivity":"strict","printWidth":40} format 1`] = `
====================================options=====================================
htmlWhitespaceSensitivity: "strict"
parsers: ["glimmer"]
printWidth: 40
| printWidth
=====================================input======================================
<div> </div>
=====================================output=====================================
<div> </div>
================================================================================
`;
exports[`snippet: #13 - {"htmlWhitespaceSensitivity":"strict","printWidth":40} format 1`] = `
====================================options=====================================
htmlWhitespaceSensitivity: "strict"
parsers: ["glimmer"]
printWidth: 40
| printWidth
=====================================input======================================
<div>   </div>
=====================================output=====================================
<div>   </div>
================================================================================
`;
exports[`snippet: #14 - {"htmlWhitespaceSensitivity":"strict","printWidth":40} format 1`] = `
====================================options=====================================
htmlWhitespaceSensitivity: "strict"
parsers: ["glimmer"]
printWidth: 40
| printWidth
=====================================input======================================
<div>    </div>
=====================================output=====================================
<div>    </div>
================================================================================
`;
exports[`snippet: #15 - {"htmlWhitespaceSensitivity":"strict","printWidth":40} format 1`] = `
====================================options=====================================
htmlWhitespaceSensitivity: "strict"
parsers: ["glimmer"]
printWidth: 40
| printWidth
=====================================input======================================
<div>     </div>
=====================================output=====================================
<div>     </div>
================================================================================
`;
exports[`snippet: #16 - {"htmlWhitespaceSensitivity":"strict","printWidth":40} format 1`] = `
====================================options=====================================
htmlWhitespaceSensitivity: "strict"
parsers: ["glimmer"]
printWidth: 40
| printWidth
=====================================input======================================
<img/> <img/>
=====================================output=====================================
<img /> <img />
================================================================================
`;
exports[`snippet: #17 - {"htmlWhitespaceSensitivity":"strict","printWidth":40} format 1`] = `
====================================options=====================================
htmlWhitespaceSensitivity: "strict"
parsers: ["glimmer"]
printWidth: 40
| printWidth
=====================================input======================================
<img/>   <img/>
=====================================output=====================================
<img />   <img />
================================================================================
`;
exports[`snippet: #18 - {"htmlWhitespaceSensitivity":"strict","printWidth":40} format 1`] = `
====================================options=====================================
htmlWhitespaceSensitivity: "strict"
parsers: ["glimmer"]
printWidth: 40
| printWidth
=====================================input======================================
<img/>    <img/>
=====================================output=====================================
<img />    <img />
================================================================================
`;
exports[`snippet: #19 - {"htmlWhitespaceSensitivity":"strict","printWidth":40} format 1`] = `
====================================options=====================================
htmlWhitespaceSensitivity: "strict"
parsers: ["glimmer"]
printWidth: 40
| printWidth
=====================================input======================================
<img/>     <img/>
=====================================output=====================================
<img />     <img />
================================================================================
`;
exports[`snippet: #20 - {"htmlWhitespaceSensitivity":"strict","printWidth":40} format 1`] = `
====================================options=====================================
htmlWhitespaceSensitivity: "strict"
parsers: ["glimmer"]
printWidth: 40
| printWidth
=====================================input======================================
<i />   |   <i />
=====================================output=====================================
<i></i>   |   <i></i>
================================================================================
`;
exports[`snippet: #21 - {"htmlWhitespaceSensitivity":"strict","printWidth":40} format 1`] = `
====================================options=====================================
htmlWhitespaceSensitivity: "strict"
parsers: ["glimmer"]
printWidth: 40
| printWidth
=====================================input======================================
<p><span>X</span>   or   <span>Y</span></p><p>X   or   Y</p>
=====================================output=====================================
<p><span>X</span>
  or  
<span>Y</span></p><p>X   or   Y</p>
================================================================================
`;
exports[`snippet: \`U+2005\` should format like \`U+005F\` not like \`U+0020\` - {"htmlWhitespaceSensitivity":"strict","printWidth":40} format 1`] = `
====================================options=====================================
htmlWhitespaceSensitivity: "strict"
parsers: ["glimmer"]
printWidth: 40
| printWidth
=====================================input======================================
<!-- U+2005 -->
<div>before<span> </span>afterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafter</div>
<!-- U+005F -->
<div>before<span>_</span>afterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafter</div>
<!-- U+0020 -->
<div>before<span> </span>afterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafter</div>
=====================================output=====================================
<!-- U+2005 -->
<div>before<span
> </span>afterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafter</div>
<!-- U+005F -->
<div>before<span
>_</span>afterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafter</div>
<!-- U+0020 -->
<div>before<span>
</span>afterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafter</div>
================================================================================
`;
@@ -1,8 +1,85 @@
const { outdent } = require("outdent");
run_spec(__dirname, ["glimmer"], {
htmlWhitespaceSensitivity: "ignore",
printWidth: 40,
});
run_spec(__dirname, ["glimmer"], {
htmlWhitespaceSensitivity: "strict",
printWidth: 40,
});
run_spec(
{
dirname: __dirname,
snippets: [
// single
// https://developer.mozilla.org/en-US/docs/Glossary/Whitespace#In_HTML
...["\u0009", "\u000C", "\u0020"].map((textContent) => ({
code: `<div>${textContent}</div>`,
name: "content",
output: "<div> </div>",
})),
...["\u000A", "\u000D"].map((textContent) => ({
code: `<div>${textContent}</div>`,
name: "content",
output: "<div>\n</div>",
})),
// many
{
code: "<div>\u0009\u000A\u000C\u000D\u0020</div>",
output: "<div>\n\n</div>",
},
// single
...["\u0009", "\u000C", "\u0020"].map((textContent) => ({
code: `<img/>${textContent}<img/>`,
name: "between",
output: "<img /> <img />",
})),
...["\u000A", "\u000D"].map((textContent) => ({
code: `<img/>${textContent}<img/>`,
name: "between",
output: "<img />\n<img />",
})),
// many
{
code: "<img/>\u0009\u000A\u000C\u000D\u0020<img/>",
output: "<img />\n\n<img />",
},
// non-space
...[
"\u2005",
" \u2005 ",
" \u2005\u2005 ",
" \u2005 \u2005 ",
].map((textContent) => `<div>${textContent}</div>`),
...[
"\u2005",
" \u2005 ",
" \u2005\u2005 ",
" \u2005 \u2005 ",
].map((textContent) => `<img/>${textContent}<img/>`),
"<i /> \u2005 | \u2005 <i />",
"<p><span>X</span> \u2005 or \u2005 <span>Y</span></p><p>X \u2005 or \u2005 Y</p>",
{
name: "`U+2005` should format like `U+005F` not like `U+0020`",
code: outdent`
<!-- U+2005 -->
<div>before<span>\u2005</span>afterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafter</div>
<!-- U+005F -->
<div>before<span>\u005F</span>afterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafter</div>
<!-- U+0020 -->
<div>before<span>\u0020</span>afterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafterafter</div>
`,
},
],
},
["glimmer"],
{
htmlWhitespaceSensitivity: "strict",
printWidth: 40,
}
);
@@ -234,6 +234,179 @@ printWidth: 80
================================================================================
`;
exports[`class-bem1.html format 1`] = `
====================================options=====================================
parsers: ["html"]
printWidth: 80
| printWidth
=====================================input======================================
<div class="ProviderMeasuresContainer__heading-row
d-flex
flex-column flex-lg-row
justify-content-start justify-content-lg-between
align-items-start align-items-lg-center">Foo</div>
<div class="a-bem-block a-bem-block--with-modifer ">
<div class="a-bem-block__element a-bem-block__element--with-modifer also-another-block" >
<div class="a-bem-block__element a-bem-block__element--with-modifer also-another-block__element">
</div></div> </div>
=====================================output=====================================
<div
class="
ProviderMeasuresContainer__heading-row
d-flex
flex-column flex-lg-row
justify-content-start justify-content-lg-between
align-items-start align-items-lg-center
"
>
Foo
</div>
<div class="a-bem-block a-bem-block--with-modifer">
<div
class="
a-bem-block__element a-bem-block__element--with-modifer
also-another-block
"
>
<div
class="
a-bem-block__element a-bem-block__element--with-modifer
also-another-block__element
"
></div>
</div>
</div>
================================================================================
`;
exports[`class-bem2.html format 1`] = `
====================================options=====================================
parsers: ["html"]
printWidth: 80
| printWidth
=====================================input======================================
<div class="news__header widget__content">
<div class="news__tabs">
<h1 class="news__tab-wrapper news__head-item">
<a
class="home-link home-link_blue_yes news__tab news__tab_selected_yes mix-tabber__tab mix-tabber__tab_selected_yes"
tabindex="0"
aria-selected="true"
aria-controls="news_panel_news"
data-key="news"
id="news_tab_news"
data-stat-link="news.tab.link.news"
data-stat-select="news.tab.select.news"
target="_blank"
role="tab"
href="https://yandex.ru/news?msid=1581089780.29024.161826.172442&mlid=1581088893.glob_225"
rel="noopener"
>...</a
>
</h1>
</div>
</div>
=====================================output=====================================
<div class="news__header widget__content">
<div class="news__tabs">
<h1 class="news__tab-wrapper news__head-item">
<a
class="
home-link home-link_blue_yes
news__tab news__tab_selected_yes
mix-tabber__tab mix-tabber__tab_selected_yes
"
tabindex="0"
aria-selected="true"
aria-controls="news_panel_news"
data-key="news"
id="news_tab_news"
data-stat-link="news.tab.link.news"
data-stat-select="news.tab.select.news"
target="_blank"
role="tab"
href="https://yandex.ru/news?msid=1581089780.29024.161826.172442&mlid=1581088893.glob_225"
rel="noopener"
>...</a
>
</h1>
</div>
</div>
================================================================================
`;
exports[`class-leading-dashes.html format 1`] = `
====================================options=====================================
parsers: ["html"]
printWidth: 80
| printWidth
=====================================input======================================
<my-tag class="__prefix1__foo __prefix1__bar __prefix2__foo prefix2 prefix2--something --prefix2--something-else"></my-tag>
<my-tag class="--prefix1--foo --prefix1--bar --prefix2--foo prefix2 prefix2__something __prefix2__something_else"></my-tag>
=====================================output=====================================
<my-tag
class="
__prefix1__foo __prefix1__bar
__prefix2__foo
prefix2 prefix2--something
--prefix2--something-else
"
></my-tag>
<my-tag
class="
--prefix1--foo --prefix1--bar
--prefix2--foo
prefix2 prefix2__something
__prefix2__something_else
"
></my-tag>
================================================================================
`;
exports[`class-many-short-names.html format 1`] = `
====================================options=====================================
parsers: ["html"]
printWidth: 80
| printWidth
=====================================input======================================
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">x</span>
</div>
=====================================output=====================================
<div
aria-hidden="true"
class="
border
rounded-1
flex-shrink-0
bg-gray
px-1
text-gray-light
ml-1
f6
d-none d-on-nav-focus
js-jump-to-badge-jump
"
>
Jump to
<span class="d-inline-block ml-1 v-align-middle">x</span>
</div>
================================================================================
`;
exports[`class-names.html format 1`] = `
====================================options=====================================
parsers: ["html"]
@@ -296,11 +469,41 @@ width="205px" alt="Yahoo"/></a></h1></div></div>
=====================================output=====================================
<img class="foo bar" />
<img class=" " />
<img class="" />
<img class />
<img
class="looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong a-long-long-long-long-long-class-name another-long-long-long-class-name foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar foo bar"
class="
looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooong
a-long-long-long-long-long-class-name
another-long-long-long-class-name
foo
bar
foo
bar
foo
bar
foo
bar
foo
bar
foo
bar
foo
bar
foo
bar
foo
bar
foo
bar
foo
bar
foo
bar
foo
bar
"
/>
<img class="{{ ...classes }}" />
@@ -313,10 +516,34 @@ width="205px" alt="Yahoo"/></a></h1></div></div>
<!-- from yahoo website -->
<div
id="header-wrapper"
class="Bgc(#fff) Bdbc(t) Bdbs(s) Bdbw(1px) D(tb) Pos(f) Tbl(f) W(100%) Z(4) has-scrolled_Bdc($c-fuji-grey-d) Scrolling_Bdc($c-fuji-grey-d) has-scrolled_Bxsh($headerShadow) Scrolling_Bxsh($headerShadow)"
class="
Bgc(#fff)
Bdbc(t)
Bdbs(s)
Bdbw(1px)
D(tb)
Pos(f)
Tbl(f)
W(100%)
Z(4)
has-scrolled_Bdc($c-fuji-grey-d)
Scrolling_Bdc($c-fuji-grey-d)
has-scrolled_Bxsh($headerShadow)
Scrolling_Bxsh($headerShadow)
"
>
<div
class="Bgc(#fff) M(a) Maw(1301px) Miw(1000px) Pb(12px) Pt(22px) Pos(r) TranslateZ(0) Z(6)"
class="
Bgc(#fff)
M(a)
Maw(1301px)
Miw(1000px)
Pb(12px)
Pt(22px)
Pos(r)
TranslateZ(0)
Z(6)
"
>
<h1 class="Fz(0) Pstart(15px) Pos(a)">
<a
@@ -339,6 +566,31 @@ width="205px" alt="Yahoo"/></a></h1></div></div>
================================================================================
`;
exports[`class-print-width-edge.html format 1`] = `
====================================options=====================================
parsers: ["html"]
printWidth: 80
| printWidth
=====================================input======================================
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 loooooooooooooooooooooooong">
</div>
=====================================output=====================================
<div
aria-hidden="true"
class="
border
rounded-1
flex-shrink-0
bg-gray
px-1
loooooooooooooooooooooooong
"
></div>
================================================================================
`;
exports[`dobule-quotes.html format 1`] = `
====================================options=====================================
parsers: ["html"]
+10
View File
@@ -0,0 +1,10 @@
<div class="ProviderMeasuresContainer__heading-row
d-flex
flex-column flex-lg-row
justify-content-start justify-content-lg-between
align-items-start align-items-lg-center">Foo</div>
<div class="a-bem-block a-bem-block--with-modifer ">
<div class="a-bem-block__element a-bem-block__element--with-modifer also-another-block" >
<div class="a-bem-block__element a-bem-block__element--with-modifer also-another-block__element">
</div></div> </div>
+21
View File
@@ -0,0 +1,21 @@
<div class="news__header widget__content">
<div class="news__tabs">
<h1 class="news__tab-wrapper news__head-item">
<a
class="home-link home-link_blue_yes news__tab news__tab_selected_yes mix-tabber__tab mix-tabber__tab_selected_yes"
tabindex="0"
aria-selected="true"
aria-controls="news_panel_news"
data-key="news"
id="news_tab_news"
data-stat-link="news.tab.link.news"
data-stat-select="news.tab.select.news"
target="_blank"
role="tab"
href="https://yandex.ru/news?msid=1581089780.29024.161826.172442&mlid=1581088893.glob_225"
rel="noopener"
>...</a
>
</h1>
</div>
</div>
@@ -0,0 +1,3 @@
<my-tag class="__prefix1__foo __prefix1__bar __prefix2__foo prefix2 prefix2--something --prefix2--something-else"></my-tag>
<my-tag class="--prefix1--foo --prefix1--bar --prefix2--foo prefix2 prefix2__something __prefix2__something_else"></my-tag>
@@ -0,0 +1,4 @@
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 text-gray-light ml-1 f6 d-none d-on-nav-focus js-jump-to-badge-jump">
Jump to
<span class="d-inline-block ml-1 v-align-middle">x</span>
</div>
@@ -0,0 +1,2 @@
<div aria-hidden="true" class="border rounded-1 flex-shrink-0 bg-gray px-1 loooooooooooooooooooooooong">
</div>
@@ -3316,14 +3316,18 @@ printWidth: 1
<ul>
123
<li
class="foo"
class="
foo
"
id="bar"
>
First
</li>
456
<li
class="baz"
class="
baz
"
>
Second
</li>
@@ -3465,13 +3469,25 @@ printWidth: 1
</div>
<span>
<i
class="fa fa-refresh fa-spin"
class="
fa
fa-refresh
fa-spin
"
/>
<i
class="fa fa-refresh fa-spin"
class="
fa
fa-refresh
fa-spin
"
/>
<i
class="fa fa-refresh fa-spin"
class="
fa
fa-refresh
fa-spin
"
/>
</span>
@@ -193,6 +193,50 @@ conubia nostra, per inceptos himenaeos. Donec in ornare velit.</p>
================================================================================
`;
exports[`nested-inline-without-whitespace.html format 1`] = `
====================================options=====================================
parsers: ["html"]
printWidth: 80
| printWidth
=====================================input======================================
<a href="/wiki/Help:IPA/English" title="Help:IPA/English">/<span style="border-bottom:1px dotted"><span title="/ˌ/: secondary stress follows">ˌ</span
><span title="/ɪ/: &#39;i&#39; in &#39;kit&#39;">ɪ</span
><span title="&#39;l&#39; in &#39;lie&#39;">l</span
><span title="/ə/: &#39;a&#39; in &#39;about&#39;">ə</span
><span title="/ˈ/: primary stress follows">ˈ</span
><span title="&#39;n&#39; in &#39;nigh&#39;">n</span
><span title="/ɔɪ/: &#39;oi&#39; in &#39;choice&#39;">ɔɪ</span></span>/</a>
<span class="word"><span class="syllable"><span class="letter vowel">i</span><span class="letter consonant">p</span></span
><span class="syllable"><span class="letter consonant onset">s</span><span class="letter vowel">u</span><span class="letter consonant">m</span></span></span>
=====================================output=====================================
<a href="/wiki/Help:IPA/English" title="Help:IPA/English"
>/<span style="border-bottom: 1px dotted"
><span title="/ˌ/: secondary stress follows">ˌ</span
><span title="/ɪ/: &#39;i&#39; in &#39;kit&#39;">ɪ</span
><span title="&#39;l&#39; in &#39;lie&#39;">l</span
><span title="/ə/: &#39;a&#39; in &#39;about&#39;">ə</span
><span title="/ˈ/: primary stress follows">ˈ</span
><span title="&#39;n&#39; in &#39;nigh&#39;">n</span
><span title="/ɔɪ/: &#39;oi&#39; in &#39;choice&#39;">ɔɪ</span></span
>/</a
>
<span class="word"
><span class="syllable"
><span class="letter vowel">i</span
><span class="letter consonant">p</span></span
><span class="syllable"
><span class="letter consonant onset">s</span
><span class="letter vowel">u</span
><span class="letter consonant">m</span></span
></span
>
================================================================================
`;
exports[`non-breaking-whitespace.html format 1`] = `
====================================options=====================================
parsers: ["html"]
@@ -0,0 +1,10 @@
<a href="/wiki/Help:IPA/English" title="Help:IPA/English">/<span style="border-bottom:1px dotted"><span title="/ˌ/: secondary stress follows">ˌ</span
><span title="/ɪ/: &#39;i&#39; in &#39;kit&#39;">ɪ</span
><span title="&#39;l&#39; in &#39;lie&#39;">l</span
><span title="/ə/: &#39;a&#39; in &#39;about&#39;">ə</span
><span title="/ˈ/: primary stress follows">ˈ</span
><span title="&#39;n&#39; in &#39;nigh&#39;">n</span
><span title="/ɔɪ/: &#39;oi&#39; in &#39;choice&#39;">ɔɪ</span></span>/</a>
<span class="word"><span class="syllable"><span class="letter vowel">i</span><span class="letter consonant">p</span></span
><span class="syllable"><span class="letter consonant onset">s</span><span class="letter vowel">u</span><span class="letter consonant">m</span></span></span>
@@ -0,0 +1,28 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`null-arguments-item.js [babel] format 1`] = `
"Unexpected token ',' (1:12)
> 1 | foor('a', , 'b');
| ^
2 | foo('looooooooooooooooooooooooooooooooooooooooooooooong', , 'looooooooooooooooooooooooooooooooooooooooooooooong');
3 | foo(\\"a\\",
4 | //1"
`;
exports[`null-arguments-item.js [espree] format 1`] = `
"Unexpected token , (1:11)
> 1 | foor('a', , 'b');
| ^
2 | foo('looooooooooooooooooooooooooooooooooooooooooooooong', , 'looooooooooooooooooooooooooooooooooooooooooooooong');
3 | foo(\\"a\\",
4 | //1"
`;
exports[`null-arguments-item.js [meriyah] format 1`] = `
"[1:11]: Unexpected token: ',' (1:11)
> 1 | foor('a', , 'b');
| ^
2 | foo('looooooooooooooooooooooooooooooooooooooooooooooong', , 'looooooooooooooooooooooooooooooooooooooooooooooong');
3 | foo(\\"a\\",
4 | //1"
`;
@@ -1,5 +1,6 @@
run_spec(__dirname, ["babel"], {
errors: {
babel: true,
espree: true,
meriyah: true,
},
@@ -1,50 +0,0 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`null-arguments-item.js [espree] format 1`] = `
"Unexpected token , (1:11)
> 1 | foor('a', , 'b');
| ^
2 | foo('looooooooooooooooooooooooooooooooooooooooooooooong', , 'looooooooooooooooooooooooooooooooooooooooooooooong');
3 | foo(\\"a\\",
4 | //1"
`;
exports[`null-arguments-item.js [meriyah] format 1`] = `
"[1:11]: Unexpected token: ',' (1:11)
> 1 | foor('a', , 'b');
| ^
2 | foo('looooooooooooooooooooooooooooooooooooooooooooooong', , 'looooooooooooooooooooooooooooooooooooooooooooooong');
3 | foo(\\"a\\",
4 | //1"
`;
exports[`null-arguments-item.js format 1`] = `
====================================options=====================================
parsers: ["babel"]
printWidth: 80
| printWidth
=====================================input======================================
foor('a', , 'b');
foo('looooooooooooooooooooooooooooooooooooooooooooooong', , 'looooooooooooooooooooooooooooooooooooooooooooooong');
foo("a",
//1
, "b");
foo("a", /* comment */, "b");
=====================================output=====================================
foor("a", , "b");
foo(
"looooooooooooooooooooooooooooooooooooooooooooooong",
,
"looooooooooooooooooooooooooooooooooooooooooooooong"
);
foo(
"a",
,
//1
"b"
);
foo("a" /* comment */, , "b");
================================================================================
`;
@@ -146,7 +146,8 @@ class c extends d {
}
class C2 // comment
extends Base {
extends Base
{
foo() {}
}
@@ -1,5 +1,53 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`complex.js format 1`] = `
====================================options=====================================
parsers: ["babel", "flow", "typescript"]
printWidth: 80
| printWidth
=====================================input======================================
class loooooooooooooooooooong1 extends foooooooo(foooooooo(foooooooo(foooooooo(foooooooo(foooooooo(foooooooo(foooooooo()))))))) {}
class loooooooooooooooooooong2 extends function (make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
} {}
class loooooooooooooooooooong3 extends class {
cconstructor(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
}
} {}
=====================================output=====================================
class loooooooooooooooooooong1 extends foooooooo(
foooooooo(foooooooo(foooooooo(foooooooo(foooooooo(foooooooo(foooooooo()))))))
) {}
class loooooooooooooooooooong2 extends function (make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
} {}
class loooooooooooooooooooong3 extends class {
cconstructor(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
}
} {}
================================================================================
`;
exports[`extends.js format 1`] = `
====================================options=====================================
parsers: ["babel", "flow", "typescript"]
+17
View File
@@ -0,0 +1,17 @@
class loooooooooooooooooooong1 extends foooooooo(foooooooo(foooooooo(foooooooo(foooooooo(foooooooo(foooooooo(foooooooo()))))))) {}
class loooooooooooooooooooong2 extends function (make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
} {}
class loooooooooooooooooooong3 extends class {
cconstructor(make, model, year, owner) {
this.make = make;
this.model = model;
this.year = year;
this.owner = owner;
}
} {}
@@ -51,3 +51,71 @@ const f3 = function* () {};
================================================================================
`;
exports[`async.js format 1`] = `
====================================options=====================================
parsers: ["babel", "typescript", "flow"]
printWidth: 80
| printWidth
=====================================input======================================
// https://github.com/meriyah/meriyah/commit/f21882c312284572ac6d7e7630c4a677d6caed92
const f = async function * (source, block, opts) {
for await (const entry of source) {
yield async function () {
const cid = await persist(entry.content.serialize(), block, opts)
return {
cid,
path: entry.path,
unixfs: UnixFS.unmarshal(entry.content.Data),
node: entry.content
}
}
}
}
=====================================output=====================================
// https://github.com/meriyah/meriyah/commit/f21882c312284572ac6d7e7630c4a677d6caed92
const f = async function* (source, block, opts) {
for await (const entry of source) {
yield async function () {
const cid = await persist(entry.content.serialize(), block, opts);
return {
cid,
path: entry.path,
unixfs: UnixFS.unmarshal(entry.content.Data),
node: entry.content,
};
};
}
};
================================================================================
`;
exports[`function-name-starts-with-get.js format 1`] = `
====================================options=====================================
parsers: ["babel", "typescript", "flow"]
printWidth: 80
| printWidth
=====================================input======================================
// https://github.com/meriyah/meriyah/issues/164
function get() {}
function* getData() {
return yield get();
}
=====================================output=====================================
// https://github.com/meriyah/meriyah/issues/164
function get() {}
function* getData() {
return yield get();
}
================================================================================
`;
+15
View File
@@ -0,0 +1,15 @@
// https://github.com/meriyah/meriyah/commit/f21882c312284572ac6d7e7630c4a677d6caed92
const f = async function * (source, block, opts) {
for await (const entry of source) {
yield async function () {
const cid = await persist(entry.content.serialize(), block, opts)
return {
cid,
path: entry.path,
unixfs: UnixFS.unmarshal(entry.content.Data),
node: entry.content
}
}
}
}
@@ -0,0 +1,7 @@
// https://github.com/meriyah/meriyah/issues/164
function get() {}
function* getData() {
return yield get();
}
@@ -48,6 +48,13 @@ assert(rest[1] === 3);
================================================================================
`;
exports[`invalid-tuple-holes.js [babel] format 1`] = `
"Unexpected token ',' (1:4)
> 1 | #[,]
| ^
2 | "
`;
exports[`invalid-tuple-holes.js [espree] format 1`] = `
"Unexpected character '#' (1:1)
> 1 | #[,]
@@ -62,20 +69,6 @@ exports[`invalid-tuple-holes.js [meriyah] format 1`] = `
2 | "
`;
exports[`invalid-tuple-holes.js format 1`] = `
====================================options=====================================
parsers: ["babel"]
printWidth: 80
| printWidth
=====================================input======================================
#[,]
=====================================output=====================================
#[,];
================================================================================
`;
exports[`syntax.js [espree] format 1`] = `
"Unexpected character '#' (1:1)
> 1 | #[]
+7 -1
View File
@@ -1 +1,7 @@
run_spec(__dirname, ["babel"], { errors: { espree: true, meriyah: true } });
run_spec(__dirname, ["babel"], {
errors: {
babel: ["invalid-tuple-holes.js"],
espree: true,
meriyah: true,
},
});
@@ -1,16 +1,5 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`arrow.js [meriyah] format 1`] = `
"[3:14]: Expected ')' (3:14)
1 | function *f() {
2 | (yield a => a);
> 3 | (yield async a => a);
| ^
4 | (yield async (a) => a);
5 | }
6 | "
`;
exports[`arrow.js format 1`] = `
====================================options=====================================
parsers: ["babel", "typescript"]
+1 -3
View File
@@ -1,3 +1 @@
run_spec(__dirname, ["babel", "typescript"], {
errors: { meriyah: ["arrow.js"] },
});
run_spec(__dirname, ["babel", "typescript"]);
@@ -83,7 +83,8 @@ b // comment-b2
=====================================output=====================================
class a1
extends b // comment
implements z {
implements z
{
constructor() {}
}
@@ -95,7 +96,8 @@ class a2 extends b implements z {
class a3
extends b
// comment
implements z, y {
implements z, y
{
constructor() {}
}
@@ -103,7 +105,8 @@ class a4
extends b
implements
z, // comment
y {
y
{
constructor() {}
}
@@ -111,7 +114,8 @@ class a5
extends b
implements
z, // comment-z
y {
y
{
// comment-y
constructor() {}
}
@@ -122,7 +126,8 @@ class a6
implements
z, // comment-z2
// comment-y1
y {
y
{
// comment-y2
constructor() {}
}
@@ -133,7 +138,8 @@ class a7
implements
z, // comment-z2
// comment-y1
y {
y
{
// comment-y2
// comment-y3
//comment-body
@@ -146,7 +152,8 @@ class a8
implements
z, // comment-z2
// comment-y1
y {
y
{
// comment-y2
constructor() {}
}
@@ -159,7 +166,8 @@ class a9
implements
z, // comment-z2
// comment-y1
y {
y
{
// comment-y2
constructor() {}
}
@@ -188,7 +196,8 @@ extends B<T> // 3
=====================================output=====================================
declare class a // 1
// extends b // 2
implements z, x {
implements z, x
{
// 3
doo: boolean;
}
@@ -233,13 +242,15 @@ class G1<T> implements IPoly<T> {
}
class G2<T> // g2
implements IPoly<T> {
implements IPoly<T>
{
x: T;
}
class G3<T> // g3
extends U
implements IPoly<T> {
implements IPoly<T>
{
x: T;
}
@@ -247,7 +258,8 @@ class G4<
T // g4
>
extends U
implements IPoly<T> {
implements IPoly<T>
{
x: T;
}
@@ -45,7 +45,8 @@ export class VisTimelineComponent2
=====================================output=====================================
class MyContractSelectionWidget
extends React.Component<void, MyContractSelectionWidgetPropsType, void>
implements SomethingLarge {
implements SomethingLarge
{
method() {}
}
@@ -89,3 +90,63 @@ export class VisTimelineComponent2
================================================================================
`;
exports[`break-heritage.ts format 1`] = `
====================================options=====================================
parsers: ["typescript", "babel", "flow"]
printWidth: 80
| printWidth
=====================================input======================================
class loooooooooooooooooooong extends looooooooooooooooooong implements loooooooooooooooooooong {
// leading comment
property: string;
}
class loooooooooooooooooooong extends looooooooooooooooooong implements loooooooooooooooooooong {
property: string;
}
class loooooooooooooooooooong extends looooooooooooooooooong implements loooooooooooooooooooong {
property: string;
}
class loooooooooooooooooooong extends looooooooooooooooooong implements loooooooooooooooooooong, loooooooooooooooooooong, loooooooooooooooooooong {
property: string;
}
=====================================output=====================================
class loooooooooooooooooooong
extends looooooooooooooooooong
implements loooooooooooooooooooong
{
// leading comment
property: string;
}
class loooooooooooooooooooong
extends looooooooooooooooooong
implements loooooooooooooooooooong
{
property: string;
}
class loooooooooooooooooooong
extends looooooooooooooooooong
implements loooooooooooooooooooong
{
property: string;
}
class loooooooooooooooooooong
extends looooooooooooooooooong
implements
loooooooooooooooooooong,
loooooooooooooooooooong,
loooooooooooooooooooong
{
property: string;
}
================================================================================
`;
@@ -0,0 +1,17 @@
class loooooooooooooooooooong extends looooooooooooooooooong implements loooooooooooooooooooong {
// leading comment
property: string;
}
class loooooooooooooooooooong extends looooooooooooooooooong implements loooooooooooooooooooong {
property: string;
}
class loooooooooooooooooooong extends looooooooooooooooooong implements loooooooooooooooooooong {
property: string;
}
class loooooooooooooooooooong extends looooooooooooooooooong implements loooooooooooooooooooong, loooooooooooooooooooong, loooooooooooooooooooong {
property: string;
}
+3 -3
View File
@@ -2,7 +2,7 @@
"license": "MIT",
"scripts": {
"build": "webpack && docusaurus-build",
"start": "concurrently \"docusaurus-start\" \"webpack -d -w\"",
"start": "concurrently \"docusaurus-start\" \"webpack --mode=development --watch\"",
"svgo": "svgo --pretty --indent=2 --config=svgo.yml",
"svgo-all": "find static | grep '\\.svg$' | xargs -Iz -n 1 yarn svgo z",
"update-stable-docs": "rm -rf ./versioned_docs ./versions.json && docusaurus-version stable"
@@ -21,9 +21,9 @@
"babel-loader": "8.2.2",
"concurrently": "5.3.0",
"docusaurus": "1.14.6",
"js-yaml": "3.14.1",
"js-yaml": "4.0.0",
"svgo": "1.3.2",
"webpack": "5.11.1",
"webpack": "5.15.0",
"webpack-cli": "4.3.1"
}
}
+1 -1
View File
@@ -8,7 +8,7 @@ export default function ({ version }) {
let href;
if (match) {
href = `pull/${match[1]}`;
} else if (version.match(/\.0$/)) {
} else if (/\.0$/.test(version)) {
href = `releases/tag/${version}`;
} else {
href = `blob/master/CHANGELOG.md#${version.replace(/\./g, "")}`;
+1
View File
@@ -37,6 +37,7 @@ function getMarkdownSyntax(options) {
case "babel-flow":
case "flow":
case "espree":
case "meriyah":
return "jsx";
case "babel-ts":
case "typescript":
+1 -1
View File
@@ -4,7 +4,7 @@
const path = require("path");
const fs = require("fs");
const parseYaml = require("js-yaml").safeLoad;
const { load: parseYaml } = require("js-yaml");
const PACKAGE = require("../package.json");
const GITHUB_URL = `https://github.com/${PACKAGE.repository}`;
+1 -1
View File
@@ -23,7 +23,7 @@ window.addEventListener("load", () => {
logoWrapper.addEventListener("dragstart", handleLogoDrag);
lastDash.addEventListener("animationend", (event) => {
if (event.animationName.match(/roll/)) {
if (/roll/.test(event.animationName)) {
logo.classList.remove("rolling");
}
});
@@ -78,6 +78,10 @@ const user = {
[stylesheets]: https://github.com/prettier/prettier/issues/74#issuecomment-275262094
[keyed methods]: https://github.com/prettier/prettier/pull/495#issuecomment-275745434
> ♻️ **A note on formatting reversibility:** The semi-manual formatting for object literals is in fact a workaround, not a feature. It was implemented only because at the time a good heuristic wasn’t found and an urgent fix was needed. However, as a general strategy, Prettier avoids _non-reversible_ formatting like that, so the team is still looking for heuristics that would allow either to remove this behavior completely or at least to reduce the number of situations where it’s applied.
>
> What does **reversible** mean? Once an object literal becomes multiline, Prettier won’t collapse it back. If in Prettier-formatted code, we add a property to an object literal, run Prettier, then change our mind, remove the added property, and then run Prettier again, we might end up with a formatting not identical to the initial one. This useless change might even get included in a commit, which is exactly the kind of situation Prettier was created to prevent.
### Decorators
Just like with objects, decorators are used for a lot of different things. Sometimes it makes sense to write decorators _above_ the line they're decorating, sometimes it’s nicer if they're on the _same_ line. We haven’t been able to find a good rule for this, so Prettier keeps your decorator positioned like you wrote them (if they fit on the line). This isn’t ideal, but a pragmatic solution to a difficult problem.
+162 -157
View File
@@ -1101,149 +1101,125 @@
resolved "https://registry.yarnpkg.com/@types/q/-/q-1.5.2.tgz#690a1475b84f2a884fd07cd797c00f5f31356ea8"
integrity sha512-ce5d3q03Ex0sy4R14722Rmt6MT07Ua+k4FwDfdcToYJcMKNtRVQvJ6JCAPdAmAnbRb6CsX6aYb9m96NGod9uTw==
"@webassemblyjs/ast@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.9.1.tgz#76c6937716d68bf1484c15139f5ed30b9abc8bb4"
integrity sha512-uMu1nCWn2Wxyy126LlGqRVlhdTOsO/bsBRI4dNq3+6SiSuRKRQX6ejjKgh82LoGAPSq72lDUiQ4FWVaf0PecYw==
"@webassemblyjs/ast@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ast/-/ast-1.11.0.tgz#a5aa679efdc9e51707a4207139da57920555961f"
integrity sha512-kX2W49LWsbthrmIRMbQZuQDhGtjyqXfEmmHyEi4XWnSZtPmxY0+3anPIzsnRb45VH/J55zlOfWvZuY47aJZTJg==
dependencies:
"@webassemblyjs/helper-module-context" "1.9.1"
"@webassemblyjs/helper-wasm-bytecode" "1.9.1"
"@webassemblyjs/wast-parser" "1.9.1"
"@webassemblyjs/helper-numbers" "1.11.0"
"@webassemblyjs/helper-wasm-bytecode" "1.11.0"
"@webassemblyjs/floating-point-hex-parser@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.9.1.tgz#9eb0ff90a1cdeef51f36ba533ed9f06b5cdadd09"
integrity sha512-5VEKu024RySmLKTTBl9q1eO/2K5jk9ZS+2HXDBLA9s9p5IjkaXxWiDb/+b7wSQp6FRdLaH1IVGIfOex58Na2pg==
"@webassemblyjs/floating-point-hex-parser@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.0.tgz#34d62052f453cd43101d72eab4966a022587947c"
integrity sha512-Q/aVYs/VnPDVYvsCBL/gSgwmfjeCb4LW8+TMrO3cSzJImgv8lxxEPM2JA5jMrivE7LSz3V+PFqtMbls3m1exDA==
"@webassemblyjs/helper-api-error@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.9.1.tgz#ad89015c4246cd7f5ed0556700237f8b9c2c752f"
integrity sha512-y1lGmfm38djrScwpeL37rRR9f1D6sM8RhMpvM7CYLzOlHVboouZokXK/G88BpzW0NQBSvCCOnW5BFhten4FPfA==
"@webassemblyjs/helper-api-error@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.0.tgz#aaea8fb3b923f4aaa9b512ff541b013ffb68d2d4"
integrity sha512-baT/va95eXiXb2QflSx95QGT5ClzWpGaa8L7JnJbgzoYeaA27FCvuBXU758l+KXWRndEmUXjP0Q5fibhavIn8w==
"@webassemblyjs/helper-buffer@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.9.1.tgz#186e67ac25f9546ea7939759413987f157524133"
integrity sha512-uS6VSgieHbk/m4GSkMU5cqe/5TekdCzQso4revCIEQ3vpGZgqSSExi4jWpTWwDpAHOIAb1Jfrs0gUB9AA4n71w==
"@webassemblyjs/helper-buffer@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.0.tgz#d026c25d175e388a7dbda9694e91e743cbe9b642"
integrity sha512-u9HPBEl4DS+vA8qLQdEQ6N/eJQ7gT7aNvMIo8AAWvAl/xMrcOSiI2M0MAnMCy3jIFke7bEee/JwdX1nUpCtdyA==
"@webassemblyjs/helper-code-frame@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-code-frame/-/helper-code-frame-1.9.1.tgz#aab177b7cc87a318a8f8664ad68e2c3828ebc42b"
integrity sha512-ZQ2ZT6Evk4DPIfD+92AraGYaFIqGm4U20e7FpXwl7WUo2Pn1mZ1v8VGH8i+Y++IQpxPbQo/UyG0Khs7eInskzA==
"@webassemblyjs/helper-numbers@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.0.tgz#7ab04172d54e312cc6ea4286d7d9fa27c88cd4f9"
integrity sha512-DhRQKelIj01s5IgdsOJMKLppI+4zpmcMQ3XboFPLwCpSNH6Hqo1ritgHgD0nqHeSYqofA6aBN/NmXuGjM1jEfQ==
dependencies:
"@webassemblyjs/wast-printer" "1.9.1"
"@webassemblyjs/floating-point-hex-parser" "1.11.0"
"@webassemblyjs/helper-api-error" "1.11.0"
"@xtuc/long" "4.2.2"
"@webassemblyjs/helper-fsm@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-fsm/-/helper-fsm-1.9.1.tgz#527e91628e84d13d3573884b3dc4c53a81dcb911"
integrity sha512-J32HGpveEqqcKFS0YbgicB0zAlpfIxJa5MjxDxhu3i5ltPcVfY5EPvKQ1suRguFPehxiUs+/hfkwPEXom/l0lw==
"@webassemblyjs/helper-wasm-bytecode@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.0.tgz#85fdcda4129902fe86f81abf7e7236953ec5a4e1"
integrity sha512-MbmhvxXExm542tWREgSFnOVo07fDpsBJg3sIl6fSp9xuu75eGz5lz31q7wTLffwL3Za7XNRCMZy210+tnsUSEA==
"@webassemblyjs/helper-module-context@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-module-context/-/helper-module-context-1.9.1.tgz#778670b3d471f7cf093d1e7c0dde431b54310e16"
integrity sha512-IEH2cMmEQKt7fqelLWB5e/cMdZXf2rST1JIrzWmf4XBt3QTxGdnnLvV4DYoN8pJjOx0VYXsWg+yF16MmJtolZg==
"@webassemblyjs/helper-wasm-section@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.0.tgz#9ce2cc89300262509c801b4af113d1ca25c1a75b"
integrity sha512-3Eb88hcbfY/FCukrg6i3EH8H2UsD7x8Vy47iVJrP967A9JGqgBVL9aH71SETPx1JrGsOUVLo0c7vMCN22ytJew==
dependencies:
"@webassemblyjs/ast" "1.9.1"
"@webassemblyjs/ast" "1.11.0"
"@webassemblyjs/helper-buffer" "1.11.0"
"@webassemblyjs/helper-wasm-bytecode" "1.11.0"
"@webassemblyjs/wasm-gen" "1.11.0"
"@webassemblyjs/helper-wasm-bytecode@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.9.1.tgz#563f59bcf409ccf469edde168b9426961ffbf6df"
integrity sha512-i2rGTBqFUcSXxyjt2K4vm/3kkHwyzG6o427iCjcIKjOqpWH8SEem+xe82jUk1iydJO250/CvE5o7hzNAMZf0dQ==
"@webassemblyjs/helper-wasm-section@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.9.1.tgz#f7988f94c12b01b99a16120cb01dc099b00e4798"
integrity sha512-FetqzjtXZr2d57IECK+aId3D0IcGweeM0CbAnJHkYJkcRTHP+YcMb7Wmc0j21h5UWBpwYGb9dSkK/93SRCTrGg==
dependencies:
"@webassemblyjs/ast" "1.9.1"
"@webassemblyjs/helper-buffer" "1.9.1"
"@webassemblyjs/helper-wasm-bytecode" "1.9.1"
"@webassemblyjs/wasm-gen" "1.9.1"
"@webassemblyjs/ieee754@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.9.1.tgz#3b715871ca7d75784717cf9ceca9d7b81374b8af"
integrity sha512-EvTG9M78zP1MmkBpUjGQHZc26DzPGZSLIPxYHCjQsBMo60Qy2W34qf8z0exRDtxBbRIoiKa5dFyWer/7r1aaSQ==
"@webassemblyjs/ieee754@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/ieee754/-/ieee754-1.11.0.tgz#46975d583f9828f5d094ac210e219441c4e6f5cf"
integrity sha512-KXzOqpcYQwAfeQ6WbF6HXo+0udBNmw0iXDmEK5sFlmQdmND+tr773Ti8/5T/M6Tl/413ArSJErATd8In3B+WBA==
dependencies:
"@xtuc/ieee754" "^1.2.0"
"@webassemblyjs/leb128@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.9.1.tgz#b2ecaa39f9e8277cc9c707c1ca8b2aa7b27d0b72"
integrity sha512-Oc04ub0vFfLnF+2/+ki3AE+anmW4sv9uNBqb+79fgTaPv6xJsOT0dhphNfL3FrME84CbX/D1T9XT8tjFo0IIiw==
"@webassemblyjs/leb128@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/leb128/-/leb128-1.11.0.tgz#f7353de1df38aa201cba9fb88b43f41f75ff403b"
integrity sha512-aqbsHa1mSQAbeeNcl38un6qVY++hh8OpCOzxhixSYgbRfNWcxJNJQwe2rezK9XEcssJbbWIkblaJRwGMS9zp+g==
dependencies:
"@xtuc/long" "4.2.2"
"@webassemblyjs/utf8@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.9.1.tgz#d02d9daab85cda3211e43caf31dca74c260a73b0"
integrity sha512-llkYtppagjCodFjo0alWOUhAkfOiQPQDIc5oA6C9sFAXz7vC9QhZf/f8ijQIX+A9ToM3c9Pq85X0EX7nx9gVhg==
"@webassemblyjs/utf8@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/utf8/-/utf8-1.11.0.tgz#86e48f959cf49e0e5091f069a709b862f5a2cadf"
integrity sha512-A/lclGxH6SpSLSyFowMzO/+aDEPU4hvEiooCMXQPcQFPPJaYcPQNKGOCLUySJsYJ4trbpr+Fs08n4jelkVTGVw==
"@webassemblyjs/wasm-edit@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.9.1.tgz#e27a6bdbf78e5c72fa812a2fc3cbaad7c3e37578"
integrity sha512-S2IaD6+x9B2Xi8BCT0eGsrXXd8UxAh2LVJpg1ZMtHXnrDcsTtIX2bDjHi40Hio6Lc62dWHmKdvksI+MClCYbbw==
"@webassemblyjs/wasm-edit@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.0.tgz#ee4a5c9f677046a210542ae63897094c2027cb78"
integrity sha512-JHQ0damXy0G6J9ucyKVXO2j08JVJ2ntkdJlq1UTiUrIgfGMmA7Ik5VdC/L8hBK46kVJgujkBIoMtT8yVr+yVOQ==
dependencies:
"@webassemblyjs/ast" "1.9.1"
"@webassemblyjs/helper-buffer" "1.9.1"
"@webassemblyjs/helper-wasm-bytecode" "1.9.1"
"@webassemblyjs/helper-wasm-section" "1.9.1"
"@webassemblyjs/wasm-gen" "1.9.1"
"@webassemblyjs/wasm-opt" "1.9.1"
"@webassemblyjs/wasm-parser" "1.9.1"
"@webassemblyjs/wast-printer" "1.9.1"
"@webassemblyjs/ast" "1.11.0"
"@webassemblyjs/helper-buffer" "1.11.0"
"@webassemblyjs/helper-wasm-bytecode" "1.11.0"
"@webassemblyjs/helper-wasm-section" "1.11.0"
"@webassemblyjs/wasm-gen" "1.11.0"
"@webassemblyjs/wasm-opt" "1.11.0"
"@webassemblyjs/wasm-parser" "1.11.0"
"@webassemblyjs/wast-printer" "1.11.0"
"@webassemblyjs/wasm-gen@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.9.1.tgz#56a0787d1fa7994fdc7bea59004e5bec7189c5fc"
integrity sha512-bqWI0S4lBQsEN5FTZ35vYzfKUJvtjNnBobB1agCALH30xNk1LToZ7Z8eiaR/Z5iVECTlBndoRQV3F6mbEqE/fg==
"@webassemblyjs/wasm-gen@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.0.tgz#3cdb35e70082d42a35166988dda64f24ceb97abe"
integrity sha512-BEUv1aj0WptCZ9kIS30th5ILASUnAPEvE3tVMTrItnZRT9tXCLW2LEXT8ezLw59rqPP9klh9LPmpU+WmRQmCPQ==
dependencies:
"@webassemblyjs/ast" "1.9.1"
"@webassemblyjs/helper-wasm-bytecode" "1.9.1"
"@webassemblyjs/ieee754" "1.9.1"
"@webassemblyjs/leb128" "1.9.1"
"@webassemblyjs/utf8" "1.9.1"
"@webassemblyjs/ast" "1.11.0"
"@webassemblyjs/helper-wasm-bytecode" "1.11.0"
"@webassemblyjs/ieee754" "1.11.0"
"@webassemblyjs/leb128" "1.11.0"
"@webassemblyjs/utf8" "1.11.0"
"@webassemblyjs/wasm-opt@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.9.1.tgz#fbdf8943a825e6dcc4cd69c3e092289fa4aec96c"
integrity sha512-gSf7I7YWVXZ5c6XqTEqkZjVs8K1kc1k57vsB6KBQscSagDNbAdxt6MwuJoMjsE1yWY1tsuL+pga268A6u+Fdkg==
"@webassemblyjs/wasm-opt@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.0.tgz#1638ae188137f4bb031f568a413cd24d32f92978"
integrity sha512-tHUSP5F4ywyh3hZ0+fDQuWxKx3mJiPeFufg+9gwTpYp324mPCQgnuVKwzLTZVqj0duRDovnPaZqDwoyhIO8kYg==
dependencies:
"@webassemblyjs/ast" "1.9.1"
"@webassemblyjs/helper-buffer" "1.9.1"
"@webassemblyjs/wasm-gen" "1.9.1"
"@webassemblyjs/wasm-parser" "1.9.1"
"@webassemblyjs/ast" "1.11.0"
"@webassemblyjs/helper-buffer" "1.11.0"
"@webassemblyjs/wasm-gen" "1.11.0"
"@webassemblyjs/wasm-parser" "1.11.0"
"@webassemblyjs/wasm-parser@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.9.1.tgz#5e8352a246d3f605312c8e414f7990de55aaedfa"
integrity sha512-ImM4N2T1MEIond0MyE3rXvStVxEmivQrDKf/ggfh5pP6EHu3lL/YTAoSrR7shrbKNPpeKpGesW1LIK/L4kqduw==
"@webassemblyjs/wasm-parser@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.0.tgz#3e680b8830d5b13d1ec86cc42f38f3d4a7700754"
integrity sha512-6L285Sgu9gphrcpDXINvm0M9BskznnzJTE7gYkjDbxET28shDqp27wpruyx3C2S/dvEwiigBwLA1cz7lNUi0kw==
dependencies:
"@webassemblyjs/ast" "1.9.1"
"@webassemblyjs/helper-api-error" "1.9.1"
"@webassemblyjs/helper-wasm-bytecode" "1.9.1"
"@webassemblyjs/ieee754" "1.9.1"
"@webassemblyjs/leb128" "1.9.1"
"@webassemblyjs/utf8" "1.9.1"
"@webassemblyjs/ast" "1.11.0"
"@webassemblyjs/helper-api-error" "1.11.0"
"@webassemblyjs/helper-wasm-bytecode" "1.11.0"
"@webassemblyjs/ieee754" "1.11.0"
"@webassemblyjs/leb128" "1.11.0"
"@webassemblyjs/utf8" "1.11.0"
"@webassemblyjs/wast-parser@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-parser/-/wast-parser-1.9.1.tgz#e25ef13585c060073c1db0d6bd94340fdeee7596"
integrity sha512-2xVxejXSvj3ls/o2TR/zI6p28qsGupjHhnHL6URULQRcXmryn3w7G83jQMcT7PHqUfyle65fZtWLukfdLdE7qw==
"@webassemblyjs/wast-printer@1.11.0":
version "1.11.0"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.11.0.tgz#680d1f6a5365d6d401974a8e949e05474e1fab7e"
integrity sha512-Fg5OX46pRdTgB7rKIUojkh9vXaVN6sGYCnEiJN1GYkb0RPwShZXp6KTDqmoMdQPKhcroOXh3fEzmkWmCYaKYhQ==
dependencies:
"@webassemblyjs/ast" "1.9.1"
"@webassemblyjs/floating-point-hex-parser" "1.9.1"
"@webassemblyjs/helper-api-error" "1.9.1"
"@webassemblyjs/helper-code-frame" "1.9.1"
"@webassemblyjs/helper-fsm" "1.9.1"
"@xtuc/long" "4.2.2"
"@webassemblyjs/wast-printer@1.9.1":
version "1.9.1"
resolved "https://registry.yarnpkg.com/@webassemblyjs/wast-printer/-/wast-printer-1.9.1.tgz#b9f38e93652037d4f3f9c91584635af4191ed7c1"
integrity sha512-tDV8V15wm7mmbAH6XvQRU1X+oPGmeOzYsd6h7hlRLz6QpV4Ec/KKxM8OpLtFmQPLCreGxTp+HuxtH4pRIZyL9w==
dependencies:
"@webassemblyjs/ast" "1.9.1"
"@webassemblyjs/wast-parser" "1.9.1"
"@webassemblyjs/ast" "1.11.0"
"@xtuc/long" "4.2.2"
"@webpack-cli/info@^1.2.1":
@@ -1416,6 +1392,11 @@ argparse@^1.0.10, argparse@^1.0.7:
dependencies:
sprintf-js "~1.0.2"
argparse@^2.0.1:
version "2.0.1"
resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38"
integrity sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==
arr-diff@^4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
@@ -2790,13 +2771,13 @@ end-of-stream@^1.1.0:
dependencies:
once "^1.4.0"
enhanced-resolve@^5.3.1:
version "5.3.1"
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.3.1.tgz#3f988d0d7775bdc2d96ede321dc81f8249492f57"
integrity sha512-G1XD3MRGrGfNcf6Hg0LVZG7GIKcYkbfHa5QMxt1HDUTdYoXH0JR1xXyg+MaKLF73E9A27uWNVxvFivNRYeUB6w==
enhanced-resolve@^5.7.0:
version "5.7.0"
resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.7.0.tgz#525c5d856680fbd5052de453ac83e32049958b5c"
integrity sha512-6njwt/NsZFUKhM6j9U8hzVyD4E4r0x7NQzhTCbcWOJ0IQjNSAoalWmb0AE51Wn+fwan5qVESWi7t2ToBxs9vrw==
dependencies:
graceful-fs "^4.2.4"
tapable "^2.0.0"
tapable "^2.2.0"
enquirer@^2.3.6:
version "2.3.6"
@@ -2844,6 +2825,11 @@ es-abstract@^1.12.0, es-abstract@^1.5.1:
string.prototype.trimleft "^2.1.0"
string.prototype.trimright "^2.1.0"
es-module-lexer@^0.3.26:
version "0.3.26"
resolved "https://registry.yarnpkg.com/es-module-lexer/-/es-module-lexer-0.3.26.tgz#7b507044e97d5b03b01d4392c74ffeb9c177a83b"
integrity sha512-Va0Q/xqtrss45hWzP8CZJwzGSZJjDM5/MJRE3IXXnUCcVLElR9BRaE9F62BopysASyc4nM3uwhSW7FFB9nlWAA==
es-to-primitive@^1.2.0:
version "1.2.0"
resolved "https://registry.yarnpkg.com/es-to-primitive/-/es-to-primitive-1.2.0.tgz#edf72478033456e8dda8ef09e00ad9650707f377"
@@ -4328,10 +4314,10 @@ isurl@^1.0.0-alpha5:
has-to-string-tag-x "^1.2.0"
is-object "^1.0.1"
jest-worker@^26.6.1:
version "26.6.1"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.6.1.tgz#c2ae8cde6802cc14056043f997469ec170d9c32a"
integrity sha512-R5IE3qSGz+QynJx8y+ICEkdI2OJ3RJjRQVEyCcFAd3yVhQSEtquziPO29Mlzgn07LOVE8u8jhJ1FqcwegiXWOw==
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"
@@ -4355,7 +4341,14 @@ js-tokens@^3.0.2:
version "3.0.2"
resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-3.0.2.tgz#9866df395102130e38f7f996bceb65443209c25b"
js-yaml@3.14.1, js-yaml@^3.13.1, js-yaml@^3.8.1:
js-yaml@4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-4.0.0.tgz#f426bc0ff4b4051926cd588c71113183409a121f"
integrity sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==
dependencies:
argparse "^2.0.1"
js-yaml@^3.13.1, js-yaml@^3.8.1:
version "3.14.1"
resolved "https://registry.yarnpkg.com/js-yaml/-/js-yaml-3.14.1.tgz#dae812fdb3825fa306609a8717383c50c36a0537"
integrity sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==
@@ -4499,10 +4492,10 @@ load-json-file@^1.0.0:
pinkie-promise "^2.0.0"
strip-bom "^2.0.0"
loader-runner@^4.1.0:
version "4.1.0"
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.1.0.tgz#f70bc0c29edbabdf2043e7ee73ccc3fe1c96b42d"
integrity sha512-oR4lB4WvwFoC70ocraKhn5nkKSs23t57h9udUgw8o0iH8hMXeEoRuUgfcvgUwAJ1ZpRqBvcou4N2SMvM1DwMrA==
loader-runner@^4.2.0:
version "4.2.0"
resolved "https://registry.yarnpkg.com/loader-runner/-/loader-runner-4.2.0.tgz#d7022380d66d14c5fb1d496b89864ebcfd478384"
integrity sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==
loader-utils@1.2.3:
version "1.2.3"
@@ -5307,6 +5300,13 @@ p-limit@^3.0.2:
dependencies:
p-try "^2.0.0"
p-limit@^3.1.0:
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"
@@ -6968,10 +6968,10 @@ tapable@^1.0.0:
resolved "https://registry.yarnpkg.com/tapable/-/tapable-1.1.3.tgz#a1fccc06b58db61fd7a45da2da44f5f3a3e67ba2"
integrity sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==
tapable@^2.0.0, tapable@^2.1.1:
version "2.1.1"
resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.1.1.tgz#b01cc1902d42a7bb30514e320ce21c456f72fd3f"
integrity sha512-Wib1S8m2wdpLbmQz0RBEVosIyvb/ykfKXf3ZIDqvWoMg/zTNm6G/tDSuUM61J1kNCDXWJrLHGSFeMhAG+gAGpQ==
tapable@^2.1.1, tapable@^2.2.0:
version "2.2.0"
resolved "https://registry.yarnpkg.com/tapable/-/tapable-2.2.0.tgz#5c373d281d9c672848213d0e037d1c4165ab426b"
integrity sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==
tar-stream@^1.5.2:
version "1.6.2"
@@ -7018,22 +7018,22 @@ tempfile@^2.0.0:
temp-dir "^1.0.0"
uuid "^3.0.1"
terser-webpack-plugin@^5.0.3:
version "5.0.3"
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.0.3.tgz#ec60542db2421f45735c719d2e17dabfbb2e3e42"
integrity sha512-zFdGk8Lh9ZJGPxxPE6jwysOlATWB8GMW8HcfGULWA/nPal+3VdATflQvSBSLQJRCmYZnfFJl6vkRTiwJGNgPiQ==
terser-webpack-plugin@^5.1.1:
version "5.1.1"
resolved "https://registry.yarnpkg.com/terser-webpack-plugin/-/terser-webpack-plugin-5.1.1.tgz#7effadee06f7ecfa093dbbd3e9ab23f5f3ed8673"
integrity sha512-5XNNXZiR8YO6X6KhSGXfY0QrGrCRlSwAEjIIrlRQR4W8nP69TaJUlh3bkuac6zzgspiGPfKEHcY295MMVExl5Q==
dependencies:
jest-worker "^26.6.1"
p-limit "^3.0.2"
jest-worker "^26.6.2"
p-limit "^3.1.0"
schema-utils "^3.0.0"
serialize-javascript "^5.0.1"
source-map "^0.6.1"
terser "^5.3.8"
terser "^5.5.1"
terser@^5.3.8:
version "5.3.8"
resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.8.tgz#991ae8ba21a3d990579b54aa9af11586197a75dd"
integrity sha512-zVotuHoIfnYjtlurOouTazciEfL7V38QMAOhGqpXDEg6yT13cF4+fEP9b0rrCEQTn+tT46uxgFsTZzhygk+CzQ==
terser@^5.5.1:
version "5.5.1"
resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289"
integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==
dependencies:
commander "^2.20.0"
source-map "~0.7.2"
@@ -7416,33 +7416,33 @@ webpack-sources@^2.1.1:
source-list-map "^2.0.1"
source-map "^0.6.1"
webpack@5.11.1:
version "5.11.1"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.11.1.tgz#39b2b9daeb5c6c620e03b7556ec674eaed4016b4"
integrity sha512-tNUIdAmYJv+nupRs/U/gqmADm6fgrf5xE+rSlSsf2PgsGO7j2WG7ccU6AWNlOJlHFl+HnmXlBmHIkiLf+XA9mQ==
webpack@5.15.0:
version "5.15.0"
resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.15.0.tgz#63d7b6228a4e15ee8c89899c2cfdd993e809bdd2"
integrity sha512-y/xG+ONDz78yn3VvP6gAvGr1/gkxOgitvHSXBmquyN8KDtrGEyE3K9WkXOPB7QmfcOBCpO4ELXwNcCYQnEmexA==
dependencies:
"@types/eslint-scope" "^3.7.0"
"@types/estree" "^0.0.45"
"@webassemblyjs/ast" "1.9.1"
"@webassemblyjs/helper-module-context" "1.9.1"
"@webassemblyjs/wasm-edit" "1.9.1"
"@webassemblyjs/wasm-parser" "1.9.1"
"@webassemblyjs/ast" "1.11.0"
"@webassemblyjs/wasm-edit" "1.11.0"
"@webassemblyjs/wasm-parser" "1.11.0"
acorn "^8.0.4"
browserslist "^4.14.5"
chrome-trace-event "^1.0.2"
enhanced-resolve "^5.3.1"
enhanced-resolve "^5.7.0"
es-module-lexer "^0.3.26"
eslint-scope "^5.1.1"
events "^3.2.0"
glob-to-regexp "^0.4.1"
graceful-fs "^4.2.4"
json-parse-better-errors "^1.0.2"
loader-runner "^4.1.0"
loader-runner "^4.2.0"
mime-types "^2.1.27"
neo-async "^2.6.2"
pkg-dir "^5.0.0"
schema-utils "^3.0.0"
tapable "^2.1.1"
terser-webpack-plugin "^5.0.3"
terser-webpack-plugin "^5.1.1"
watchpack "^2.0.0"
webpack-sources "^2.1.1"
@@ -7592,3 +7592,8 @@ yauzl@^2.4.2:
dependencies:
buffer-crc32 "~0.2.3"
fd-slicer "~1.1.0"
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==
+102 -95
View File
@@ -2,10 +2,10 @@
# yarn lockfile v1
"@angular/compiler@11.0.7":
version "11.0.7"
resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-11.0.7.tgz#994251520cb4b810240e8081dddb4baddae7551c"
integrity sha512-U+aGn6lP3iB184D2Z+OSK5vCwNtxtsF59T7nNJBMCCwcN7Qc5tfDBbSj1GI11XrIiuuoOxXbAp9BKS0dAyNCWw==
"@angular/compiler@11.0.9":
version "11.0.9"
resolved "https://registry.yarnpkg.com/@angular/compiler/-/compiler-11.0.9.tgz#524757eac7c9915605c3579f12b2a80cb9d4d783"
integrity sha512-H2IfS6ciPWN0kmKhbwDuvS8ry5GcRFKfoyA/HGk+nQwCE2nAHC8VNwldbtoisO7XfRWr/uaTrh6z/vdfxsAiHw==
dependencies:
tslib "^2.0.0"
@@ -1036,10 +1036,10 @@
resolved "https://registry.yarnpkg.com/@cspell/dict-typescript/-/dict-typescript-1.0.15.tgz#97cd4357f5715b91178a93b6c1dcab5f6d0591ec"
integrity sha512-Guh+nN57OqbcRNH6cfbBQKfeDp0i+GBlniYvhWvaRxkSdFQJi4YgFKvQJsvtwLkwmNqYkQIXQr+8zXhuvTHLhA==
"@eslint/eslintrc@^0.2.2":
version "0.2.2"
resolved "https://registry.yarnpkg.com/@eslint/eslintrc/-/eslintrc-0.2.2.tgz#d01fc791e2fc33e88a29d6f3dc7e93d0cd784b76"
integrity sha512-EfB5OHNYp1F4px/LI/FEnGylop7nOqkQ1LRzCM0KccA2U8tvV8w01KBv37LbO7nW4H+YhKyo2LcJhRwjjV17QQ==
"@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"
@@ -1048,7 +1048,7 @@
ignore "^4.0.6"
import-fresh "^3.2.1"
js-yaml "^3.13.1"
lodash "^4.17.19"
lodash "^4.17.20"
minimatch "^3.0.4"
strip-json-comments "^3.1.1"
@@ -1057,10 +1057,10 @@
resolved "https://registry.yarnpkg.com/@glimmer/env/-/env-0.1.7.tgz#fd2d2b55a9029c6b37a6c935e8c8871ae70dfa07"
integrity sha1-/S0rVakCnGs3psk16MiHGucN+gc=
"@glimmer/global-context@0.73.1":
version "0.73.1"
resolved "https://registry.yarnpkg.com/@glimmer/global-context/-/global-context-0.73.1.tgz#34f7ccabd2656c8d4a19581557593b6bac761a4b"
integrity sha512-jilS1HXMf/bzVQETCetlggAFLMYukvOxxGVi5FokL23g3jfWjQncEFf3p3OR17I3HDsEa1FmrZc4iuOp/i2gGQ==
"@glimmer/global-context@0.73.2":
version "0.73.2"
resolved "https://registry.yarnpkg.com/@glimmer/global-context/-/global-context-0.73.2.tgz#34fc51dc5c320f067b912478e077fb3f55ff38f2"
integrity sha512-a/q6E27JMvF5oqKRYG5RFoTH0PrHaLp/Ix6W5OZ1TqvpiiuEgd4Olb55Ehxw2jH+wvmQHQtTxFKDyv0iDJYZ1Q==
dependencies:
"@glimmer/env" "^0.1.7"
@@ -1071,16 +1071,23 @@
dependencies:
"@simple-dom/interface" "^1.4.0"
"@glimmer/reference@0.73.1":
version "0.73.1"
resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.73.1.tgz#5f3634fb780018d2aace753ed512b909d50c85bf"
integrity sha512-0sUebIjfNGuv6XJyC/f0HsFzNQf7/vNgeg+7/qg8NxDrrDfWeLzcaejWkReP/hxAmqLgidHnYju6IqmWciWcFw==
"@glimmer/interfaces@0.73.2":
version "0.73.2"
resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.73.2.tgz#03c769208bf705760800f3f64774b074bf04f738"
integrity sha512-SjV0/TtFiv+Sxl3WJ2I5oR6hH+EabTfk3qvllU8WAYBqf6LnNPSMjaFv2Fucn7bIvOqZ8zHl36q6HboAychD/A==
dependencies:
"@simple-dom/interface" "^1.4.0"
"@glimmer/reference@0.73.2":
version "0.73.2"
resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.73.2.tgz#85bbf60e5491b93fcc2f4d883fd277ae9f0d5ed0"
integrity sha512-v/arQjBPvMpbVwGuCXCr7rxDteqIhnu91cu2K/7QcqmodzGC7ZhoVKWHtak3A11U1/1/6F2DznK8yHPKC/gEwg==
dependencies:
"@glimmer/env" "^0.1.7"
"@glimmer/global-context" "0.73.1"
"@glimmer/interfaces" "0.73.1"
"@glimmer/util" "0.73.1"
"@glimmer/validator" "0.73.1"
"@glimmer/global-context" "0.73.2"
"@glimmer/interfaces" "0.73.2"
"@glimmer/util" "0.73.2"
"@glimmer/validator" "0.73.2"
"@glimmer/syntax@0.73.1":
version "0.73.1"
@@ -1101,13 +1108,22 @@
"@glimmer/interfaces" "0.73.1"
"@simple-dom/interface" "^1.4.0"
"@glimmer/validator@0.73.1":
version "0.73.1"
resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.73.1.tgz#8d87e502e84d468bb7d1695fdc85e1cfc3d9de29"
integrity sha512-DGodNSpf1v9Xsu7l7GSitVhNnESVx9qn6RFQ/zVwvptSXaPvLh5RIxsvYqJwkhBsxyPCVqnjz1p+MwqtfJukDA==
"@glimmer/util@0.73.2":
version "0.73.2"
resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.73.2.tgz#32ca1cec339a91f12f0359711f1a86fc1dcc13ca"
integrity sha512-ng726SZl/o2NKOLeHdqU9LTH4tP9FW7H1CveZGE8HMTgTDpXA7NCF7TVHqccOMmJNXqspkegtGQFGOLi10HArg==
dependencies:
"@glimmer/env" "0.1.7"
"@glimmer/interfaces" "0.73.2"
"@simple-dom/interface" "^1.4.0"
"@glimmer/validator@0.73.2":
version "0.73.2"
resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.73.2.tgz#63bdeecda9904ace565063eedc7916ffb86b2981"
integrity sha512-Bk4xLmZ6tj46yEZzeOqpPla7KHRQP2QiHLo941ieZawc8vP/tZSO0znvuA+SXbqpSjxPPyjMtsXfYiUK7rLfZg==
dependencies:
"@glimmer/env" "^0.1.7"
"@glimmer/global-context" "0.73.1"
"@glimmer/global-context" "0.73.2"
"@handlebars/parser@^2.0.0":
version "2.0.0"
@@ -1384,10 +1400,10 @@
dependencies:
"@rollup/pluginutils" "^3.0.8"
"@rollup/plugin-node-resolve@11.0.1":
version "11.0.1"
resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.0.1.tgz#d3765eec4bccf960801439a999382aed2dca959b"
integrity sha512-ltlsj/4Bhwwhb+Nb5xCz/6vieuEj2/BAkkqVIKmZwC7pIdl8srmgmglE4S0jFlZa32K4qvdQ6NHdmpRKD/LwoQ==
"@rollup/plugin-node-resolve@11.1.0":
version "11.1.0"
resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.1.0.tgz#fa0f888297b3aebcd6534e8aba4e6fe01997649a"
integrity sha512-ouBBppRdWJKCllDXGzJ7ZIkYbaq+5TmyP0smt1vdJCFfoZhLi31vhpmjLhyo8lreHf4RoeSNllaWrvSqHpHRog==
dependencies:
"@rollup/pluginutils" "^3.1.0"
"@types/resolve" "1.17.1"
@@ -1477,10 +1493,10 @@
resolved "https://registry.yarnpkg.com/@types/color-name/-/color-name-1.1.1.tgz#1c1261bbeaa10a8055bbc5d8ab84b7b2afc846a0"
integrity sha512-rr+OQyAjxze7GgWrSaJwydHStIhHq2lvY3BOC2Mj7KnzI7XK0Uw1TOOdI9lDoajEbSWLiYgoo4f1R51erQfhPQ==
"@types/estree@*", "@types/estree@0.0.45":
version "0.0.45"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.45.tgz#e9387572998e5ecdac221950dab3e8c3b16af884"
integrity sha512-jnqIUKDUqJbDIUxm0Uj7bnlMnRm1T/eZ9N+AVMqhPgzrba2GhGG5o/jCTwmdPK709nEZsGoMzXEDUjcXHa3W0g==
"@types/estree@*", "@types/estree@0.0.46":
version "0.0.46"
resolved "https://registry.yarnpkg.com/@types/estree/-/estree-0.0.46.tgz#0fb6bfbbeabd7a30880504993369c4bf1deab1fe"
integrity sha512-laIjwTQaD+5DukBZaygQ79K1Z0jb1bPEMRrkXSLjtCcZm+abyp5YbrqpSLzD42FwWW6gK/aS4NYpJ804nG2brg==
"@types/estree@0.0.39":
version "0.0.39"
@@ -1607,10 +1623,10 @@
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.0.1.tgz#1cf72582f764931f085cb8230ff215980fe467b2"
integrity sha512-S+gD3fgbkZYW2rnbjugNMqibm9HpEjqZBZkTiI3PwbbNGWmAcxolWIUwZ0SKeG4Dy2ktpKKaI/6+HGYVH8Qrlg==
"@typescript-eslint/types@4.12.0":
version "4.12.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.12.0.tgz#fb891fe7ccc9ea8b2bbd2780e36da45d0dc055e5"
integrity sha512-N2RhGeheVLGtyy+CxRmxdsniB7sMSCfsnbh8K/+RUIXYYq3Ub5+sukRCjVE80QerrUBvuEvs4fDhz5AW/pcL6g==
"@typescript-eslint/types@4.14.0":
version "4.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/types/-/types-4.14.0.tgz#d8a8202d9b58831d6fd9cee2ba12f8a5a5dd44b6"
integrity sha512-VsQE4VvpldHrTFuVPY1ZnHn/Txw6cZGjL48e+iBxTi2ksa9DmebKjAeFmTVAYoSkTk7gjA7UqJ7pIsyifTsI4A==
"@typescript-eslint/typescript-estree@4.0.1":
version "4.0.1"
@@ -1626,13 +1642,13 @@
semver "^7.3.2"
tsutils "^3.17.1"
"@typescript-eslint/typescript-estree@4.12.0":
version "4.12.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.12.0.tgz#3963418c850f564bdab3882ae23795d115d6d32e"
integrity sha512-gZkFcmmp/CnzqD2RKMich2/FjBTsYopjiwJCroxqHZIY11IIoN0l5lKqcgoAPKHt33H2mAkSfvzj8i44Jm7F4w==
"@typescript-eslint/typescript-estree@4.14.0":
version "4.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-4.14.0.tgz#4bcd67486e9acafc3d0c982b23a9ab8ac8911ed7"
integrity sha512-wRjZ5qLao+bvS2F7pX4qi2oLcOONIB+ru8RGBieDptq/SudYwshveORwCVU4/yMAd4GK7Fsf8Uq1tjV838erag==
dependencies:
"@typescript-eslint/types" "4.12.0"
"@typescript-eslint/visitor-keys" "4.12.0"
"@typescript-eslint/types" "4.14.0"
"@typescript-eslint/visitor-keys" "4.14.0"
debug "^4.1.1"
globby "^11.0.1"
is-glob "^4.0.1"
@@ -1648,12 +1664,12 @@
"@typescript-eslint/types" "4.0.1"
eslint-visitor-keys "^2.0.0"
"@typescript-eslint/visitor-keys@4.12.0":
version "4.12.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.12.0.tgz#a470a79be6958075fa91c725371a83baf428a67a"
integrity sha512-hVpsLARbDh4B9TKYz5cLbcdMIOAoBYgFPCSP9FFS/liSF+b33gVNq8JHY3QGhHNVz85hObvL7BEYLlgx553WCw==
"@typescript-eslint/visitor-keys@4.14.0":
version "4.14.0"
resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.14.0.tgz#b1090d9d2955b044b2ea2904a22496849acbdf54"
integrity sha512-MeHHzUyRI50DuiPgV9+LxcM52FCJFYjJiWHtXlbyC27b80mfOwKeiKI+MHOTEpcpfmoPFm/vvQS88bYIx6PZTA==
dependencies:
"@typescript-eslint/types" "4.12.0"
"@typescript-eslint/types" "4.14.0"
eslint-visitor-keys "^2.0.0"
abab@^2.0.3:
@@ -2843,10 +2859,10 @@ eslint-ast-utils@^1.1.0:
lodash.get "^4.4.2"
lodash.zip "^4.2.0"
eslint-config-prettier@7.1.0:
version "7.1.0"
resolved "https://registry.yarnpkg.com/eslint-config-prettier/-/eslint-config-prettier-7.1.0.tgz#5402eb559aa94b894effd6bddfa0b1ca051c858f"
integrity sha512-9sm5/PxaFG7qNJvJzTROMM1Bk1ozXVTKI0buKOyb0Bsr1hrwi0H/TzxF/COtf1uxikIK8SwhX7K6zg78jAzbeA==
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-formatter-friendly@7.0.0:
version "7.0.0"
@@ -2922,17 +2938,17 @@ eslint-plugin-react@7.22.0:
resolve "^1.18.1"
string.prototype.matchall "^4.0.2"
eslint-plugin-unicorn@25.0.1:
version "25.0.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-25.0.1.tgz#bedcbc9b817042a44f6501584e8266741120f023"
integrity sha512-MEyEWoyou/qhJH6rEER9YHACtCsQT+eewc6Fdxbi2eiTvsGrBR8JZMA6qaeof3oMQeRxOpaERoBKzU7R5c4A/w==
eslint-plugin-unicorn@26.0.1:
version "26.0.1"
resolved "https://registry.yarnpkg.com/eslint-plugin-unicorn/-/eslint-plugin-unicorn-26.0.1.tgz#65f476bb7624beb417066259dc14c7ebb21eb6fc"
integrity sha512-SWgF9sIVY74zqkkSN2dclSCqRfocWSUGD0haC0NX2oRfmdp9p8dQvJYkYSQePaCyssPUE/pqpsIEEZNTh8crUA==
dependencies:
ci-info "^2.0.0"
clean-regexp "^1.0.0"
eslint-ast-utils "^1.1.0"
eslint-template-visitor "^2.2.1"
eslint-template-visitor "^2.2.2"
eslint-utils "^2.1.0"
import-modules "^2.0.0"
import-modules "^2.1.0"
lodash "^4.17.20"
pluralize "^8.0.0"
read-pkg-up "^7.0.1"
@@ -2949,13 +2965,13 @@ eslint-scope@^5.0.0, eslint-scope@^5.1.1:
esrecurse "^4.3.0"
estraverse "^4.1.1"
eslint-template-visitor@^2.2.1:
version "2.2.1"
resolved "https://registry.yarnpkg.com/eslint-template-visitor/-/eslint-template-visitor-2.2.1.tgz#2dccb1ab28fa7429e56ba6dd0144def2d89bc2d6"
integrity sha512-q3SxoBXz0XjPGkUpwGVAwIwIPIxzCAJX1uwfVc8tW3v7u/zS7WXNH3I2Mu2MDz2NgSITAyKLRaQFPHu/iyKxDQ==
eslint-template-visitor@^2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/eslint-template-visitor/-/eslint-template-visitor-2.2.2.tgz#46cd2b06eca5c1d97369aadd96e131df88fdd59c"
integrity sha512-SkcLjzKw3JjKTWHacRDeLBa2gxb600zbCKTkXj/V97QnZ9yxkknoPL8vc8PFueqbFXP7mYNTQzjCjcMpTRdRaA==
dependencies:
babel-eslint "^10.1.0"
eslint-visitor-keys "^1.3.0"
eslint-visitor-keys "^2.0.0"
esquery "^1.3.1"
multimap "^1.1.0"
@@ -2976,13 +2992,13 @@ eslint-visitor-keys@^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.17.0:
version "7.17.0"
resolved "https://registry.yarnpkg.com/eslint/-/eslint-7.17.0.tgz#4ccda5bf12572ad3bf760e6f195886f50569adb0"
integrity sha512-zJk08MiBgwuGoxes5sSQhOtibZ75pz0J35XTRlZOk9xMffhpA9BTbQZxoXZzOl5zMbleShbGwtw+1kGferfFwQ==
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.2.2"
"@eslint/eslintrc" "^0.3.0"
ajv "^6.10.0"
chalk "^4.0.0"
cross-spawn "^7.0.2"
@@ -3006,7 +3022,7 @@ eslint@7.17.0:
js-yaml "^3.13.1"
json-stable-stringify-without-jsonify "^1.0.1"
levn "^0.4.1"
lodash "^4.17.19"
lodash "^4.17.20"
minimatch "^3.0.4"
natural-compare "^1.4.0"
optionator "^0.9.1"
@@ -3689,10 +3705,10 @@ import-local@^3.0.2:
pkg-dir "^4.2.0"
resolve-cwd "^3.0.0"
import-modules@^2.0.0:
version "2.0.0"
resolved "https://registry.yarnpkg.com/import-modules/-/import-modules-2.0.0.tgz#9c1e13b4e7a15682f70a6e3fa29534e4540cfc5d"
integrity sha512-iczM/v9drffdNnABOKwj0f9G3cFDon99VcG1mxeBsdqnbd+vnQ5c2uAiCHNQITqFTOPaEvwg3VjoWCur0uHLEw==
import-modules@^2.1.0:
version "2.1.0"
resolved "https://registry.yarnpkg.com/import-modules/-/import-modules-2.1.0.tgz#abe7df297cb6c1f19b57246eb8b8bd9664b6d8c2"
integrity sha512-8HEWcnkbGpovH9yInoisxaSoIg9Brbul+Ju3Kqe2UsYDUBJD/iQjSgEj0zPcTDPKfPp2fs5xlv1i+JSye/m1/A==
imurmurhash@^0.1.4:
version "0.1.4"
@@ -4627,16 +4643,7 @@ jest-watcher@^26.6.2:
jest-util "^26.6.2"
string-length "^4.0.1"
jest-worker@^26.1.0, jest-worker@^26.2.1:
version "26.5.0"
resolved "https://registry.yarnpkg.com/jest-worker/-/jest-worker-26.5.0.tgz#87deee86dbbc5f98d9919e0dadf2c40e3152fa30"
integrity sha512-kTw66Dn4ZX7WpjZ7T/SUDgRhapFRKWmisVAF0Rv4Fu8SLFD7eLbqpLvbxVqYhSgaWa7I+bW7pHnbyfNsH6stug==
dependencies:
"@types/node" "*"
merge-stream "^2.0.0"
supports-color "^7.0.0"
jest-worker@^26.6.2:
jest-worker@^26.1.0, jest-worker@^26.2.1, 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==
@@ -5014,10 +5021,10 @@ merge2@^1.3.0:
resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
meriyah@3.1.6:
version "3.1.6"
resolved "https://registry.yarnpkg.com/meriyah/-/meriyah-3.1.6.tgz#56c9c0edb63f9640c7609a39a413c60b038e4451"
integrity sha512-JDOSi6DIItDc33U5N52UdV6P8v+gn+fqZKfbAfHzdWApRQyQWdcvxPvAr9t01bI2rBxGvSrKRQSCg3SkZC1qeg==
meriyah@4.0.0:
version "4.0.0"
resolved "https://registry.yarnpkg.com/meriyah/-/meriyah-4.0.0.tgz#8aebc64f09a9ec16a3040b754b85f7131770c4a1"
integrity sha512-FJ3WMKlHJTKH6tazLOTw16bnTWV8vfAy08K3hR+6PnOJpciWaxMDZdA0PhGyWZyHbtiNdfQOc2+Tm8bEt/1TTA==
micromatch@^3.1.4:
version "3.1.10"
@@ -6091,10 +6098,10 @@ rollup-pluginutils@^2.3.1:
dependencies:
estree-walker "^0.6.1"
rollup@2.36.1:
version "2.36.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.36.1.tgz#2174f0c25c7b400d57b05628d0e732c7ae8d2178"
integrity sha512-eAfqho8dyzuVvrGqpR0ITgEdq0zG2QJeWYh+HeuTbpcaXk8vNFc48B7bJa1xYosTCKx0CuW+447oQOW8HgBIZQ==
rollup@2.37.1:
version "2.37.1"
resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.37.1.tgz#aa7aadffd75c80393f9314f9857e851b0ffd34e7"
integrity sha512-V3ojEeyGeSdrMSuhP3diBb06P+qV4gKQeanbDv+Qh/BZbhdZ7kHV0xAt8Yjk4GFshq/WjO7R4c7DFM20AwTFVQ==
optionalDependencies:
fsevents "~2.1.2"
@@ -6629,9 +6636,9 @@ terminal-link@^2.0.0:
supports-hyperlinks "^2.0.0"
terser@^5.0.0:
version "5.3.4"
resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.4.tgz#e510e05f86e0bd87f01835c3238839193f77a60c"
integrity sha512-dxuB8KQo8Gt6OVOeLg/rxfcxdNZI/V1G6ze1czFUzPeCFWZRtvZMgSzlZZ5OYBZ4HoG607F6pFPNLekJyV+yVw==
version "5.5.1"
resolved "https://registry.yarnpkg.com/terser/-/terser-5.5.1.tgz#540caa25139d6f496fdea056e414284886fb2289"
integrity sha512-6VGWZNVP2KTUcltUQJ25TtNjx/XgdDsBDKGt8nN0MpydU36LmbPPcMBd2kmtZNNGVVDLg44k7GKeHHj+4zPIBQ==
dependencies:
commander "^2.20.0"
source-map "~0.7.2"