diff --git a/changelog_unreleased/flow/10788.md b/changelog_unreleased/flow/10788.md new file mode 100644 index 000000000..8972e86ca --- /dev/null +++ b/changelog_unreleased/flow/10788.md @@ -0,0 +1,13 @@ +#### Support for Flow's optional indexed access type (#10788 by @gkz) + + +```js +// Input +type T = Obj?.['foo']; + +// Prettier stable +// Error: unsupported node type "OptionalIndexedAccessType" + +// Prettier main +type T = Obj?.['foo']; +``` diff --git a/changelog_unreleased/javascript/10813.md b/changelog_unreleased/javascript/10813.md new file mode 100644 index 000000000..7fd23485e --- /dev/null +++ b/changelog_unreleased/javascript/10813.md @@ -0,0 +1,18 @@ +#### Support async do expressions proposal (#10813 by @sosukesuzuki) + +https://github.com/tc39/proposal-async-do-expressions + +```js +// Input +const x = async do { + await requestAPI().json(); +}; + +// Prettier stable +SyntaxError: Unexpected token, expected ";" (1:17) + +// Prettier main +const x = async do { + await requestAPI().json(); +}; +``` diff --git a/changelog_unreleased/typescript/10811.md b/changelog_unreleased/typescript/10811.md new file mode 100644 index 000000000..5f2a6c99e --- /dev/null +++ b/changelog_unreleased/typescript/10811.md @@ -0,0 +1,26 @@ +#### Support TypeScript 4.3 via `babel-ts` (#10811 by @sosukesuzuki) + +##### [`override` modifiers in class elements](https://devblogs.microsoft.com/typescript/announcing-typescript-4-3-beta/#override-and-the-noimplicitoverride-flag) + +```ts +class Foo extends { + override method() {} +} +``` + +##### [static index signatures (`[key: KeyType]: ValueType`) in classes](https://devblogs.microsoft.com/typescript/announcing-typescript-4-3-beta/#static-index-signatures) + +```ts +class Foo { + static [key: string]: Bar; +} +``` + +##### [`get` / `set` in type declarations](https://devblogs.microsoft.com/typescript/announcing-typescript-4-3-beta/#separate-write-types-on-properties) + +```ts +interface Foo { + set foo(value); + get foo(): string; +} +``` diff --git a/cspell.json b/cspell.json index ee8a4fefa..327918b9b 100644 --- a/cspell.json +++ b/cspell.json @@ -313,6 +313,7 @@ "readlines", "rebalance", "rebeccapurple", + "Redeclaration", "Rects", "recurse", "recurses", diff --git a/package.json b/package.json index 12e89825c..3e55df78c 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,7 @@ "dependencies": { "@angular/compiler": "11.2.12", "@babel/code-frame": "7.12.13", - "@babel/parser": "7.13.16", + "@babel/parser": "7.14.1", "@glimmer/syntax": "0.79.0", "@iarna/toml": "2.2.5", "@typescript-eslint/typescript-estree": "4.22.0", @@ -43,7 +43,7 @@ "fast-glob": "3.2.5", "fast-json-stable-stringify": "2.1.0", "find-parent-dir": "0.3.0", - "flow-parser": "0.149.0", + "flow-parser": "0.150.0", "get-stdin": "8.0.0", "globby": "11.0.3", "graphql": "15.5.0", @@ -89,14 +89,14 @@ }, "devDependencies": { "@babel/core": "7.14.0", - "@babel/preset-env": "7.13.15", - "@babel/types": "7.13.17", - "@glimmer/reference": "0.78.2", + "@babel/preset-env": "7.14.1", + "@babel/types": "7.14.1", + "@glimmer/reference": "0.79.0", "@rollup/plugin-alias": "3.1.2", "@rollup/plugin-babel": "5.3.0", - "@rollup/plugin-commonjs": "18.0.0", + "@rollup/plugin-commonjs": "18.1.0", "@rollup/plugin-json": "4.1.0", - "@rollup/plugin-node-resolve": "11.2.1", + "@rollup/plugin-node-resolve": "13.0.0", "@rollup/plugin-replace": "2.4.2", "@types/estree": "0.0.47", "@types/node": "15.0.1", @@ -124,7 +124,7 @@ "prettier": "2.2.1", "pretty-bytes": "5.6.0", "rimraf": "3.0.2", - "rollup": "2.46.0", + "rollup": "2.47.0", "rollup-plugin-polyfill-node": "0.6.2", "rollup-plugin-terser": "7.0.2", "shelljs": "0.8.4", diff --git a/src/language-js/needs-parens.js b/src/language-js/needs-parens.js index 1b1b712c3..1006a21b0 100644 --- a/src/language-js/needs-parens.js +++ b/src/language-js/needs-parens.js @@ -481,6 +481,9 @@ function needsParens(path, options) { ); } + case "OptionalIndexedAccessType": + return name === "objectType" && parent.type === "IndexedAccessType"; + case "StringLiteral": case "NumericLiteral": case "Literal": diff --git a/src/language-js/parser-babel.js b/src/language-js/parser-babel.js index 24c9d0296..d91cc54eb 100644 --- a/src/language-js/parser-babel.js +++ b/src/language-js/parser-babel.js @@ -24,13 +24,10 @@ const parseOptions = { // When adding a plugin, please add a test in `tests/js/babel-plugins`, // To remove plugins, remove it here and run `yarn test tests/js/babel-plugins` to verify "doExpressions", - "classProperties", "exportDefaultFrom", "functionBind", "functionSent", - "classPrivateProperties", "throwExpressions", - "classPrivateMethods", "v8intrinsic", "partialApplication", ["decorators", { decoratorsBeforeExport: false }], @@ -38,9 +35,9 @@ const parseOptions = { "importAssertions", ["recordAndTuple", { syntaxType: "hash" }], "decimal", - "moduleStringNames", "classStaticBlock", "moduleBlocks", + "asyncDoExpressions", ], tokens: true, ranges: true, @@ -86,7 +83,9 @@ function parseWithOptions(parseMethod, text, options) { const parse = require("@babel/parser")[parseMethod]; const ast = parse(text, options); // @ts-ignore - const error = ast.errors.find((error) => shouldRethrowRecoveredError(error)); + const error = ast.errors.find( + (error) => !allowedMessageCodes.has(error.reasonCode) + ); if (error) { throw error; } @@ -145,72 +144,58 @@ const parseTypeScript = createParse( ); const parseExpression = createParse("parseExpression", appendPlugins(["jsx"])); -const allowedMessages = new Set([ - "The only valid numeric escape in strict mode is '\\0'", - "'with' in strict mode", - "Legacy octal literals are not allowed in strict mode", +// Error codes are defined in +// - https://github.com/babel/babel/blob/v7.14.0/packages/babel-parser/src/parser/error-message.js +// - https://github.com/babel/babel/blob/v7.14.0/packages/babel-parser/src/plugins/typescript/index.js#L69-L153 +// - https://github.com/babel/babel/blob/v7.14.0/packages/babel-parser/src/plugins/flow/index.js#L51-L140 +// - https://github.com/babel/babel/blob/v7.14.0/packages/babel-parser/src/plugins/jsx/index.js#L23-L39 +const allowedMessageCodes = new Set([ + "StrictNumericEscape", + "StrictWith", + "StrictOctalLiteral", - "Type argument list cannot be empty.", - "Type parameter list cannot be empty.", - "Type parameters cannot appear on a constructor declaration.", + "EmptyTypeArguments", + "EmptyTypeParameters", + "ConstructorHasTypeParameters", - "A parameter property may not be declared using a binding pattern.", - "A parameter property is only allowed in a constructor implementation.", + "UnsupportedParameterPropertyKind", + "UnexpectedParameterModifier", - "Tuple members must all have names or all not have names.", - "Tuple members must be labeled with a simple identifier.", + "MixedLabeledAndUnlabeledElements", + "InvalidTupleMemberLabel", - "'abstract' modifier can only appear on a class, method, or property declaration.", - "'readonly' modifier can only appear on a property declaration or index signature.", - "Class methods cannot have the 'declare' modifier", - "Class methods cannot have the 'readonly' modifier", - "'public' modifier cannot appear on a type member.", - "'private' modifier cannot appear on a type member.", - "'protected' modifier cannot appear on a type member.", - "'static' modifier cannot appear on a type member.", - "'declare' modifier cannot appear on a type member.", - "'abstract' modifier cannot appear on a type member.", - "'readonly' modifier cannot appear on a type member.", - "Accessibility modifier already seen.", - "Index signatures cannot have the 'declare' modifier", + "NonClassMethodPropertyHasAbstractModifer", + "ReadonlyForMethodSignature", + "ClassMethodHasDeclare", + "ClassMethodHasReadonly", + "InvalidModifierOnTypeMember", + "DuplicateAccessibilityModifier", + "IndexSignatureHasDeclare", - "Using the export keyword between a decorator and a class is not allowed. Please use `export @dec class` instead.", - "Argument name clash", - "Invalid decimal", - "Unexpected trailing comma after rest element", - "Decorators cannot be used to decorate parameters", - "Unterminated JSX contents", - 'Unexpected token, expected "}"', - "Unexpected token :", - "Unexpected reserved word 'package'", - 'Duplicate key "type" is not allowed in module attributes', - "No line break is allowed before '=>'", - "Invalid escape sequence in template", - "Abstract methods can only appear within an abstract class.", - "Decorators cannot be used to decorate object literal properties", - "A required element cannot follow an optional element.", - "A binding pattern parameter cannot be optional in an implementation signature.", - "Initializers are not allowed in ambient contexts.", - "A type-only import can specify a default import or named bindings, but not both.", - "An implementation cannot be declared in ambient contexts.", - "Classes may not have a field named 'constructor'", + "DecoratorExportClass", + "ParamDupe", + "InvalidDecimal", + "RestTrailingComma", + "UnsupportedParameterDecorator", + "UnterminatedJsxContent", + "UnexpectedReservedWord", + "ModuleAttributesWithDuplicateKeys", + "LineTerminatorBeforeArrow", + "InvalidEscapeSequenceTemplate", + "NonAbstractClassHasAbstractMethod", + "UnsupportedPropertyDecorator", + "OptionalTypeBeforeRequired", + "PatternIsOptional", + "OptionalBindingPattern", + "DeclareClassFieldHasInitializer", + "TypeImportCannotSpecifyDefaultAndNamed", + "DeclareFunctionHasImplementation", + "ConstructorClassField", + + "VarRedeclaration", + "InvalidPrivateFieldResolution", + "DuplicateExport", ]); -function shouldRethrowRecoveredError(error) { - const [, message] = error.message.match(/(.*?)\s*\(\d+:\d+\)/); - - if ( - allowedMessages.has(message) || - /^Identifier '.*?' has already been declared$/.test(message) || - /^Private name #.*? is not defined$/.test(message) || - /^`.*?` has already been exported\. Exported identifiers must be unique\.$/.test( - message - ) - ) { - return false; - } - - return true; -} const babel = createParser(parse); const babelExpression = createParser(parseExpression); diff --git a/src/language-js/print/class.js b/src/language-js/print/class.js index aaaa80fba..e013abc9f 100644 --- a/src/language-js/print/class.js +++ b/src/language-js/print/class.js @@ -169,6 +169,9 @@ function printClassMethod(path, options, print) { if (node.static) { parts.push("static "); } + if (node.override) { + parts.push("override "); + } if (node.type === "TSAbstractMethodDefinition" || node.abstract) { parts.push("abstract "); } @@ -195,6 +198,9 @@ function printClassProperty(path, options, print) { if (node.static) { parts.push("static "); } + if (node.override) { + parts.push("override "); + } if (node.type === "TSAbstractClassProperty" || node.abstract) { parts.push("abstract "); } diff --git a/src/language-js/print/flow.js b/src/language-js/print/flow.js index 1a23adbae..22a9d2408 100644 --- a/src/language-js/print/flow.js +++ b/src/language-js/print/flow.js @@ -83,6 +83,7 @@ function printFlow(path, options, print) { printTypeParameters(path, options, print, "typeParameters"), ]; case "IndexedAccessType": + case "OptionalIndexedAccessType": return printIndexedAccessType(path, options, print); // Type Annotations for Facebook Flow, typically stripped out or // transformed away before printing. diff --git a/src/language-js/print/type-annotation.js b/src/language-js/print/type-annotation.js index ce176da79..f37f518ba 100644 --- a/src/language-js/print/type-annotation.js +++ b/src/language-js/print/type-annotation.js @@ -297,9 +297,12 @@ function printTupleType(path, options, print) { ]); } -// `TSIndexedAccessType` and `IndexedAccessType` +// `TSIndexedAccessType`, `IndexedAccessType`, and `OptionalIndexedAccessType` function printIndexedAccessType(path, options, print) { - return [print("objectType"), "[", print("indexType"), "]"]; + const node = path.getValue(); + const leftDelimiter = + node.type === "OptionalIndexedAccessType" && node.optional ? "?.[" : "["; + return [print("objectType"), leftDelimiter, print("indexType"), "]"]; } module.exports = { diff --git a/src/language-js/print/typescript.js b/src/language-js/print/typescript.js index 498bba446..424818c77 100644 --- a/src/language-js/print/typescript.js +++ b/src/language-js/print/typescript.js @@ -350,8 +350,10 @@ function printTypescript(path, options, print) { ); } case "TSMethodSignature": { + const kind = node.kind && node.kind !== "method" ? `${node.kind} ` : ""; parts.push( node.accessibility ? [node.accessibility, " "] : "", + kind, node.export ? "export " : "", node.static ? "static " : "", node.readonly ? "readonly " : "", diff --git a/src/language-js/printer-estree.js b/src/language-js/printer-estree.js index f30f93e04..00e5ea291 100644 --- a/src/language-js/printer-estree.js +++ b/src/language-js/printer-estree.js @@ -620,7 +620,7 @@ function printPathNoParens(path, options, print, args) { return parts; } case "DoExpression": - return ["do ", print("body")]; + return [node.async ? "async " : "", "do ", print("body")]; case "BreakStatement": parts.push("break"); diff --git a/tests/format/flow/indexed-access/__snapshots__/jsfmt.spec.js.snap b/tests/format/flow/indexed-access/__snapshots__/jsfmt.spec.js.snap index e86dd7b6f..34996df5e 100644 --- a/tests/format/flow/indexed-access/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/flow/indexed-access/__snapshots__/jsfmt.spec.js.snap @@ -2,7 +2,7 @@ exports[`indexed-access.js - {"trailingComma":"all"} format 1`] = ` ====================================options===================================== -parsers: ["flow"] +parsers: ["flow", "babel"] printWidth: 80 trailingComma: "all" | printWidth diff --git a/tests/format/flow/indexed-access/jsfmt.spec.js b/tests/format/flow/indexed-access/jsfmt.spec.js index d61f17d01..092e61791 100644 --- a/tests/format/flow/indexed-access/jsfmt.spec.js +++ b/tests/format/flow/indexed-access/jsfmt.spec.js @@ -1 +1 @@ -run_spec(__dirname, ["flow"], { trailingComma: "all" }); +run_spec(__dirname, ["flow", "babel"], { trailingComma: "all" }); diff --git a/tests/format/flow/optional-indexed-access/__snapshots__/jsfmt.spec.js.snap b/tests/format/flow/optional-indexed-access/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 000000000..c9fc1b421 --- /dev/null +++ b/tests/format/flow/optional-indexed-access/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,28 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`optional-indexed-access.js - {"trailingComma":"all"} format 1`] = ` +====================================options===================================== +parsers: ["flow", "babel"] +printWidth: 80 +trailingComma: "all" + | printWidth +=====================================input====================================== +type A = Obj?.['foo']; + +type B = Obj?.['foo']['bar']; + +type C = Obj['foo']?.['bar']; + +type D = (Obj?.['foo'])['bar']; + +=====================================output===================================== +type A = Obj?.["foo"]; + +type B = Obj?.["foo"]["bar"]; + +type C = Obj["foo"]?.["bar"]; + +type D = (Obj?.["foo"])["bar"]; + +================================================================================ +`; diff --git a/tests/format/flow/optional-indexed-access/jsfmt.spec.js b/tests/format/flow/optional-indexed-access/jsfmt.spec.js new file mode 100644 index 000000000..092e61791 --- /dev/null +++ b/tests/format/flow/optional-indexed-access/jsfmt.spec.js @@ -0,0 +1 @@ +run_spec(__dirname, ["flow", "babel"], { trailingComma: "all" }); diff --git a/tests/format/flow/optional-indexed-access/optional-indexed-access.js b/tests/format/flow/optional-indexed-access/optional-indexed-access.js new file mode 100644 index 000000000..6ccf1e943 --- /dev/null +++ b/tests/format/flow/optional-indexed-access/optional-indexed-access.js @@ -0,0 +1,7 @@ +type A = Obj?.['foo']; + +type B = Obj?.['foo']['bar']; + +type C = Obj['foo']?.['bar']; + +type D = (Obj?.['foo'])['bar']; diff --git a/tests/format/js/async-do-expressions/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/async-do-expressions/__snapshots__/jsfmt.spec.js.snap new file mode 100644 index 000000000..1e44c20a3 --- /dev/null +++ b/tests/format/js/async-do-expressions/__snapshots__/jsfmt.spec.js.snap @@ -0,0 +1,87 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`async-do-expressions.js [espree] format 1`] = ` +"Unexpected token do (1:7) +> 1 | async do { + | ^ + 2 | 1; + 3 | }; + 4 |" +`; + +exports[`async-do-expressions.js [meriyah] format 1`] = ` +"[1:8]: Unexpected token: 'do' (1:8) +> 1 | async do { + | ^ + 2 | 1; + 3 | }; + 4 |" +`; + +exports[`async-do-expressions.js format 1`] = ` +====================================options===================================== +parsers: ["babel"] +printWidth: 80 + | printWidth +=====================================input====================================== +async do { + 1; +}; + +(async do {}); + +let x = async do { + if (foo()) { f() } + else if (bar()) { g() } + else { h() } +}; + +async do { + await 42 +} + +function iter() { + return async do { + return 1; + } +}; + +let x = async do { + let tmp = f(); + tmp * tmp + 1 +}; + +=====================================output===================================== +(async do { + 1; +}); + +(async do {}); + +let x = async do { + if (foo()) { + f(); + } else if (bar()) { + g(); + } else { + h(); + } +}; + +(async do { + await 42; +}); + +function iter() { + return async do { + return 1; + }; +} + +let x = async do { + let tmp = f(); + tmp * tmp + 1; +}; + +================================================================================ +`; diff --git a/tests/format/js/async-do-expressions/async-do-expressions.js b/tests/format/js/async-do-expressions/async-do-expressions.js new file mode 100644 index 000000000..fbd33b898 --- /dev/null +++ b/tests/format/js/async-do-expressions/async-do-expressions.js @@ -0,0 +1,26 @@ +async do { + 1; +}; + +(async do {}); + +let x = async do { + if (foo()) { f() } + else if (bar()) { g() } + else { h() } +}; + +async do { + await 42 +} + +function iter() { + return async do { + return 1; + } +}; + +let x = async do { + let tmp = f(); + tmp * tmp + 1 +}; diff --git a/tests/format/js/async-do-expressions/jsfmt.spec.js b/tests/format/js/async-do-expressions/jsfmt.spec.js new file mode 100644 index 000000000..0fab4456d --- /dev/null +++ b/tests/format/js/async-do-expressions/jsfmt.spec.js @@ -0,0 +1 @@ +run_spec(__dirname, ["babel"], { errors: { espree: true, meriyah: true } }); diff --git a/tests/format/js/babel-plugins/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/babel-plugins/__snapshots__/jsfmt.spec.js.snap index 919e06844..cf3b93fc4 100644 --- a/tests/format/js/babel-plugins/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/js/babel-plugins/__snapshots__/jsfmt.spec.js.snap @@ -1,5 +1,35 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP +exports[`async-do-expressions.js [espree] format 1`] = ` +"Unexpected token do (1:7) +> 1 | async do { await requestAPI().json() }; + | ^ + 2 |" +`; + +exports[`async-do-expressions.js [meriyah] format 1`] = ` +"[1:8]: Unexpected token: 'do' (1:8) +> 1 | async do { await requestAPI().json() }; + | ^ + 2 |" +`; + +exports[`async-do-expressions.js format 1`] = ` +====================================options===================================== +parsers: ["babel", "babel-ts", "babel-flow"] +printWidth: 80 + | printWidth +=====================================input====================================== +async do { await requestAPI().json() }; + +=====================================output===================================== +(async do { + await requestAPI().json(); +}); + +================================================================================ +`; + exports[`async-generators.js format 1`] = ` ====================================options===================================== parsers: ["babel", "babel-ts", "babel-flow"] diff --git a/tests/format/js/babel-plugins/async-do-expressions.js b/tests/format/js/babel-plugins/async-do-expressions.js new file mode 100644 index 000000000..d6fdc93e1 --- /dev/null +++ b/tests/format/js/babel-plugins/async-do-expressions.js @@ -0,0 +1 @@ +async do { await requestAPI().json() }; diff --git a/tests/format/js/babel-plugins/jsfmt.spec.js b/tests/format/js/babel-plugins/jsfmt.spec.js index c86bffb3f..87e4633cf 100644 --- a/tests/format/js/babel-plugins/jsfmt.spec.js +++ b/tests/format/js/babel-plugins/jsfmt.spec.js @@ -28,6 +28,7 @@ run_spec(__dirname, ["babel", "babel-ts", "babel-flow"], { "module-string-names.js", "class-static-block.js", "module-blocks.js", + "async-do-expressions.js", ], meriyah: [ "decimal.js", @@ -52,6 +53,7 @@ run_spec(__dirname, ["babel", "babel-ts", "babel-flow"], { "import-assertions-static.js", "module-string-names.js", "module-blocks.js", + "async-do-expressions.js", ], }, }); diff --git a/tests/format/js/call/invalid/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/call/invalid/__snapshots__/jsfmt.spec.js.snap index 23947f3ac..548d968e7 100644 --- a/tests/format/js/call/invalid/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/js/call/invalid/__snapshots__/jsfmt.spec.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`null-arguments-item.js [babel] format 1`] = ` -"Unexpected token ',' (1:12) +"Unexpected token ','. (1:12) > 1 | foor('a', , 'b'); | ^ 2 | foo('looooooooooooooooooooooooooooooooooooooooooooooong', , 'looooooooooooooooooooooooooooooooooooooooooooooong'); diff --git a/tests/format/js/reserved-word/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/reserved-word/__snapshots__/jsfmt.spec.js.snap index aebfef5b7..53dd4213b 100644 --- a/tests/format/js/reserved-word/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/js/reserved-word/__snapshots__/jsfmt.spec.js.snap @@ -1,15 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`interfaces.js [babel] format 1`] = ` -"Unexpected reserved word 'interface' (2:1) - 1 | foo.interface; -> 2 | interface.foo; - | ^ - 3 | new interface(); - 4 | ({ interface: \\"foo\\" }); - 5 | (interface, \\"foo\\");" -`; - exports[`interfaces.js format 1`] = ` ====================================options===================================== parsers: ["espree", "meriyah", "babel"] diff --git a/tests/format/js/reserved-word/jsfmt.spec.js b/tests/format/js/reserved-word/jsfmt.spec.js index d86dffcdf..a5ddd21b2 100644 --- a/tests/format/js/reserved-word/jsfmt.spec.js +++ b/tests/format/js/reserved-word/jsfmt.spec.js @@ -1,3 +1 @@ -run_spec(__dirname, ["espree", "meriyah", "babel"], { - errors: { babel: true }, -}); +run_spec(__dirname, ["espree", "meriyah", "babel"]); diff --git a/tests/format/js/tuple/__snapshots__/jsfmt.spec.js.snap b/tests/format/js/tuple/__snapshots__/jsfmt.spec.js.snap index 8edda8574..1d4ee9f7a 100644 --- a/tests/format/js/tuple/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/js/tuple/__snapshots__/jsfmt.spec.js.snap @@ -49,7 +49,7 @@ assert(rest[1] === 3); `; exports[`invalid-tuple-holes.js [babel] format 1`] = ` -"Unexpected token ',' (1:4) +"Unexpected token ','. (1:4) > 1 | #[,] | ^ 2 |" diff --git a/tests/format/misc/errors/babel-ts/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/babel-ts/__snapshots__/jsfmt.spec.js.snap index d02d906ea..ac122bb47 100644 --- a/tests/format/misc/errors/babel-ts/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/babel-ts/__snapshots__/jsfmt.spec.js.snap @@ -8,7 +8,7 @@ exports[`export-declare.ts [babel-ts] format 1`] = ` `; exports[`multiline-declaration-abstract-class.ts [babel-ts] format 1`] = ` -"Missing semicolon (1:8) +"Missing semicolon. (1:8) > 1 | declare abstract | ^ 2 | class A {} @@ -16,7 +16,7 @@ exports[`multiline-declaration-abstract-class.ts [babel-ts] format 1`] = ` `; exports[`multiline-declaration-interface.ts [babel-ts] format 1`] = ` -"Missing semicolon (1:8) +"Missing semicolon. (1:8) > 1 | declare interface | ^ 2 | I @@ -25,7 +25,7 @@ exports[`multiline-declaration-interface.ts [babel-ts] format 1`] = ` `; exports[`multiline-declaration-module.ts [babel-ts] format 1`] = ` -"Missing semicolon (1:8) +"Missing semicolon. (1:8) > 1 | declare module | ^ 2 | 'bar' @@ -34,7 +34,7 @@ exports[`multiline-declaration-module.ts [babel-ts] format 1`] = ` `; exports[`multiline-declaration-type.ts [babel-ts] format 1`] = ` -"Missing semicolon (1:8) +"Missing semicolon. (1:8) > 1 | declare type | ^ 2 | T = number diff --git a/tests/format/misc/errors/invalid-typescript-decorators/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/invalid-typescript-decorators/__snapshots__/jsfmt.spec.js.snap index bc249a442..8d1286b59 100644 --- a/tests/format/misc/errors/invalid-typescript-decorators/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/invalid-typescript-decorators/__snapshots__/jsfmt.spec.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`decorator.ts [babel-ts] format 1`] = ` -"Leading decorators must be attached to a class declaration (4:1) +"Leading decorators must be attached to a class declaration. (4:1) 2 | 3 | @dec > 4 | enum E {} @@ -21,7 +21,7 @@ exports[`decorator.ts [typescript] format 1`] = ` `; exports[`enums.ts [babel-ts] format 1`] = ` -"Leading decorators must be attached to a class declaration (4:1) +"Leading decorators must be attached to a class declaration. (4:1) 2 | 3 | @decorator() > 4 | enum Direction { @@ -53,7 +53,7 @@ exports[`enums.ts [typescript] format 1`] = ` `; exports[`function.ts [babel-ts] format 1`] = ` -"Leading decorators must be attached to a class declaration (4:1) +"Leading decorators must be attached to a class declaration. (4:1) 2 | 3 | @decorator() > 4 | function foo( ){} @@ -73,7 +73,7 @@ exports[`function.ts [typescript] format 1`] = ` `; exports[`interface.ts [babel-ts] format 1`] = ` -"Leading decorators must be attached to a class declaration (5:1) +"Leading decorators must be attached to a class declaration. (5:1) 3 | 4 | @hello() > 5 | interface MyInterface {id: string; @@ -96,7 +96,7 @@ exports[`interface.ts [typescript] format 1`] = ` `; exports[`issue-9102.ts [babel-ts] format 1`] = ` -"Leading decorators must be attached to a class declaration (2:1) +"Leading decorators must be attached to a class declaration. (2:1) 1 | @Decorator() > 2 | type T = 1; | ^ diff --git a/tests/format/misc/errors/invalid/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/invalid/__snapshots__/jsfmt.spec.js.snap index 890081290..ec26010ce 100644 --- a/tests/format/misc/errors/invalid/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/invalid/__snapshots__/jsfmt.spec.js.snap @@ -7,7 +7,7 @@ exports[`snippet: #0 [babel] format 1`] = ` `; exports[`snippet: #0 [babel] format 2`] = ` -"Invalid parenthesized assignment pattern (1:1) +"Invalid parenthesized assignment pattern. (1:1) > 1 | (a = b) = 1 | ^" `; @@ -19,7 +19,7 @@ exports[`snippet: #0 [babel-flow] format 1`] = ` `; exports[`snippet: #0 [babel-flow] format 2`] = ` -"Invalid parenthesized assignment pattern (1:1) +"Invalid parenthesized assignment pattern. (1:1) > 1 | (a = b) = 1 | ^" `; @@ -31,7 +31,7 @@ exports[`snippet: #0 [babel-ts] format 1`] = ` `; exports[`snippet: #0 [babel-ts] format 2`] = ` -"Invalid parenthesized assignment pattern (1:1) +"Invalid parenthesized assignment pattern. (1:1) > 1 | (a = b) = 1 | ^" `; @@ -73,37 +73,37 @@ exports[`snippet: #0 [typescript] format 1`] = ` `; exports[`snippet: #1 [babel] format 1`] = ` -"A class name is required (1:7) +"A class name is required. (1:7) > 1 | class switch() {} | ^" `; exports[`snippet: #1 [babel] format 2`] = ` -"Invalid left-hand side in assignment expression (1:5) +"Invalid left-hand side in assignment expression. (1:5) > 1 | a = 1 = 2 | ^" `; exports[`snippet: #1 [babel-flow] format 1`] = ` -"A class name is required (1:7) +"A class name is required. (1:7) > 1 | class switch() {} | ^" `; exports[`snippet: #1 [babel-flow] format 2`] = ` -"Invalid left-hand side in assignment expression (1:5) +"Invalid left-hand side in assignment expression. (1:5) > 1 | a = 1 = 2 | ^" `; exports[`snippet: #1 [babel-ts] format 1`] = ` -"A class name is required (1:7) +"A class name is required. (1:7) > 1 | class switch() {} | ^" `; exports[`snippet: #1 [babel-ts] format 2`] = ` -"Invalid left-hand side in assignment expression (1:5) +"Invalid left-hand side in assignment expression. (1:5) > 1 | a = 1 = 2 | ^" `; @@ -145,19 +145,19 @@ exports[`snippet: #1 [typescript] format 1`] = ` `; exports[`snippet: #2 [babel] format 1`] = ` -"Invalid parenthesized assignment pattern (1:1) +"Invalid parenthesized assignment pattern. (1:1) > 1 | (a = 1) = 2 | ^" `; exports[`snippet: #2 [babel-flow] format 1`] = ` -"Invalid parenthesized assignment pattern (1:1) +"Invalid parenthesized assignment pattern. (1:1) > 1 | (a = 1) = 2 | ^" `; exports[`snippet: #2 [babel-ts] format 1`] = ` -"Invalid parenthesized assignment pattern (1:1) +"Invalid parenthesized assignment pattern. (1:1) > 1 | (a = 1) = 2 | ^" `; @@ -175,19 +175,19 @@ exports[`snippet: #2 [meriyah] format 1`] = ` `; exports[`snippet: #3 [babel] format 1`] = ` -"Invalid parenthesized assignment pattern (1:1) +"Invalid parenthesized assignment pattern. (1:1) > 1 | (a += b) = 1 | ^" `; exports[`snippet: #3 [babel-flow] format 1`] = ` -"Invalid parenthesized assignment pattern (1:1) +"Invalid parenthesized assignment pattern. (1:1) > 1 | (a += b) = 1 | ^" `; exports[`snippet: #3 [babel-ts] format 1`] = ` -"Invalid parenthesized assignment pattern (1:1) +"Invalid parenthesized assignment pattern. (1:1) > 1 | (a += b) = 1 | ^" `; @@ -205,19 +205,19 @@ exports[`snippet: #3 [meriyah] format 1`] = ` `; exports[`snippet: #4 [babel] format 1`] = ` -"Invalid left-hand side in parenthesized expression (1:2) +"Invalid left-hand side in parenthesized expression. (1:2) > 1 | (a = b) += 1 | ^" `; exports[`snippet: #4 [babel-flow] format 1`] = ` -"Invalid left-hand side in parenthesized expression (1:2) +"Invalid left-hand side in parenthesized expression. (1:2) > 1 | (a = b) += 1 | ^" `; exports[`snippet: #4 [babel-ts] format 1`] = ` -"Invalid left-hand side in parenthesized expression (1:2) +"Invalid left-hand side in parenthesized expression. (1:2) > 1 | (a = b) += 1 | ^" `; diff --git a/tests/format/misc/errors/js/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/__snapshots__/jsfmt.spec.js.snap index 8a30eae86..25604bc3c 100644 --- a/tests/format/misc/errors/js/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/js/__snapshots__/jsfmt.spec.js.snap @@ -12,7 +12,7 @@ exports[`html-like-comments.js [babel] format 1`] = ` `; exports[`import-assertions-for-export-without-from.js [babel] format 1`] = ` -"Missing semicolon (1:15) +"Missing semicolon. (1:15) > 1 | export { foo } assert { type: \\"json\\" }; | ^ 2 |" @@ -26,7 +26,7 @@ exports[`import-assertions-with-parens.js [babel] format 1`] = ` `; exports[`invalid-escape-in-identifier.js [babel] format 1`] = ` -"Invalid Unicode escape (1:7) +"Invalid Unicode escape. (1:7) > 1 | const \\\\u{20} = 1 | ^ 2 | const \\\\u{3000} = 1 @@ -34,7 +34,7 @@ exports[`invalid-escape-in-identifier.js [babel] format 1`] = ` `; exports[`invalid-escape-in-identifier-2.js [babel] format 1`] = ` -"Expecting Unicode escape sequence \\\\uXXXX (1:3) +"Expecting Unicode escape sequence \\\\uXXXX. (1:3) > 1 | a\\\\ = a | ^ 2 |" @@ -126,25 +126,25 @@ exports[`snippet: #8 [babel] format 1`] = ` `; exports[`snippet: #9 [babel] format 1`] = ` -"Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar' (1:1) +"Tuple expressions starting with '[|' are only allowed when the 'syntaxType' option of the 'recordAndTuple' plugin is set to 'bar'. (1:1) > 1 | [| 1 |] | ^" `; exports[`snippet: #10 [babel] format 1`] = ` -"Invalid decimal (1:1) +"Invalid decimal. (1:1) > 1 | 0b101011101m; | ^" `; exports[`snippet: #11 [babel] format 1`] = ` -"Invalid decimal (1:1) +"Invalid decimal. (1:1) > 1 | 0x16432m; | ^" `; exports[`snippet: #12 [babel] format 1`] = ` -"Invalid decimal (1:1) +"Invalid decimal. (1:1) > 1 | 0o16432m; | ^" `; diff --git a/tests/format/misc/errors/js/assignment/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/assignment/__snapshots__/jsfmt.spec.js.snap index 0a7e2a259..0ccb7f5e1 100644 --- a/tests/format/misc/errors/js/assignment/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/js/assignment/__snapshots__/jsfmt.spec.js.snap @@ -1,13 +1,13 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snippet: #0 [babel] format 1`] = ` -"Invalid parenthesized assignment pattern (1:1) +"Invalid parenthesized assignment pattern. (1:1) > 1 | ({}) = x; | ^" `; exports[`snippet: #0 [babel-ts] format 1`] = ` -"Invalid parenthesized assignment pattern (1:1) +"Invalid parenthesized assignment pattern. (1:1) > 1 | ({}) = x; | ^" `; diff --git a/tests/format/misc/errors/js/async-await/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/async-await/__snapshots__/jsfmt.spec.js.snap index 867b0924d..ddcde031c 100644 --- a/tests/format/misc/errors/js/async-await/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/js/async-await/__snapshots__/jsfmt.spec.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snippet: #0 [babel] format 1`] = ` -"'await' is only allowed within async functions (2:20) +"'await' is not allowed in async function parameters. (2:20) 1 | async function foo() { > 2 | function bar(x = await 2) {} | ^ @@ -9,15 +9,13 @@ exports[`snippet: #0 [babel] format 1`] = ` `; exports[`snippet: #0 [babel] format 2`] = ` -"Unexpected reserved word 'await' (2:20) - 1 | async function foo() { -> 2 | function bar(x = await (2)) {} - | ^ - 3 | }" +"Illegal expression. Wrap left hand side or entire exponentiation in parentheses. (1:23) +> 1 | f = async () => await 5 ** 6; + | ^" `; exports[`snippet: #0 [babel] format 3`] = ` -"await is not allowed in async function parameters (1:12) +"'await' is not allowed in async function parameters. (1:12) > 1 | async (x = await (2)) => {}; | ^" `; @@ -75,18 +73,15 @@ exports[`snippet: #0 [meriyah] format 3`] = ` `; exports[`snippet: #1 [babel] format 1`] = ` -"await is not allowed in async function parameters (1:12) +"'await' is not allowed in async function parameters. (1:12) > 1 | async (x = await 2) => {}; | ^" `; exports[`snippet: #1 [babel] format 2`] = ` -"Unexpected reserved word 'await' (2:3) - 1 | function foo() { -> 2 | await - | ^ - 3 | foo; - 4 | }" +"Illegal expression. Wrap left hand side or entire exponentiation in parentheses. (1:23) +> 1 | f = async () => await -5 ** 6; + | ^" `; exports[`snippet: #1 [espree] format 1`] = ` @@ -120,313 +115,96 @@ exports[`snippet: #1 [meriyah] format 2`] = ` `; exports[`snippet: #2 [babel] format 1`] = ` -"'await' is only allowed within async functions (1:25) -> 1 | function foo(promise) { await promise; } - | ^" -`; - -exports[`snippet: #2 [babel] format 2`] = ` -"Unexpected reserved word 'await' (1:25) -> 1 | function foo(promise) { await (promise); } - | ^" -`; - -exports[`snippet: #2 [espree] format 1`] = ` -"Cannot use keyword 'await' outside an async function (1:25) -> 1 | function foo(promise) { await promise; } - | ^" -`; - -exports[`snippet: #2 [flow] format 1`] = ` -"Unexpected identifier, expected the end of an expression statement (\`;\`) (1:31) -> 1 | function foo(promise) { await promise; } - | ^^^^^^^" -`; - -exports[`snippet: #2 [meriyah] format 1`] = ` -"[1:29]: 'Await' may not be used as an identifier in this context (1:29) -> 1 | function foo(promise) { await promise; } - | ^" -`; - -exports[`snippet: #3 [babel] format 1`] = ` -"'await' is only allowed within async functions (2:10) - 1 | function a() { -> 2 | return await 1 - | ^ - 3 | }" -`; - -exports[`snippet: #3 [babel] format 2`] = ` -"Unexpected reserved word 'await' (2:10) - 1 | function a() { -> 2 | return await (1) - | ^ - 3 | }" -`; - -exports[`snippet: #3 [espree] format 1`] = ` -"Cannot use keyword 'await' outside an async function (2:10) - 1 | function a() { -> 2 | return await 1 - | ^ - 3 | }" -`; - -exports[`snippet: #3 [flow] format 1`] = ` -"Unexpected number, expected the token \`;\` (2:16) - 1 | function a() { -> 2 | return await 1 - | ^ - 3 | }" -`; - -exports[`snippet: #3 [meriyah] format 1`] = ` -"[2:14]: 'Await' may not be used as an identifier in this context (2:14) - 1 | function a() { -> 2 | return await 1 - | ^ - 3 | }" -`; - -exports[`snippet: #4 [babel] format 1`] = ` -"'await' is only allowed within async functions (1:9) -> 1 | () => { await x }; - | ^" -`; - -exports[`snippet: #4 [babel] format 2`] = ` -"Unexpected reserved word 'await' (1:9) -> 1 | () => { await (x) }; - | ^" -`; - -exports[`snippet: #4 [espree] format 1`] = ` -"Cannot use keyword 'await' outside an async function (1:9) -> 1 | () => { await x }; - | ^" -`; - -exports[`snippet: #4 [flow] format 1`] = ` -"Unexpected identifier, expected the end of an expression statement (\`;\`) (1:15) -> 1 | () => { await x }; - | ^" -`; - -exports[`snippet: #4 [meriyah] format 1`] = ` -"[1:13]: 'Await' may not be used as an identifier in this context (1:13) -> 1 | () => { await x }; - | ^" -`; - -exports[`snippet: #5 [babel] format 1`] = ` -"Unexpected reserved word 'await' (1:37) -> 1 | C = class { static { function f() { await } } }; - | ^" -`; - -exports[`snippet: #5 [babel] format 2`] = ` -"Unexpected reserved word 'await' (2:3) - 1 | function foo() { -> 2 | await - | ^ - 3 | (foo); - 4 | }" -`; - -exports[`snippet: #5 [espree] format 1`] = ` -"Unexpected token { (1:20) -> 1 | C = class { static { function f() { await } } }; - | ^" -`; - -exports[`snippet: #5 [flow] format 1`] = ` -"Unexpected token \`{\`, expected an identifier (1:20) -> 1 | C = class { static { function f() { await } } }; - | ^" -`; - -exports[`snippet: #5 [meriyah] format 1`] = ` -"[1:20]: Unexpected token: '{' (1:20) -> 1 | C = class { static { function f() { await } } }; - | ^" -`; - -exports[`snippet: #6 [babel] format 1`] = ` -"Unexpected reserved word 'await' (1:33) -> 1 | C = class { static { function f(await) {} } }; - | ^" -`; - -exports[`snippet: #6 [babel] format 2`] = ` -"Illegal expression. Wrap left hand side or entire exponentiation in parentheses. (1:23) -> 1 | f = async () => await 5 ** 6; - | ^" -`; - -exports[`snippet: #6 [espree] format 1`] = ` -"Unexpected token { (1:20) -> 1 | C = class { static { function f(await) {} } }; - | ^" -`; - -exports[`snippet: #6 [flow] format 1`] = ` -"Unexpected token \`{\`, expected an identifier (1:20) -> 1 | C = class { static { function f(await) {} } }; - | ^" -`; - -exports[`snippet: #6 [meriyah] format 1`] = ` -"[1:20]: Unexpected token: '{' (1:20) -> 1 | C = class { static { function f(await) {} } }; - | ^" -`; - -exports[`snippet: #7 [babel] format 1`] = ` -"Unexpected reserved word 'await' (1:37) -> 1 | C = class { static { function f(x = await) {} } }; - | ^" -`; - -exports[`snippet: #7 [babel] format 2`] = ` -"Illegal expression. Wrap left hand side or entire exponentiation in parentheses. (1:23) -> 1 | f = async () => await -5 ** 6; - | ^" -`; - -exports[`snippet: #7 [espree] format 1`] = ` -"Unexpected token { (1:20) -> 1 | C = class { static { function f(x = await) {} } }; - | ^" -`; - -exports[`snippet: #7 [flow] format 1`] = ` -"Unexpected token \`{\`, expected an identifier (1:20) -> 1 | C = class { static { function f(x = await) {} } }; - | ^" -`; - -exports[`snippet: #7 [meriyah] format 1`] = ` -"[1:20]: Unexpected token: '{' (1:20) -> 1 | C = class { static { function f(x = await) {} } }; - | ^" -`; - -exports[`snippet: #8 [babel] format 1`] = ` -"Unexpected reserved word 'await' (1:36) -> 1 | C = class { static { function f({ [await]: x }) {} } }; - | ^" -`; - -exports[`snippet: #8 [espree] format 1`] = ` -"Unexpected token { (1:20) -> 1 | C = class { static { function f({ [await]: x }) {} } }; - | ^" -`; - -exports[`snippet: #8 [flow] format 1`] = ` -"Unexpected token \`{\`, expected an identifier (1:20) -> 1 | C = class { static { function f({ [await]: x }) {} } }; - | ^" -`; - -exports[`snippet: #8 [meriyah] format 1`] = ` -"[1:20]: Unexpected token: '{' (1:20) -> 1 | C = class { static { function f({ [await]: x }) {} } }; - | ^" -`; - -exports[`snippet: #9 [babel] format 1`] = ` "Unexpected token (1:27) > 1 | f = async (a) => await a! ** 6; | ^" `; -exports[`snippet: #9 [espree] format 1`] = ` +exports[`snippet: #2 [espree] format 1`] = ` "Unexpected token ! (1:25) > 1 | f = async (a) => await a! ** 6; | ^" `; -exports[`snippet: #9 [flow] format 1`] = ` +exports[`snippet: #2 [flow] format 1`] = ` "Unexpected token \`!\`, expected the end of an expression statement (\`;\`) (1:25) > 1 | f = async (a) => await a! ** 6; | ^" `; -exports[`snippet: #9 [meriyah] format 1`] = ` +exports[`snippet: #2 [meriyah] format 1`] = ` "[1:25]: Unexpected token: '!' (1:25) > 1 | f = async (a) => await a! ** 6; | ^" `; -exports[`snippet: #10 [babel] format 1`] = ` +exports[`snippet: #3 [babel] format 1`] = ` "Unexpected token (1:16) > 1 | f = (a) => +a! ** 6; | ^" `; -exports[`snippet: #10 [espree] format 1`] = ` +exports[`snippet: #3 [espree] format 1`] = ` "Unexpected token ! (1:14) > 1 | f = (a) => +a! ** 6; | ^" `; -exports[`snippet: #10 [flow] format 1`] = ` +exports[`snippet: #3 [flow] format 1`] = ` "Unexpected token \`!\`, expected the end of an expression statement (\`;\`) (1:14) > 1 | f = (a) => +a! ** 6; | ^" `; -exports[`snippet: #10 [meriyah] format 1`] = ` +exports[`snippet: #3 [meriyah] format 1`] = ` "[1:14]: Unexpected token: '!' (1:14) > 1 | f = (a) => +a! ** 6; | ^" `; -exports[`snippet: #11 [babel] format 1`] = ` +exports[`snippet: #4 [babel] format 1`] = ` "Unexpected token, expected \\",\\" (1:22) > 1 | async (a) => (await a!) ** 6; | ^" `; -exports[`snippet: #11 [espree] format 1`] = ` +exports[`snippet: #4 [espree] format 1`] = ` "Unexpected token ! (1:22) > 1 | async (a) => (await a!) ** 6; | ^" `; -exports[`snippet: #11 [flow] format 1`] = ` +exports[`snippet: #4 [flow] format 1`] = ` "Unexpected token \`!\`, expected the token \`)\` (1:22) > 1 | async (a) => (await a!) ** 6; | ^" `; -exports[`snippet: #11 [meriyah] format 1`] = ` +exports[`snippet: #4 [meriyah] format 1`] = ` "[1:22]: Expected ')' (1:22) > 1 | async (a) => (await a!) ** 6; | ^" `; -exports[`snippet: #12 [babel] format 1`] = ` +exports[`snippet: #5 [babel] format 1`] = ` "Illegal expression. Wrap left hand side or entire exponentiation in parentheses. (1:3) > 1 | (-+5 ** 6); | ^" `; -exports[`snippet: #12 [espree] format 1`] = ` +exports[`snippet: #5 [espree] format 1`] = ` "Unexpected token ** (1:6) > 1 | (-+5 ** 6); | ^" `; -exports[`snippet: #12 [flow] format 1`] = ` +exports[`snippet: #5 [flow] format 1`] = ` "Invalid left-hand side in exponentiation expression (1:2) > 1 | (-+5 ** 6); | ^^^" `; -exports[`snippet: #12 [meriyah] format 1`] = ` +exports[`snippet: #5 [meriyah] format 1`] = ` "[1:7]: Unary expressions as the left operand of an exponentiation expression must be disambiguated with parentheses (1:7) > 1 | (-+5 ** 6); | ^" diff --git a/tests/format/misc/errors/js/async-await/jsfmt.spec.js b/tests/format/misc/errors/js/async-await/jsfmt.spec.js index c6f50dc49..752a145ac 100644 --- a/tests/format/misc/errors/js/async-await/jsfmt.spec.js +++ b/tests/format/misc/errors/js/async-await/jsfmt.spec.js @@ -10,17 +10,6 @@ run_spec( } `, "async (x = await 2) => {};", - "function foo(promise) { await promise; }", - outdent` - function a() { - return await 1 - } - `, - "() => { await x };", - "C = class { static { function f() { await } } };", - "C = class { static { function f(await) {} } };", - "C = class { static { function f(x = await) {} } };", - "C = class { static { function f({ [await]: x }) {} } };", "f = async (a) => await a! ** 6;", "f = (a) => +a! ** 6;", "async (a) => (await a!) ** 6;", @@ -41,30 +30,6 @@ run_spec( { dirname: __dirname, snippets: [ - outdent` - async function foo() { - function bar(x = await (2)) {} - } - `, - outdent` - function foo() { - await - foo; - } - `, - "function foo(promise) { await (promise); }", - outdent` - function a() { - return await (1) - } - `, - "() => { await (x) };", - outdent` - function foo() { - await - (foo); - } - `, // `espree` and `meriyah` didn't throw "f = async () => await 5 ** 6;", // `espree` didn't throw diff --git a/tests/format/misc/errors/js/for-of/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/for-of/__snapshots__/jsfmt.spec.js.snap index 43272db5b..55b11f6e9 100644 --- a/tests/format/misc/errors/js/for-of/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/js/for-of/__snapshots__/jsfmt.spec.js.snap @@ -1,13 +1,13 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snippet: #0 [babel] format 1`] = ` -"Unexpected reserved word 'let' (1:6) +"The left-hand side of a for-of loop may not start with 'let'. (1:6) > 1 | for (let.foo of []); | ^" `; exports[`snippet: #0 [babel-flow] format 1`] = ` -"Unexpected reserved word 'let' (1:6) +"The left-hand side of a for-of loop may not start with 'let'. (1:6) > 1 | for (let.foo of []); | ^" `; @@ -37,13 +37,13 @@ exports[`snippet: #0 [typescript] format 1`] = ` `; exports[`snippet: #1 [babel] format 1`] = ` -"Unexpected reserved word 'let' (1:6) +"The left-hand side of a for-of loop may not start with 'let'. (1:6) > 1 | for (let().bar of []); | ^" `; exports[`snippet: #1 [babel-flow] format 1`] = ` -"Unexpected reserved word 'let' (1:6) +"The left-hand side of a for-of loop may not start with 'let'. (1:6) > 1 | for (let().bar of []); | ^" `; @@ -73,13 +73,13 @@ exports[`snippet: #1 [typescript] format 1`] = ` `; exports[`snippet: #2 [babel] format 1`] = ` -"Unexpected reserved word 'let' (1:6) +"The left-hand side of a for-of loop may not start with 'let'. (1:6) > 1 | for (let\`\`.bar of []); | ^" `; exports[`snippet: #2 [babel-flow] format 1`] = ` -"Unexpected reserved word 'let' (1:6) +"The left-hand side of a for-of loop may not start with 'let'. (1:6) > 1 | for (let\`\`.bar of []); | ^" `; diff --git a/tests/format/misc/errors/js/import/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/import/__snapshots__/jsfmt.spec.js.snap index 6ebbb7135..c2989ca01 100644 --- a/tests/format/misc/errors/js/import/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/js/import/__snapshots__/jsfmt.spec.js.snap @@ -1,19 +1,19 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snippet: #0 [babel] format 1`] = ` -"import() requires exactly one or two arguments (1:1) +"\`import()\` requires exactly one or two arguments. (1:1) > 1 | import(); | ^" `; exports[`snippet: #0 [babel-flow] format 1`] = ` -"import() requires exactly one or two arguments (1:1) +"\`import()\` requires exactly one or two arguments. (1:1) > 1 | import(); | ^" `; exports[`snippet: #0 [babel-ts] format 1`] = ` -"import() requires exactly one or two arguments (1:1) +"\`import()\` requires exactly one or two arguments. (1:1) > 1 | import(); | ^" `; @@ -43,19 +43,19 @@ exports[`snippet: #0 [typescript] format 1`] = ` `; exports[`snippet: #1 [babel] format 1`] = ` -"import() requires exactly one or two arguments (1:1) +"\`import()\` requires exactly one or two arguments. (1:1) > 1 | import(/* comment */); | ^" `; exports[`snippet: #1 [babel-flow] format 1`] = ` -"import() requires exactly one or two arguments (1:1) +"\`import()\` requires exactly one or two arguments. (1:1) > 1 | import(/* comment */); | ^" `; exports[`snippet: #1 [babel-ts] format 1`] = ` -"import() requires exactly one or two arguments (1:1) +"\`import()\` requires exactly one or two arguments. (1:1) > 1 | import(/* comment */); | ^" `; @@ -85,19 +85,19 @@ exports[`snippet: #1 [typescript] format 1`] = ` `; exports[`snippet: #2 [babel] format 1`] = ` -"Cannot use new with import(...) (1:5) +"Cannot use new with import(...). (1:5) > 1 | new import('./a.mjs'); | ^" `; exports[`snippet: #2 [babel-flow] format 1`] = ` -"Cannot use new with import(...) (1:5) +"Cannot use new with import(...). (1:5) > 1 | new import('./a.mjs'); | ^" `; exports[`snippet: #2 [babel-ts] format 1`] = ` -"Cannot use new with import(...) (1:5) +"Cannot use new with import(...). (1:5) > 1 | new import('./a.mjs'); | ^" `; @@ -127,19 +127,19 @@ exports[`snippet: #2 [typescript] format 1`] = ` `; exports[`snippet: #3 [babel] format 1`] = ` -"Cannot use new with import(...) (1:5) +"Cannot use new with import(...). (1:5) > 1 | new import(); | ^" `; exports[`snippet: #3 [babel-flow] format 1`] = ` -"Cannot use new with import(...) (1:5) +"Cannot use new with import(...). (1:5) > 1 | new import(); | ^" `; exports[`snippet: #3 [babel-ts] format 1`] = ` -"Cannot use new with import(...) (1:5) +"Cannot use new with import(...). (1:5) > 1 | new import(); | ^" `; diff --git a/tests/format/misc/errors/js/literal/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/literal/__snapshots__/jsfmt.spec.js.snap index 405915a8b..d87a75dfc 100644 --- a/tests/format/misc/errors/js/literal/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/js/literal/__snapshots__/jsfmt.spec.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`invalid-exponent.js [babel] format 1`] = ` -"Floating-point numbers require a valid exponent after the 'e' (1:1) +"Floating-point numbers require a valid exponent after the 'e'. (1:1) > 1 | 12.3e | ^ 2 |" diff --git a/tests/format/misc/errors/js/object/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/object/__snapshots__/jsfmt.spec.js.snap index 4d3ab9670..62586b9b4 100644 --- a/tests/format/misc/errors/js/object/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/js/object/__snapshots__/jsfmt.spec.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`getter-generator.js [babel] format 1`] = ` -"A getter cannot be a generator (2:10) +"A getter cannot be a generator. (2:10) 1 | ({ > 2 | get *iterator() { }, | ^ @@ -28,7 +28,7 @@ exports[`getter-generator.js [meriyah] format 1`] = ` `; exports[`getter-with-parameter.js [babel] format 1`] = ` -"getter must not have any formal parameters (1:4) +"A 'get' accesor must not have any formal parameters. (1:4) > 1 | ({ get x(a){} }); | ^ 2 |" @@ -49,7 +49,7 @@ exports[`getter-with-parameter.js [meriyah] format 1`] = ` `; exports[`setter-generator.js [babel] format 1`] = ` -"A setter cannot be a generator (2:10) +"A setter cannot be a generator. (2:10) 1 | ({ > 2 | set *iterator(iter) { }, | ^ @@ -76,7 +76,7 @@ exports[`setter-generator.js [meriyah] format 1`] = ` `; exports[`setter-without-parameter.js [babel] format 1`] = ` -"setter must have exactly one formal parameter (1:4) +"A 'set' accesor must have exactly one formal parameter. (1:4) > 1 | ({ set x(){} }); | ^ 2 |" diff --git a/tests/format/misc/errors/js/optional-chaining/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/optional-chaining/__snapshots__/jsfmt.spec.js.snap index 528f4be9b..179260429 100644 --- a/tests/format/misc/errors/js/optional-chaining/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/js/optional-chaining/__snapshots__/jsfmt.spec.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snippet: #0 [babel] format 1`] = ` -"constructors in/after an Optional Chain are not allowed (1:36) +"Constructors in/after an Optional Chain are not allowed. (1:36) > 1 | const baz3 = new obj?.foo?.bar?.baz(); // baz instance | ^" `; @@ -19,7 +19,7 @@ exports[`snippet: #0 [meriyah] format 1`] = ` `; exports[`snippet: #1 [babel] format 1`] = ` -"constructors in/after an Optional Chain are not allowed (1:32) +"Constructors in/after an Optional Chain are not allowed. (1:32) > 1 | const safe5 = new obj?.qux?.baz(); // undefined | ^" `; @@ -37,7 +37,7 @@ exports[`snippet: #1 [meriyah] format 1`] = ` `; exports[`snippet: #2 [babel] format 1`] = ` -"constructors in/after an Optional Chain are not allowed (1:35) +"Constructors in/after an Optional Chain are not allowed. (1:35) > 1 | const safe6 = new obj?.foo.bar.qux?.(); // undefined | ^" `; @@ -55,7 +55,7 @@ exports[`snippet: #2 [meriyah] format 1`] = ` `; exports[`snippet: #3 [babel] format 1`] = ` -"constructors in/after an Optional Chain are not allowed (1:39) +"Constructors in/after an Optional Chain are not allowed. (1:39) > 1 | const willThrow = new obj?.foo.bar.qux(); // Error: not a constructor | ^" `; @@ -73,7 +73,7 @@ exports[`snippet: #3 [meriyah] format 1`] = ` `; exports[`snippet: #4 [babel] format 1`] = ` -"constructors in/after an Optional Chain are not allowed (4:11) +"Constructors in/after an Optional Chain are not allowed. (4:11) 2 | class Test { 3 | } > 4 | new Test?.(); // test instance @@ -97,7 +97,7 @@ exports[`snippet: #4 [meriyah] format 1`] = ` `; exports[`snippet: #5 [babel] format 1`] = ` -"constructors in/after an Optional Chain are not allowed (1:13) +"Constructors in/after an Optional Chain are not allowed. (1:13) > 1 | new exists?.(); // undefined | ^" `; diff --git a/tests/format/misc/errors/js/record/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/record/__snapshots__/jsfmt.spec.js.snap index 4f848604d..e53d48b7f 100644 --- a/tests/format/misc/errors/js/record/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/js/record/__snapshots__/jsfmt.spec.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snippet: #0 [babel] format 1`] = ` -"Only properties and spread elements are allowed in record definitions (1:3) +"Only properties and spread elements are allowed in record definitions. (1:3) > 1 | #{a() {}} | ^" `; @@ -19,7 +19,7 @@ exports[`snippet: #0 [meriyah] format 1`] = ` `; exports[`snippet: #1 [babel] format 1`] = ` -"Only properties and spread elements are allowed in record definitions (1:3) +"Only properties and spread elements are allowed in record definitions. (1:3) > 1 | #{async b() {}} | ^" `; @@ -37,7 +37,7 @@ exports[`snippet: #1 [meriyah] format 1`] = ` `; exports[`snippet: #2 [babel] format 1`] = ` -"Only properties and spread elements are allowed in record definitions (1:3) +"Only properties and spread elements are allowed in record definitions. (1:3) > 1 | #{get c() {}} | ^" `; @@ -55,7 +55,7 @@ exports[`snippet: #2 [meriyah] format 1`] = ` `; exports[`snippet: #3 [babel] format 1`] = ` -"Only properties and spread elements are allowed in record definitions (1:3) +"Only properties and spread elements are allowed in record definitions. (1:3) > 1 | #{set d(_) {}} | ^" `; @@ -73,7 +73,7 @@ exports[`snippet: #3 [meriyah] format 1`] = ` `; exports[`snippet: #4 [babel] format 1`] = ` -"Only properties and spread elements are allowed in record definitions (1:3) +"Only properties and spread elements are allowed in record definitions. (1:3) > 1 | #{*e() {}} | ^" `; diff --git a/tests/format/misc/errors/js/reserved-word/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/reserved-word/__snapshots__/jsfmt.spec.js.snap index d8dbb0f1b..46a221a0f 100644 --- a/tests/format/misc/errors/js/reserved-word/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/js/reserved-word/__snapshots__/jsfmt.spec.js.snap @@ -1,11 +1,5 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP -exports[`snippet: #0 [babel] format 1`] = ` -"Unexpected reserved word 'interface' (1:1) -> 1 | interface = \\"foo\\"; - | ^" -`; - exports[`snippet: #0 [espree] format 1`] = ` "The keyword 'interface' is reserved (1:7) > 1 | class interface {} @@ -18,12 +12,6 @@ exports[`snippet: #0 [meriyah] format 1`] = ` | ^" `; -exports[`snippet: #1 [babel] format 1`] = ` -"Unexpected reserved word 'interface' (1:1) -> 1 | interface + 3; - | ^" -`; - exports[`snippet: #1 [espree] format 1`] = ` "The keyword 'interface' is reserved (1:8) > 1 | import interface from \\"foo\\"; @@ -35,63 +23,3 @@ exports[`snippet: #1 [meriyah] format 1`] = ` > 1 | import interface from \\"foo\\"; | ^" `; - -exports[`snippet: #2 [babel] format 1`] = ` -"Unexpected reserved word 'interface' (1:1) -> 1 | interface(); - | ^" -`; - -exports[`snippet: #3 [babel] format 1`] = ` -"Unexpected reserved word 'interface' (1:7) -> 1 | class interface {} - | ^" -`; - -exports[`snippet: #4 [babel] format 1`] = ` -"Unexpected reserved word 'interface' (1:1) -> 1 | interface ? true : false; - | ^" -`; - -exports[`snippet: #5 [babel] format 1`] = ` -"Unexpected reserved word 'interface' (1:10) -> 1 | function interface() {} - | ^" -`; - -exports[`snippet: #6 [babel] format 1`] = ` -"Unexpected reserved word 'interface' (1:8) -> 1 | import interface from \\"foo\\"; - | ^" -`; - -exports[`snippet: #7 [babel] format 1`] = ` -"Unexpected reserved word 'interface' (1:1) -> 1 | interface.foo; - | ^" -`; - -exports[`snippet: #8 [babel] format 1`] = ` -"Unexpected reserved word 'interface' (1:5) -> 1 | new interface(); - | ^" -`; - -exports[`snippet: #9 [babel] format 1`] = ` -"Unexpected reserved word 'interface' (1:2) -> 1 | (interface, \\"foo\\"); - | ^" -`; - -exports[`snippet: #10 [babel] format 1`] = ` -"Unexpected reserved word 'interface' (1:6) -> 1 | void interface; - | ^" -`; - -exports[`snippet: #11 [babel] format 1`] = ` -"Unexpected reserved word 'interface' (1:7) -> 1 | const interface = \\"foo\\"; - | ^" -`; diff --git a/tests/format/misc/errors/js/reserved-word/jsfmt.spec.js b/tests/format/misc/errors/js/reserved-word/jsfmt.spec.js index bbc1081b7..6f3610aa3 100644 --- a/tests/format/misc/errors/js/reserved-word/jsfmt.spec.js +++ b/tests/format/misc/errors/js/reserved-word/jsfmt.spec.js @@ -5,24 +5,3 @@ run_spec( }, ["espree", "meriyah"] ); - -run_spec( - { - dirname: __dirname, - snippets: [ - 'interface = "foo";', - "interface + 3;", - "interface();", - "class interface {}", - "interface ? true : false;", - "function interface() {}", - 'import interface from "foo";', - "interface.foo;", - "new interface();", - '(interface, "foo");', - "void interface;", - 'const interface = "foo";', - ], - }, - ["babel"] -); diff --git a/tests/format/misc/errors/js/smart-pipeline/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/smart-pipeline/__snapshots__/jsfmt.spec.js.snap index cab697b39..511af6d84 100644 --- a/tests/format/misc/errors/js/smart-pipeline/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/js/smart-pipeline/__snapshots__/jsfmt.spec.js.snap @@ -1,61 +1,61 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`snippet: #0 [babel] format 1`] = ` -"Pipeline is in topic style but does not use topic reference (1:39) +"Pipeline is in topic style but does not use topic reference. (1:39) > 1 | async function * a() { a |> foo(#) |> (yield y)} | ^" `; exports[`snippet: #1 [babel] format 1`] = ` -"Pipeline is in topic style but does not use topic reference (1:39) +"Pipeline is in topic style but does not use topic reference. (1:39) > 1 | async function * a() { a |> foo(#) |> (yield)} | ^" `; exports[`snippet: #2 [babel] format 1`] = ` -"Pipeline is in topic style but does not use topic reference (1:39) +"Pipeline is in topic style but does not use topic reference. (1:39) > 1 | async function * a() { a |> foo(#) |> (await y)} | ^" `; exports[`snippet: #3 [babel] format 1`] = ` -"Pipeline is in topic style but does not use topic reference (1:39) +"Pipeline is in topic style but does not use topic reference. (1:39) > 1 | async function * a() { a |> foo(#) |> (a?.b)} | ^" `; exports[`snippet: #4 [babel] format 1`] = ` -"Pipeline is in topic style but does not use topic reference (1:39) +"Pipeline is in topic style but does not use topic reference. (1:39) > 1 | async function * a() { a |> foo(#) |> a?.b} | ^" `; exports[`snippet: #5 [babel] format 1`] = ` -"Pipeline is in topic style but does not use topic reference (1:39) +"Pipeline is in topic style but does not use topic reference. (1:39) > 1 | async function * a() { a |> foo(#) |> (a.b())} | ^" `; exports[`snippet: #6 [babel] format 1`] = ` -"Pipeline is in topic style but does not use topic reference (1:39) +"Pipeline is in topic style but does not use topic reference. (1:39) > 1 | async function * a() { a |> foo(#) |> a.b()} | ^" `; exports[`snippet: #7 [babel] format 1`] = ` -"Pipeline is in topic style but does not use topic reference (1:39) +"Pipeline is in topic style but does not use topic reference. (1:39) > 1 | async function * a() { a |> foo(#) |> (a.b?.())} | ^" `; exports[`snippet: #8 [babel] format 1`] = ` -"Pipeline is in topic style but does not use topic reference (1:39) +"Pipeline is in topic style but does not use topic reference. (1:39) > 1 | async function * a() { a |> foo(#) |> a.b?.()} | ^" `; exports[`snippet: #9 [babel] format 1`] = ` -"Can not use 'yield' as identifier inside a generator (1:39) +"Can not use 'yield' as identifier inside a generator. (1:39) > 1 | async function * a() { a |> foo(#) |> yield} | ^" `; diff --git a/tests/format/misc/errors/js/variable-declarator/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/js/variable-declarator/__snapshots__/jsfmt.spec.js.snap index 77b162d0b..bb0c30f34 100644 --- a/tests/format/misc/errors/js/variable-declarator/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/js/variable-declarator/__snapshots__/jsfmt.spec.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`invalid-const.js [babel] format 1`] = ` -"Const declarations require an initialization value (1:10) +"'Const declarations' require an initialization value. (1:10) > 1 | const foo; | ^ 2 |" diff --git a/tests/format/misc/errors/json/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/json/__snapshots__/jsfmt.spec.js.snap index 64203754d..128c9cbd2 100644 --- a/tests/format/misc/errors/json/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/json/__snapshots__/jsfmt.spec.js.snap @@ -91,19 +91,19 @@ exports[`snippet: #4 [json5] format 1`] = ` `; exports[`snippet: #5 [json] format 1`] = ` -"Expecting Unicode escape sequence \\\\uXXXX (1:10) +"Expecting Unicode escape sequence \\\\uXXXX. (1:10) > 1 | packages\\\\the-hub\\\\cypress\\\\fixtures\\\\gridConfiguration.json | ^" `; exports[`snippet: #5 [json-stringify] format 1`] = ` -"Expecting Unicode escape sequence \\\\uXXXX (1:10) +"Expecting Unicode escape sequence \\\\uXXXX. (1:10) > 1 | packages\\\\the-hub\\\\cypress\\\\fixtures\\\\gridConfiguration.json | ^" `; exports[`snippet: #5 [json5] format 1`] = ` -"Expecting Unicode escape sequence \\\\uXXXX (1:10) +"Expecting Unicode escape sequence \\\\uXXXX. (1:10) > 1 | packages\\\\the-hub\\\\cypress\\\\fixtures\\\\gridConfiguration.json | ^" `; @@ -601,19 +601,19 @@ exports[`snippet: #32 [json5] format 1`] = ` `; exports[`snippet: #33 [json] format 1`] = ` -"Invalid left-hand side in prefix operation (1:5) +"Invalid left-hand side in prefix operation. (1:5) > 1 | ----123 | ^" `; exports[`snippet: #33 [json-stringify] format 1`] = ` -"Invalid left-hand side in prefix operation (1:5) +"Invalid left-hand side in prefix operation. (1:5) > 1 | ----123 | ^" `; exports[`snippet: #33 [json5] format 1`] = ` -"Invalid left-hand side in prefix operation (1:5) +"Invalid left-hand side in prefix operation. (1:5) > 1 | ----123 | ^" `; diff --git a/tests/format/misc/errors/typescript/babel-ts/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/errors/typescript/babel-ts/__snapshots__/jsfmt.spec.js.snap index 7ad575c2f..c0cb2df8c 100644 --- a/tests/format/misc/errors/typescript/babel-ts/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/errors/typescript/babel-ts/__snapshots__/jsfmt.spec.js.snap @@ -27,19 +27,19 @@ exports[`declare-accessor.ts [babel-ts] format 1`] = ` `; exports[`snippet: #0 [babel-ts] format 1`] = ` -"Invalid left-hand side in assignment expression (1:1) +"Invalid left-hand side in assignment expression. (1:1) > 1 | foo as any = 10; | ^" `; exports[`snippet: #1 [babel-ts] format 1`] = ` -"Invalid left-hand side in assignment expression (1:7) +"Invalid left-hand side in assignment expression. (1:7) > 1 | ({ a: b as any = 2000 } = x); | ^" `; exports[`snippet: #2 [babel-ts] format 1`] = ` -"Unterminated JSX contents (1:9) +"Unterminated JSX contents. (1:9) > 1 | foo = '100'; | ^" `; diff --git a/tests/format/misc/typescript-babel-only/__snapshots__/jsfmt.spec.js.snap b/tests/format/misc/typescript-babel-only/__snapshots__/jsfmt.spec.js.snap index 45f2edd13..ecaec1d3d 100644 --- a/tests/format/misc/typescript-babel-only/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/misc/typescript-babel-only/__snapshots__/jsfmt.spec.js.snap @@ -60,6 +60,68 @@ class Bar { ================================================================================ `; +exports[`ts-4.3-override-modifier.ts format 1`] = ` +====================================options===================================== +parsers: ["babel-ts"] +printWidth: 80 + | printWidth +=====================================input====================================== +class MyClass extends BaseClass { + override show() {} + public override show() {} + override size = 5; + override readonly size = 5; +} + +=====================================output===================================== +class MyClass extends BaseClass { + override show() {} + public override show() {} + override size = 5; + override readonly size = 5; +} + +================================================================================ +`; + +exports[`ts4.3-type-members-get-set.ts format 1`] = ` +====================================options===================================== +parsers: ["babel-ts"] +printWidth: 80 + | printWidth +=====================================input====================================== +interface Foo { + get foo(): string; + set bar(v); +} + +type Foo = { + get foo(): string; + set bar(v); +} + +interface Foo { + set bar(foo: string); +} + +=====================================output===================================== +interface Foo { + get foo(): string; + set bar(v); +} + +type Foo = { + get foo(): string; + set bar(v); +}; + +interface Foo { + set bar(foo: string); +} + +================================================================================ +`; + exports[`tuple-labeled-ts.ts format 1`] = ` ====================================options===================================== parsers: ["babel-ts"] diff --git a/tests/format/misc/typescript-babel-only/ts-4.3-override-modifier.ts b/tests/format/misc/typescript-babel-only/ts-4.3-override-modifier.ts new file mode 100644 index 000000000..aba84e1c5 --- /dev/null +++ b/tests/format/misc/typescript-babel-only/ts-4.3-override-modifier.ts @@ -0,0 +1,6 @@ +class MyClass extends BaseClass { + override show() {} + public override show() {} + override size = 5; + override readonly size = 5; +} diff --git a/tests/format/misc/typescript-babel-only/ts4.3-type-members-get-set.ts b/tests/format/misc/typescript-babel-only/ts4.3-type-members-get-set.ts new file mode 100644 index 000000000..e230142a8 --- /dev/null +++ b/tests/format/misc/typescript-babel-only/ts4.3-type-members-get-set.ts @@ -0,0 +1,13 @@ +interface Foo { + get foo(): string; + set bar(v); +} + +type Foo = { + get foo(): string; + set bar(v); +} + +interface Foo { + set bar(foo: string); +} diff --git a/tests/format/typescript/class/__snapshots__/jsfmt.spec.js.snap b/tests/format/typescript/class/__snapshots__/jsfmt.spec.js.snap index af194720e..4a507d8cc 100644 --- a/tests/format/typescript/class/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/typescript/class/__snapshots__/jsfmt.spec.js.snap @@ -320,7 +320,7 @@ class ImplementsInterfaceClassWithComments1< `; exports[`generics.ts [babel-ts] format 1`] = ` -"A class name is required (1:6) +"A class name is required. (1:6) > 1 | class implements Map {} | ^ 2 | @@ -351,11 +351,11 @@ interface AudioBufferList { `; exports[`methods.ts [babel-ts] format 1`] = ` -"Missing semicolon (6:9) +"Unexpected token, expected \\";\\" (6:10) 4 | 5 | interface Iterable { > 6 | export [Symbol.iterator](): Iterator; - | ^ + | ^ 7 | } 8 | 9 | export class Check {" diff --git a/tests/format/typescript/compiler/__snapshots__/jsfmt.spec.js.snap b/tests/format/typescript/compiler/__snapshots__/jsfmt.spec.js.snap index e84aef5a0..bf313dca1 100644 --- a/tests/format/typescript/compiler/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/typescript/compiler/__snapshots__/jsfmt.spec.js.snap @@ -326,7 +326,7 @@ module T.U { `; exports[`decrementAndIncrementOperators.ts [babel-ts] format 1`] = ` -"Invalid left-hand side in postfix operation (4:1) +"Invalid left-hand side in postfix operation. (4:1) 2 | 3 | // errors > 4 | 1 ++; @@ -442,7 +442,7 @@ const; `; exports[`errorOnInitializerInInterfaceProperty.ts [babel-ts] format 1`] = ` -"Unexpected token (2:17) +"Unexpected token, expected \\";\\" (2:17) 1 | interface Foo { > 2 | bar: number = 5; | ^ diff --git a/tests/format/typescript/conformance/classes/classDeclarations/classAbstractKeyword/__snapshots__/jsfmt.spec.js.snap b/tests/format/typescript/conformance/classes/classDeclarations/classAbstractKeyword/__snapshots__/jsfmt.spec.js.snap index a335ac33d..2f9df8adc 100644 --- a/tests/format/typescript/conformance/classes/classDeclarations/classAbstractKeyword/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/typescript/conformance/classes/classDeclarations/classAbstractKeyword/__snapshots__/jsfmt.spec.js.snap @@ -603,14 +603,14 @@ class A { `; exports[`classAbstractMixedWithModifiers.ts [babel-ts] format 1`] = ` -"Unexpected token (8:21) - 6 | private abstract foo_d(); - 7 | -> 8 | abstract public foo_bb(); - | ^ - 9 | abstract protected foo_cc(); +"'static' modifier cannot be used with 'abstract' modifier. (12:14) 10 | abstract private foo_dd(); - 11 | " + 11 | +> 12 | abstract static foo_d(); + | ^ + 13 | + 14 | static abstract foo_e(); + 15 | }" `; exports[`classAbstractMixedWithModifiers.ts format 1`] = ` diff --git a/tests/format/typescript/conformance/parser/ecmascript5/Statements/__snapshots__/jsfmt.spec.js.snap b/tests/format/typescript/conformance/parser/ecmascript5/Statements/__snapshots__/jsfmt.spec.js.snap index c3047d5cc..749159cd4 100644 --- a/tests/format/typescript/conformance/parser/ecmascript5/Statements/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/typescript/conformance/parser/ecmascript5/Statements/__snapshots__/jsfmt.spec.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`parserES5ForOfStatement2.ts [babel-ts] format 1`] = ` -"Missing semicolon (2:12) +"Missing semicolon. (2:12) 1 | //@target: ES5 > 2 | for (var of X) { | ^ @@ -53,7 +53,7 @@ for (var of of) { `; exports[`parserForInStatement2.ts [babel-ts] format 1`] = ` -"Missing semicolon (1:12) +"Missing semicolon. (1:12) > 1 | for (var in X) { | ^ 2 | } diff --git a/tests/format/typescript/conformance/types/functions/__snapshots__/jsfmt.spec.js.snap b/tests/format/typescript/conformance/types/functions/__snapshots__/jsfmt.spec.js.snap index 71b7e0264..800c00537 100644 --- a/tests/format/typescript/conformance/types/functions/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/typescript/conformance/types/functions/__snapshots__/jsfmt.spec.js.snap @@ -593,7 +593,7 @@ function f(x: string): void { `; exports[`functionOverloadErrorsSyntax.ts [babel-ts] format 1`] = ` -"Rest element must be last element (9:36) +"Rest element must be last element. (9:36) 7 | 8 | //Function overload signature with rest param followed by non-optional parameter > 9 | function fn5(x: string, ...y: any[], z: string); diff --git a/tests/format/typescript/custom/abstract/__snapshots__/jsfmt.spec.js.snap b/tests/format/typescript/custom/abstract/__snapshots__/jsfmt.spec.js.snap index a7946d8cb..6537e2311 100644 --- a/tests/format/typescript/custom/abstract/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/typescript/custom/abstract/__snapshots__/jsfmt.spec.js.snap @@ -39,13 +39,14 @@ export class Y {} `; exports[`abstractProperties.ts [babel-ts] format 1`] = ` -"Unexpected token (2:22) - 1 | abstract class Foo { -> 2 | abstract private a: 1; - | ^ +"'static' modifier cannot be used with 'abstract' modifier. (4:12) + 2 | abstract private a: 1; 3 | private abstract b: 2; - 4 | static abstract c: 3; - 5 |" +> 4 | static abstract c: 3; + | ^ + 5 | + 6 | abstract private d = 4; + 7 | private abstract e = 5;" `; exports[`abstractProperties.ts format 1`] = ` @@ -86,16 +87,6 @@ abstract class Foo { ================================================================================ `; -exports[`abstractPropertiesWithBreaks.ts [babel-ts] format 1`] = ` -"Unexpected token (2:22) - 1 | abstract class Foo { -> 2 | abstract private foobar = - | ^ - 3 | // comment to break - 4 | 1 + - 5 | // another comment to break" -`; - exports[`abstractPropertiesWithBreaks.ts format 1`] = ` ====================================options===================================== parsers: ["typescript"] diff --git a/tests/format/typescript/custom/abstract/jsfmt.spec.js b/tests/format/typescript/custom/abstract/jsfmt.spec.js index 76de64b5b..f261adac9 100644 --- a/tests/format/typescript/custom/abstract/jsfmt.spec.js +++ b/tests/format/typescript/custom/abstract/jsfmt.spec.js @@ -1,5 +1,5 @@ run_spec(__dirname, ["typescript"], { errors: { - "babel-ts": ["abstractProperties.ts", "abstractPropertiesWithBreaks.ts"], + "babel-ts": ["abstractProperties.ts"], }, }); diff --git a/tests/format/typescript/index-signature/__snapshots__/jsfmt.spec.js.snap b/tests/format/typescript/index-signature/__snapshots__/jsfmt.spec.js.snap index dad328dab..6182ad465 100644 --- a/tests/format/typescript/index-signature/__snapshots__/jsfmt.spec.js.snap +++ b/tests/format/typescript/index-signature/__snapshots__/jsfmt.spec.js.snap @@ -19,3 +19,21 @@ class LocalStorage implements Storage { ================================================================================ `; + +exports[`static.ts format 1`] = ` +====================================options===================================== +parsers: ["typescript"] +printWidth: 80 + | printWidth +=====================================input====================================== +class Foo { + static [value: string]: Type; +} + +=====================================output===================================== +class Foo { + static [value: string]: Type; +} + +================================================================================ +`; diff --git a/tests/format/typescript/index-signature/static.ts b/tests/format/typescript/index-signature/static.ts new file mode 100644 index 000000000..bbfd4f503 --- /dev/null +++ b/tests/format/typescript/index-signature/static.ts @@ -0,0 +1,3 @@ +class Foo { + static [value: string]: Type; +} diff --git a/tests/integration/__tests__/__snapshots__/syntax-error.js.snap b/tests/integration/__tests__/__snapshots__/syntax-error.js.snap index 5e2c5a6ff..2edb43a4e 100644 --- a/tests/integration/__tests__/__snapshots__/syntax-error.js.snap +++ b/tests/integration/__tests__/__snapshots__/syntax-error.js.snap @@ -1,7 +1,7 @@ // Jest Snapshot v1, https://goo.gl/fbAQLP exports[`exits with non-zero code when input has a syntax error (stderr) 1`] = ` -"[error] stdin: SyntaxError: Missing semicolon (1:2) +"[error] stdin: SyntaxError: Missing semicolon. (1:2) [error] > 1 | a.2 [error] | ^ " diff --git a/website/package.json b/website/package.json index eac636e8b..e61ae08bd 100644 --- a/website/package.json +++ b/website/package.json @@ -20,7 +20,7 @@ "concurrently": "6.0.2", "docusaurus": "1.14.7", "js-yaml": "4.1.0", - "webpack": "5.35.1", + "webpack": "5.36.2", "webpack-cli": "4.6.0" } } diff --git a/website/yarn.lock b/website/yarn.lock index 83d235fcd..614c12189 100644 --- a/website/yarn.lock +++ b/website/yarn.lock @@ -1235,10 +1235,10 @@ accepts@~1.3.7: mime-types "~2.1.24" negotiator "0.6.2" -acorn@^8.0.4: - version "8.0.4" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.0.4.tgz#7a3ae4191466a6984eee0fe3407a4f3aa9db8354" - integrity sha512-XNP0PqF1XD19ZlLKvB7cMmnZswW4C/03pRHgirB30uSJTaS3A3V1/P4sS3HPvFmjoriPCJQs+JDSbm4bL1TxGQ== +acorn@^8.2.1: + version "8.2.2" + resolved "https://registry.yarnpkg.com/acorn/-/acorn-8.2.2.tgz#c4574e4fea298d6e6ed4b85ab844b06dd59f26d6" + integrity sha512-VrMS8kxT0e7J1EX0p6rI/E0FbfOVcvBpbIqHThFv+f8YrZIlMfVotYcXKVPmTvPW8sW5miJzfUFrrvthUZg8VQ== address@1.1.2, address@^1.0.1: version "1.1.2" @@ -7664,17 +7664,17 @@ webpack-sources@^2.1.1: source-list-map "^2.0.1" source-map "^0.6.1" -webpack@5.35.1: - version "5.35.1" - resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.35.1.tgz#857670799465c8a5cbb94c4c175d60ac42d18ba3" - integrity sha512-uWKYStqJ23+N6/EnMEwUjPSSKUG1tFmcuKhALEh/QXoUxwN8eb3ATNIZB38A+fO6QZ0xfc7Cu7KNV9LXNhDCsw== +webpack@5.36.2: + version "5.36.2" + resolved "https://registry.yarnpkg.com/webpack/-/webpack-5.36.2.tgz#6ef1fb2453ad52faa61e78d486d353d07cca8a0f" + integrity sha512-XJumVnnGoH2dV+Pk1VwgY4YT6AiMKpVoudUFCNOXMIVrEKPUgEwdIfWPjIuGLESAiS8EdIHX5+TiJz/5JccmRg== dependencies: "@types/eslint-scope" "^3.7.0" "@types/estree" "^0.0.47" "@webassemblyjs/ast" "1.11.0" "@webassemblyjs/wasm-edit" "1.11.0" "@webassemblyjs/wasm-parser" "1.11.0" - acorn "^8.0.4" + acorn "^8.2.1" browserslist "^4.14.5" chrome-trace-event "^1.0.2" enhanced-resolve "^5.8.0" diff --git a/yarn.lock b/yarn.lock index d871fba4f..ade5ae453 100644 --- a/yarn.lock +++ b/yarn.lock @@ -30,10 +30,10 @@ dependencies: "@babel/highlight" "^7.12.13" -"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.13.8": - version "7.13.15" - resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.13.15.tgz#7e8eea42d0b64fda2b375b22d06c605222e848f4" - integrity sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA== +"@babel/compat-data@^7.13.11", "@babel/compat-data@^7.13.15", "@babel/compat-data@^7.13.8", "@babel/compat-data@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.14.0.tgz#a901128bce2ad02565df95e6ecbf195cf9465919" + integrity sha512-vu9V3uMM/1o5Hl5OekMUowo3FqXLJSw+s+66nt0fSWVWTtmosdzn45JHOB3cPtZoe6CTBDzvSw0RdOY85Q37+Q== "@babel/core@7.14.0", "@babel/core@^7.1.0", "@babel/core@^7.12.16", "@babel/core@^7.7.5": version "7.14.0" @@ -89,7 +89,7 @@ "@babel/helper-explode-assignable-expression" "^7.12.13" "@babel/types" "^7.12.13" -"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.13", "@babel/helper-compilation-targets@^7.13.16", "@babel/helper-compilation-targets@^7.13.8": +"@babel/helper-compilation-targets@^7.13.0", "@babel/helper-compilation-targets@^7.13.16", "@babel/helper-compilation-targets@^7.13.8": version "7.13.16" resolved "https://registry.yarnpkg.com/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz#6e91dccf15e3f43e5556dffe32d860109887563c" integrity sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA== @@ -110,6 +110,18 @@ "@babel/helper-replace-supers" "^7.13.0" "@babel/helper-split-export-declaration" "^7.12.13" +"@babel/helper-create-class-features-plugin@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.14.0.tgz#38367d3dab125b12f94273de418f4df23a11a15e" + integrity sha512-6pXDPguA5zC40Y8oI5mqr+jEUpjMJonKvknvA+vD8CYDz5uuXEwWBK8sRAsE/t3gfb1k15AQb9RhwpscC4nUJQ== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-function-name" "^7.12.13" + "@babel/helper-member-expression-to-functions" "^7.13.12" + "@babel/helper-optimise-call-expression" "^7.12.13" + "@babel/helper-replace-supers" "^7.13.12" + "@babel/helper-split-export-declaration" "^7.12.13" + "@babel/helper-create-regexp-features-plugin@^7.12.13": version "7.12.17" resolved "https://registry.yarnpkg.com/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.12.17.tgz#a2ac87e9e319269ac655b8d4415e94d38d663cb7" @@ -222,7 +234,7 @@ "@babel/traverse" "^7.13.0" "@babel/types" "^7.13.12" -"@babel/helper-simple-access@^7.12.13", "@babel/helper-simple-access@^7.13.12": +"@babel/helper-simple-access@^7.13.12": version "7.13.12" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz#dd6c538afb61819d205a012c31792a39c7a5eaf6" integrity sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA== @@ -243,12 +255,7 @@ dependencies: "@babel/types" "^7.12.13" -"@babel/helper-validator-identifier@^7.12.11": - version "7.12.11" - resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz#c9a1f021917dcb5ccf0d4e453e399022981fc9ed" - integrity sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw== - -"@babel/helper-validator-identifier@^7.14.0": +"@babel/helper-validator-identifier@^7.12.11", "@babel/helper-validator-identifier@^7.14.0": version "7.14.0" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.14.0.tgz#d26cad8a47c65286b15df1547319a5d0bcf27288" integrity sha512-V3ts7zMSu5lfiwWDVWzRDGIN+lnCEUdaXgtVHJgLb1rGaA6jMrtB9EmE7L18foXJIE8Un/A/h6NJfGQp/e1J4A== @@ -286,15 +293,10 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@7.13.16": - version "7.13.16" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.13.16.tgz#0f18179b0448e6939b1f3f5c4c355a3a9bcdfd37" - integrity sha512-6bAg36mCwuqLO0hbR+z7PHuqWiCeP7Dzg73OpQwsAB1Eb8HnGEz5xYBzCfbu+YjoaJsJs+qheDxVAuqbt3ILEw== - -"@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.14.0": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.0.tgz#2f0ebfed92bcddcc8395b91f1895191ce2760380" - integrity sha512-AHbfoxesfBALg33idaTBVUkLnfXtsgvJREf93p4p0Lwsz4ppfE7g1tpEXVm4vrxUcH4DVhAa9Z1m1zqf9WUC7Q== +"@babel/parser@7.14.1", "@babel/parser@^7.1.0", "@babel/parser@^7.12.13", "@babel/parser@^7.14.0": + version "7.14.1" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.14.1.tgz#1bd644b5db3f5797c4479d89ec1817fe02b84c47" + integrity sha512-muUGEKu8E/ftMTPlNp+mc6zL3E9zKWmF5sDHZ5MSsoTP9Wyz64AhEf9kD08xYJ7w6Hdcu8H550ircnPyWSIF0Q== "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@^7.13.12": version "7.13.12" @@ -322,6 +324,14 @@ "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-proposal-class-static-block@^7.13.11": + version "7.13.11" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-static-block/-/plugin-proposal-class-static-block-7.13.11.tgz#6fcbba4a962702c17e5371a0c7b39afde186d703" + integrity sha512-fJTdFI4bfnMjvxJyNuaf8i9mVcZ0UhetaGEUHaHV9KEnibLugJkZAtXikR8KcYj+NYmI4DZMS8yQAyg+hvfSqg== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-class-static-block" "^7.12.13" + "@babel/plugin-proposal-dynamic-import@^7.13.8": version "7.13.8" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-dynamic-import/-/plugin-proposal-dynamic-import-7.13.8.tgz#876a1f6966e1dec332e8c9451afda3bebcdf2e1d" @@ -406,6 +416,16 @@ "@babel/helper-create-class-features-plugin" "^7.13.0" "@babel/helper-plugin-utils" "^7.13.0" +"@babel/plugin-proposal-private-property-in-object@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-private-property-in-object/-/plugin-proposal-private-property-in-object-7.14.0.tgz#b1a1f2030586b9d3489cc26179d2eb5883277636" + integrity sha512-59ANdmEwwRUkLjB7CRtwJxxwtjESw+X2IePItA+RGQh+oy5RmpCh/EvVVvh5XQc3yxsm5gtv0+i9oBZhaDNVTg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.12.13" + "@babel/helper-create-class-features-plugin" "^7.14.0" + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-private-property-in-object" "^7.14.0" + "@babel/plugin-proposal-unicode-property-regex@^7.12.13", "@babel/plugin-proposal-unicode-property-regex@^7.4.4": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-unicode-property-regex/-/plugin-proposal-unicode-property-regex-7.12.13.tgz#bebde51339be829c17aaaaced18641deb62b39ba" @@ -435,6 +455,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" +"@babel/plugin-syntax-class-static-block@^7.12.13": + version "7.12.13" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.12.13.tgz#8e3d674b0613e67975ceac2776c97b60cafc5c9c" + integrity sha512-ZmKQ0ZXR0nYpHZIIuj9zE7oIqCx2hw9TKi+lIo73NNrMPAZGHfS92/VRV0ZmPj6H2ffBgyFHXvJ5NYsNeEaP2A== + dependencies: + "@babel/helper-plugin-utils" "^7.12.13" + "@babel/plugin-syntax-dynamic-import@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz#62bf98b2da3cd21d626154fc96ee5b3cb68eacb3" @@ -505,6 +532,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-private-property-in-object@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.0.tgz#762a4babec61176fec6c88480dec40372b140c0b" + integrity sha512-bda3xF8wGl5/5btF794utNOL0Jw+9jE5C1sLZcoK7c4uonE/y3iQiyG+KbkF3WBV/paX58VCpjhxLPkdj5Fe4w== + dependencies: + "@babel/helper-plugin-utils" "^7.13.0" + "@babel/plugin-syntax-top-level-await@^7.12.13", "@babel/plugin-syntax-top-level-await@^7.8.3": version "7.12.13" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz#c5f0fa6e249f5b739727f923540cf7a806130178" @@ -535,12 +569,12 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-block-scoping@^7.12.13": - version "7.12.13" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.13.tgz#f36e55076d06f41dfd78557ea039c1b581642e61" - integrity sha512-Pxwe0iqWJX4fOOM2kEZeUuAxHMWb9nK+9oh5d11bsLoB0xMg+mkDpt0eYuDZB7ETrY9bbcVlKUGTOGWy7BHsMQ== +"@babel/plugin-transform-block-scoping@^7.14.1": + version "7.14.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.14.1.tgz#ac1b3a8e3d8cbb31efc6b9be2f74eb9823b74ab2" + integrity sha512-2mQXd0zBrwfp0O1moWIhPpEeTKDvxyHcnma3JATVP1l+CctWBuot6OJG8LQ4DnBj4ZZPSmlb/fm4mu47EOAnVA== dependencies: - "@babel/helper-plugin-utils" "^7.12.13" + "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-transform-classes@^7.13.0": version "7.13.0" @@ -562,10 +596,10 @@ dependencies: "@babel/helper-plugin-utils" "^7.13.0" -"@babel/plugin-transform-destructuring@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.0.tgz#c5dce270014d4e1ebb1d806116694c12b7028963" - integrity sha512-zym5em7tePoNT9s964c0/KU3JPPnuq7VhIxPRefJ4/s82cD+q1mgKfuGRDMCPL0HTyKz4dISuQlCusfgCJ86HA== +"@babel/plugin-transform-destructuring@^7.13.17": + version "7.13.17" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.13.17.tgz#678d96576638c19d5b36b332504d3fd6e06dea27" + integrity sha512-UAUqiLv+uRLO+xuBKKMEpC+t7YRNVRqBsWWq1yKXbBZBje/t3IXCiSinZhjn/DC3qzBfICeYd2EFGEbHsh5RLA== dependencies: "@babel/helper-plugin-utils" "^7.13.0" @@ -621,23 +655,23 @@ dependencies: "@babel/helper-plugin-utils" "^7.12.13" -"@babel/plugin-transform-modules-amd@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.13.0.tgz#19f511d60e3d8753cc5a6d4e775d3a5184866cc3" - integrity sha512-EKy/E2NHhY/6Vw5d1k3rgoobftcNUmp9fGjb9XZwQLtTctsRBOTRO7RHHxfIky1ogMN5BxN7p9uMA3SzPfotMQ== +"@babel/plugin-transform-modules-amd@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.14.0.tgz#589494b5b290ff76cf7f59c798011f6d77026553" + integrity sha512-CF4c5LX4LQ03LebQxJ5JZes2OYjzBuk1TdiF7cG7d5dK4lAdw9NZmaxq5K/mouUdNeqwz3TNjnW6v01UqUNgpQ== dependencies: - "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-module-transforms" "^7.14.0" "@babel/helper-plugin-utils" "^7.13.0" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-commonjs@^7.13.8": - version "7.13.8" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.13.8.tgz#7b01ad7c2dcf2275b06fa1781e00d13d420b3e1b" - integrity sha512-9QiOx4MEGglfYZ4XOnU79OHr6vIWUakIj9b4mioN8eQIoEh+pf5p/zEB36JpDFWA12nNMiRf7bfoRvl9Rn79Bw== +"@babel/plugin-transform-modules-commonjs@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.14.0.tgz#52bc199cb581e0992edba0f0f80356467587f161" + integrity sha512-EX4QePlsTaRZQmw9BsoPeyh5OCtRGIhwfLquhxGp5e32w+dyL8htOcDwamlitmNFK6xBZYlygjdye9dbd9rUlQ== dependencies: - "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-module-transforms" "^7.14.0" "@babel/helper-plugin-utils" "^7.13.0" - "@babel/helper-simple-access" "^7.12.13" + "@babel/helper-simple-access" "^7.13.12" babel-plugin-dynamic-import-node "^2.3.3" "@babel/plugin-transform-modules-systemjs@^7.13.8": @@ -651,12 +685,12 @@ "@babel/helper-validator-identifier" "^7.12.11" babel-plugin-dynamic-import-node "^2.3.3" -"@babel/plugin-transform-modules-umd@^7.13.0": - version "7.13.0" - resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.13.0.tgz#8a3d96a97d199705b9fd021580082af81c06e70b" - integrity sha512-D/ILzAh6uyvkWjKKyFE/W0FzWwasv6vPTSqPcjxFqn6QpX3u8DjRVliq4F2BamO2Wee/om06Vyy+vPkNrd4wxw== +"@babel/plugin-transform-modules-umd@^7.14.0": + version "7.14.0" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.14.0.tgz#2f8179d1bbc9263665ce4a65f305526b2ea8ac34" + integrity sha512-nPZdnWtXXeY7I87UZr9VlsWme3Y0cfFFE41Wbxz4bbaexAjNMInXPFUpRRUJ8NoMm0Cw+zxbqjdPmLhcjfazMw== dependencies: - "@babel/helper-module-transforms" "^7.13.0" + "@babel/helper-module-transforms" "^7.14.0" "@babel/helper-plugin-utils" "^7.13.0" "@babel/plugin-transform-named-capturing-groups-regex@^7.12.13": @@ -760,18 +794,19 @@ "@babel/helper-create-regexp-features-plugin" "^7.12.13" "@babel/helper-plugin-utils" "^7.12.13" -"@babel/preset-env@7.13.15": - version "7.13.15" - resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.13.15.tgz#c8a6eb584f96ecba183d3d414a83553a599f478f" - integrity sha512-D4JAPMXcxk69PKe81jRJ21/fP/uYdcTZ3hJDF5QX2HSI9bBxxYw/dumdR6dGumhjxlprHPE4XWoPaqzZUVy2MA== +"@babel/preset-env@7.14.1": + version "7.14.1" + resolved "https://registry.yarnpkg.com/@babel/preset-env/-/preset-env-7.14.1.tgz#b55914e2e68885ea03f69600b2d3537e54574a93" + integrity sha512-0M4yL1l7V4l+j/UHvxcdvNfLB9pPtIooHTbEhgD/6UGyh8Hy3Bm1Mj0buzjDXATCSz3JFibVdnoJZCrlUCanrQ== dependencies: - "@babel/compat-data" "^7.13.15" - "@babel/helper-compilation-targets" "^7.13.13" + "@babel/compat-data" "^7.14.0" + "@babel/helper-compilation-targets" "^7.13.16" "@babel/helper-plugin-utils" "^7.13.0" "@babel/helper-validator-option" "^7.12.17" "@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining" "^7.13.12" "@babel/plugin-proposal-async-generator-functions" "^7.13.15" "@babel/plugin-proposal-class-properties" "^7.13.0" + "@babel/plugin-proposal-class-static-block" "^7.13.11" "@babel/plugin-proposal-dynamic-import" "^7.13.8" "@babel/plugin-proposal-export-namespace-from" "^7.12.13" "@babel/plugin-proposal-json-strings" "^7.13.8" @@ -782,9 +817,11 @@ "@babel/plugin-proposal-optional-catch-binding" "^7.13.8" "@babel/plugin-proposal-optional-chaining" "^7.13.12" "@babel/plugin-proposal-private-methods" "^7.13.0" + "@babel/plugin-proposal-private-property-in-object" "^7.14.0" "@babel/plugin-proposal-unicode-property-regex" "^7.12.13" "@babel/plugin-syntax-async-generators" "^7.8.4" "@babel/plugin-syntax-class-properties" "^7.12.13" + "@babel/plugin-syntax-class-static-block" "^7.12.13" "@babel/plugin-syntax-dynamic-import" "^7.8.3" "@babel/plugin-syntax-export-namespace-from" "^7.8.3" "@babel/plugin-syntax-json-strings" "^7.8.3" @@ -794,14 +831,15 @@ "@babel/plugin-syntax-object-rest-spread" "^7.8.3" "@babel/plugin-syntax-optional-catch-binding" "^7.8.3" "@babel/plugin-syntax-optional-chaining" "^7.8.3" + "@babel/plugin-syntax-private-property-in-object" "^7.14.0" "@babel/plugin-syntax-top-level-await" "^7.12.13" "@babel/plugin-transform-arrow-functions" "^7.13.0" "@babel/plugin-transform-async-to-generator" "^7.13.0" "@babel/plugin-transform-block-scoped-functions" "^7.12.13" - "@babel/plugin-transform-block-scoping" "^7.12.13" + "@babel/plugin-transform-block-scoping" "^7.14.1" "@babel/plugin-transform-classes" "^7.13.0" "@babel/plugin-transform-computed-properties" "^7.13.0" - "@babel/plugin-transform-destructuring" "^7.13.0" + "@babel/plugin-transform-destructuring" "^7.13.17" "@babel/plugin-transform-dotall-regex" "^7.12.13" "@babel/plugin-transform-duplicate-keys" "^7.12.13" "@babel/plugin-transform-exponentiation-operator" "^7.12.13" @@ -809,10 +847,10 @@ "@babel/plugin-transform-function-name" "^7.12.13" "@babel/plugin-transform-literals" "^7.12.13" "@babel/plugin-transform-member-expression-literals" "^7.12.13" - "@babel/plugin-transform-modules-amd" "^7.13.0" - "@babel/plugin-transform-modules-commonjs" "^7.13.8" + "@babel/plugin-transform-modules-amd" "^7.14.0" + "@babel/plugin-transform-modules-commonjs" "^7.14.0" "@babel/plugin-transform-modules-systemjs" "^7.13.8" - "@babel/plugin-transform-modules-umd" "^7.13.0" + "@babel/plugin-transform-modules-umd" "^7.14.0" "@babel/plugin-transform-named-capturing-groups-regex" "^7.12.13" "@babel/plugin-transform-new-target" "^7.12.13" "@babel/plugin-transform-object-super" "^7.12.13" @@ -828,7 +866,7 @@ "@babel/plugin-transform-unicode-escapes" "^7.12.13" "@babel/plugin-transform-unicode-regex" "^7.12.13" "@babel/preset-modules" "^0.1.4" - "@babel/types" "^7.13.14" + "@babel/types" "^7.14.1" babel-plugin-polyfill-corejs2 "^0.2.0" babel-plugin-polyfill-corejs3 "^0.2.0" babel-plugin-polyfill-regenerator "^0.2.0" @@ -876,18 +914,10 @@ debug "^4.1.0" globals "^11.1.0" -"@babel/types@7.13.17": - version "7.13.17" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.13.17.tgz#48010a115c9fba7588b4437dd68c9469012b38b4" - integrity sha512-RawydLgxbOPDlTLJNtoIypwdmAy//uQIzlKt2+iBiJaRlVuI6QLUxVAyWGNfOzp8Yu4L4lLIacoCyTNtpb4wiA== - dependencies: - "@babel/helper-validator-identifier" "^7.12.11" - to-fast-properties "^2.0.0" - -"@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.13.14", "@babel/types@^7.14.0", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": - version "7.14.0" - resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.0.tgz#3fc3fc74e0cdad878182e5f66cc6bcab1915a802" - integrity sha512-O2LVLdcnWplaGxiPBz12d0HcdN8QdxdsWYhz5LSeuukV/5mn2xUUc3gBeU4QBYPJ18g/UToe8F532XJ608prmg== +"@babel/types@7.14.1", "@babel/types@^7.0.0", "@babel/types@^7.12.1", "@babel/types@^7.12.13", "@babel/types@^7.13.0", "@babel/types@^7.13.12", "@babel/types@^7.14.0", "@babel/types@^7.14.1", "@babel/types@^7.3.0", "@babel/types@^7.3.3", "@babel/types@^7.4.4": + version "7.14.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.14.1.tgz#095bd12f1c08ab63eff6e8f7745fa7c9cc15a9db" + integrity sha512-S13Qe85fzLs3gYRUnrpyeIrBJIMYv33qSTg1qoBwiG6nPKwUWAD9odSzWhEedpwOIzSEI6gbdQIWEMiCI42iBA== dependencies: "@babel/helper-validator-identifier" "^7.14.0" to-fast-properties "^2.0.0" @@ -1090,20 +1120,13 @@ resolved "https://registry.yarnpkg.com/@glimmer/env/-/env-0.1.7.tgz#fd2d2b55a9029c6b37a6c935e8c8871ae70dfa07" integrity sha1-/S0rVakCnGs3psk16MiHGucN+gc= -"@glimmer/global-context@0.78.2": - version "0.78.2" - resolved "https://registry.yarnpkg.com/@glimmer/global-context/-/global-context-0.78.2.tgz#3443b000e8617da39202d5319db881ff59a2f248" - integrity sha512-om0ryTEqER1ZZKD9TLBJlPm/M3z9EwHMR22luufPKZ1la8RrDQpGPMh32a8QzWnOyigiv2NXIfuUiSh5OGR/BA== +"@glimmer/global-context@0.79.0": + version "0.79.0" + resolved "https://registry.yarnpkg.com/@glimmer/global-context/-/global-context-0.79.0.tgz#8ed7b12a505f16c81dd75b7ef81ff221b683404e" + integrity sha512-4B/N/zeBHZ2mWT5Q0vQGnnvli9s5oh2knGn9BBPprWr/sK+HqS0dAwJdoahehA1PVlHu0+bBbWRWIXSjpBb8Qg== dependencies: "@glimmer/env" "^0.1.7" -"@glimmer/interfaces@0.78.2": - version "0.78.2" - resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.78.2.tgz#4dafd7f7abaf03f5a9b5d2192205ad007550ca36" - integrity sha512-OM1zJHNioKwd+7PM+mt28Ine9QfZLI7bwDOgB1Y+lHEZ0OdAGu6m351RBrXfQEgDCoVSFPQpOtUpWLP/FU3Utw== - dependencies: - "@simple-dom/interface" "^1.4.0" - "@glimmer/interfaces@0.79.0": version "0.79.0" resolved "https://registry.yarnpkg.com/@glimmer/interfaces/-/interfaces-0.79.0.tgz#29796e487dea48e93cc1f4b912013a7c2e429696" @@ -1111,16 +1134,16 @@ dependencies: "@simple-dom/interface" "^1.4.0" -"@glimmer/reference@0.78.2": - version "0.78.2" - resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.78.2.tgz#dbffbeb4bc42f64f57104eebab0eb4ef7778d989" - integrity sha512-vUk20mKknDqtQEWfGbDwU9eh+XVztUUuww6V6/UKm8JokBDjGkdt4w74R2wvPIrDZYkfXErZjXwY8Ltu1lBV0A== +"@glimmer/reference@0.79.0": + version "0.79.0" + resolved "https://registry.yarnpkg.com/@glimmer/reference/-/reference-0.79.0.tgz#65a1c7d1791794f1d27f32311018096210e3c3ff" + integrity sha512-K2elAHMrJ7u+TGKiDWkTpxhF6txoU0BDeY+nprg4EehMnSpwJI2I7t7/4wharQI+qKxcAfbGtsI7N8f6gJxlsg== dependencies: "@glimmer/env" "^0.1.7" - "@glimmer/global-context" "0.78.2" - "@glimmer/interfaces" "0.78.2" - "@glimmer/util" "0.78.2" - "@glimmer/validator" "0.78.2" + "@glimmer/global-context" "0.79.0" + "@glimmer/interfaces" "0.79.0" + "@glimmer/util" "0.79.0" + "@glimmer/validator" "0.79.0" "@glimmer/syntax@0.79.0": version "0.79.0" @@ -1132,15 +1155,6 @@ "@handlebars/parser" "~2.0.0" simple-html-tokenizer "^0.5.10" -"@glimmer/util@0.78.2": - version "0.78.2" - resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.78.2.tgz#d6e7e363d198ef426858a3958170774b4548cce1" - integrity sha512-SqmlzdtXJwAhf5fhflFsoYuM3zk1M/8bamqGXQpCB5I40NpcshpFybY/ZMwIGsYOWEwIo/LDDC1UBZ3gyMPZzA== - dependencies: - "@glimmer/env" "0.1.7" - "@glimmer/interfaces" "0.78.2" - "@simple-dom/interface" "^1.4.0" - "@glimmer/util@0.79.0": version "0.79.0" resolved "https://registry.yarnpkg.com/@glimmer/util/-/util-0.79.0.tgz#70bcd2358ba92e0495e971f4b2cdf3b1bf5d9a77" @@ -1150,13 +1164,13 @@ "@glimmer/interfaces" "0.79.0" "@simple-dom/interface" "^1.4.0" -"@glimmer/validator@0.78.2": - version "0.78.2" - resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.78.2.tgz#bc7f3cf376789d1090add73bed599e840697fdc8" - integrity sha512-pzdC9uPaQerOoPEeSV9U/oRbZtgTkL+BryGR8R534mhAFfVlzenAa4aavKZEcnIns73MNN/G1l2iYDmjSH/6Hg== +"@glimmer/validator@0.79.0": + version "0.79.0" + resolved "https://registry.yarnpkg.com/@glimmer/validator/-/validator-0.79.0.tgz#b86573e33ad701b940e53cf5eff49562210a7a55" + integrity sha512-18GmU5p1FX4ybkh+AACZpN7o4lbU3lrllWxgIqOF03YIe86F4ZM4WJXKz9cs/daxkpfMzvs0Efesl26Uh5gM0A== dependencies: "@glimmer/env" "^0.1.7" - "@glimmer/global-context" "0.78.2" + "@glimmer/global-context" "0.79.0" "@handlebars/parser@~2.0.0": version "2.0.0" @@ -1391,10 +1405,10 @@ "@babel/helper-module-imports" "^7.10.4" "@rollup/pluginutils" "^3.1.0" -"@rollup/plugin-commonjs@18.0.0": - version "18.0.0" - resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-18.0.0.tgz#50dc7518b5aa9e66a270e529ea85115d269825c4" - integrity sha512-fj92shhg8luw7XbA0HowAqz90oo7qtLGwqTKbyZ8pmOyH8ui5e+u0wPEgeHLH3djcVma6gUCUrjY6w5R2o1u6g== +"@rollup/plugin-commonjs@18.1.0": + version "18.1.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-commonjs/-/plugin-commonjs-18.1.0.tgz#5a760d757af168a50727c0ae080251fbfcc5eb02" + integrity sha512-h3e6T9rUxVMAQswpDIobfUHn/doMzM9sgkMrsMWCFLmB84PSoC8mV8tOloAJjSRwdqhXBqstlX2BwBpHJvbhxg== dependencies: "@rollup/pluginutils" "^3.1.0" commondir "^1.0.1" @@ -1420,10 +1434,10 @@ dependencies: "@rollup/pluginutils" "^3.0.8" -"@rollup/plugin-node-resolve@11.2.1": - version "11.2.1" - resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-11.2.1.tgz#82aa59397a29cd4e13248b106e6a4a1880362a60" - integrity sha512-yc2n43jcqVyGE2sqV5/YCmocy9ArjVAP/BeXyTtADTBBX6V0e5UMqwO8CdQ0kzjb6zu5P1qMzsScCMRvE9OlVg== +"@rollup/plugin-node-resolve@13.0.0": + version "13.0.0" + resolved "https://registry.yarnpkg.com/@rollup/plugin-node-resolve/-/plugin-node-resolve-13.0.0.tgz#352f07e430ff377809ec8ec8a6fd636547162dc4" + integrity sha512-41X411HJ3oikIDivT5OKe9EZ6ud6DXudtfNrGbC4nniaxx2esiWjkLOzgnZsWq1IM8YIeL2rzRGLZLBjlhnZtQ== dependencies: "@rollup/pluginutils" "^3.1.0" "@types/resolve" "1.17.1" @@ -3342,10 +3356,10 @@ flatten@^1.0.2: resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== -flow-parser@0.149.0: - version "0.149.0" - resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.149.0.tgz#6e5749ad832ba211968429accdb6a3858706e4f8" - integrity sha512-ruUVkZuM9oFQjhSsLO/OJYRYpGnuXJpTnIZmgzna6DyLFb3CLpeO27oJbWyeXaa830hmKf0JRzpcdFsFS8lmpg== +flow-parser@0.150.0: + version "0.150.0" + resolved "https://registry.yarnpkg.com/flow-parser/-/flow-parser-0.150.0.tgz#69ba3e90b0d127bc2f0d7025854805eeb09fd2c1" + integrity sha512-kYoNG9BH4RlYwEt0A9+30ZiUiYBNB9KLDeDI4rSBb0QsoH5F12ywNUOHp5JD2KVYz6nhapbn/kCIZALSmd3q6w== for-in@^1.0.2: version "1.0.2" @@ -5918,10 +5932,10 @@ rollup-plugin-terser@7.0.2: serialize-javascript "^4.0.0" terser "^5.0.0" -rollup@2.46.0: - version "2.46.0" - resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.46.0.tgz#8cacf89d2ee31a34755f1af40a665168f592b829" - integrity sha512-qPGoUBNl+Z8uNu0z7pD3WPTABWRbcOwIrO/5ccDJzmrtzn0LVf6Lj91+L5CcWhXl6iWf23FQ6m8Jkl2CmN1O7Q== +rollup@2.47.0: + version "2.47.0" + resolved "https://registry.yarnpkg.com/rollup/-/rollup-2.47.0.tgz#9d958aeb2c0f6a383cacc0401dff02b6e252664d" + integrity sha512-rqBjgq9hQfW0vRmz+0S062ORRNJXvwRpzxhFXORvar/maZqY6za3rgQ/p1Glg+j1hnc1GtYyQCPiAei95uTElg== optionalDependencies: fsevents "~2.3.1"