diff --git a/packages/prettier-plugin-java/package.json b/packages/prettier-plugin-java/package.json index 2cfad3a74..dfc76f9b7 100644 --- a/packages/prettier-plugin-java/package.json +++ b/packages/prettier-plugin-java/package.json @@ -1,6 +1,6 @@ { "name": "prettier-plugin-java", - "version": "2.7.4", + "version": "2.7.5", "description": "Prettier Java Plugin", "type": "module", "exports": { diff --git a/packages/prettier-plugin-java/src/printers/blocks-and-statements.ts b/packages/prettier-plugin-java/src/printers/blocks-and-statements.ts index 4bdc44766..cb61da2be 100644 --- a/packages/prettier-plugin-java/src/printers/blocks-and-statements.ts +++ b/packages/prettier-plugin-java/src/printers/blocks-and-statements.ts @@ -84,10 +84,11 @@ export default { ifStatement(path, print) { const { children } = path.node; const hasEmptyStatement = isEmptyStatement(children.statement[0]); + const statements = map(path, print, "statement"); const statement: Doc[] = [ "if ", indentInParentheses(call(path, print, "expression")), - hasEmptyStatement ? ";" : [" ", call(path, print, "statement", 0)] + hasEmptyStatement ? ";" : [" ", statements[0]] ]; if (children.Else) { const danglingComments = printDanglingComments(path); @@ -103,7 +104,7 @@ export default { const elseHasEmptyStatement = isEmptyStatement(children.statement[1]); statement.push( "else", - elseHasEmptyStatement ? ";" : [" ", call(path, print, "statement", 1)] + elseHasEmptyStatement ? ";" : [" ", statements[1]] ); } return statement; diff --git a/packages/prettier-plugin-java/src/printers/expressions.ts b/packages/prettier-plugin-java/src/printers/expressions.ts index 230e35aa2..a2996dec8 100644 --- a/packages/prettier-plugin-java/src/printers/expressions.ts +++ b/packages/prettier-plugin-java/src/printers/expressions.ts @@ -12,6 +12,7 @@ import { each, findBaseIndent, flatMap, + hasLeadingComments, indentInParentheses, isBinaryExpression, isNonTerminal, @@ -115,17 +116,21 @@ export default { conditionalExpression(path, print) { const binaryExpression = call(path, print, "binaryExpression"); - return path.node.children.QuestionMark - ? group( - indent( - join(line, [ - binaryExpression, - ["? ", call(path, print, "expression", 0)], - [": ", call(path, print, "expression", 1)] - ]) - ) - ) - : binaryExpression; + if (!path.node.children.QuestionMark) { + return binaryExpression; + } + const expressions = map(path, print, "expression"); + const contents = indent( + join(line, [ + binaryExpression, + ["? ", expressions[0]], + [": ", expressions[1]] + ]) + ); + const isNestedTernary = + (path.getNode(4) as JavaNonTerminal | null)?.name === + "conditionalExpression"; + return isNestedTernary ? contents : group(contents); }, binaryExpression(path, print, options) { @@ -165,8 +170,12 @@ export default { (operators.length > 0 && !children.AssignmentOperator) || (children.expression !== undefined && isBinaryExpression(children.expression[0])); + const isInList = + (path.getNode(4) as JavaNonTerminal | null)?.name === "elementValue" || + (path.getNode(6) as JavaNonTerminal | null)?.name === "argumentList"; return binary(operands, operators, { hasNonAssignmentOperators, + isInList, isRoot: true, operatorPosition: options.experimentalOperatorPosition }); @@ -275,8 +284,11 @@ export default { }, "primarySuffix" ); + const hasSuffixComments = children.primarySuffix.some(suffix => + hasLeadingComments(suffix) + ); return group( - canBreakForCallExpressions || willBreak(suffixes) + canBreakForCallExpressions || hasSuffixComments ? [prefix, indent(suffixes)] : [prefix, ...suffixes] ); @@ -468,9 +480,9 @@ export default { return allArgsExpandable; } const headArgs = args.slice(0, -1); - const huggedLastArg = call( - path, + const huggedLastArg = path.call( argPath => print(argPath, { hug: true }), + "children", "expression", args.length - 1 ); @@ -622,10 +634,12 @@ function binary( operators: { image: string; doc: Doc }[], { hasNonAssignmentOperators = false, + isInList = false, isRoot = false, operatorPosition }: { hasNonAssignmentOperators?: boolean; + isInList?: boolean; isRoot?: boolean; operatorPosition: "end" | "start"; } @@ -679,7 +693,12 @@ function binary( } } level.push(operands.shift()!); - if (!levelOperator || !isAssignmentOperator(levelOperator)) { + if ( + !levelOperator || + (!isInList && + !isAssignmentOperator(levelOperator) && + levelOperator !== "instanceof") + ) { return group(level); } if (!isRoot || hasNonAssignmentOperators) { @@ -756,7 +775,6 @@ function printTemplate< T extends StringTemplateCstNode | TextBlockTemplateCstNode, C extends Exclude, "embeddedExpression"> >(path: AstPath, print: JavaPrintFn, beginKey: C, midKey: C, endKey: C) { - const { children } = path.node; const begin = call(path, ({ node }) => node.image, beginKey); const mids = map(path, ({ node }) => node.image, midKey); const end = call(path, ({ node }) => node.image, endKey); @@ -766,7 +784,7 @@ function printTemplate< const parts = [begin, ...mids, end].map(image => join(hardline, image.split(prefix)) ); - return [ + return indent([ parts[0], ...map( path, @@ -780,5 +798,5 @@ function printTemplate< "embeddedExpression" as IterProperties ), parts.at(-1)! - ]; + ]); } diff --git a/packages/prettier-plugin-java/src/printers/helpers.ts b/packages/prettier-plugin-java/src/printers/helpers.ts index bf0ec40c7..c8001403a 100644 --- a/packages/prettier-plugin-java/src/printers/helpers.ts +++ b/packages/prettier-plugin-java/src/printers/helpers.ts @@ -122,10 +122,9 @@ export function call< >( path: AstPath, callback: MapCallback, P>, U>, - child: P, - index = 0 + child: P ) { - return path.map(callback, "children", child)[index]; + return path.map(callback, "children", child)[0]; } export function each< @@ -318,7 +317,7 @@ export function printClassType( const node = children[child]![childIndex]; const next = array.at(index + 1); const nextNode = next && children[next.child]![next.index]; - const docs = [call(path, print, child, childIndex)]; + const docs = [path.call(print, "children", child, childIndex)]; if (nextNode) { if (isNonTerminal(node)) { docs.push(node.name === "annotation" ? " " : "."); diff --git a/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-end/_input.java b/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-end/_input.java index 94fc575ae..0e586cc0c 100644 --- a/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-end/_input.java +++ b/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-end/_input.java @@ -32,6 +32,10 @@ public int ternaryOperationThatShouldNotBreak() { return b ? b : c; } + void nestedTernary() { + aaaaaaaaaa ? bbbbbbbbbb : cccccccccc ? dddddddddd : eeeeeeeeee ? ffffffffff : gggggggggg; + } + public boolean binaryOperationWithComments() { boolean a = one || two >> 1 // one // two @@ -132,4 +136,17 @@ void parentheses() { if (aaaaaaaaaa + bbbbbbbbbb == cccccccccc + dddddddddd && eeeeeeeeee + ffffffffff == gggggggggg + hhhhhhhhhh || iiiiiiiiii + jjjjjjjjjj == kkkkkkkkkk + llllllllll && mmmmmmmmmm + nnnnnnnnnn == oooooooooo + pppppppppp || qqqqqqqqqq + rrrrrrrrrr == ssssssssss + tttttttttt && uuuuuuuuuu + vvvvvvvvvv == wwwwwwwwww + xxxxxxxxxxx) {} } + + void instanceOf() { + var a = + a && + Foo.get(longlinelonglinelonglinelonglinelongline) instanceof + NumberNumberNumberNumber n && + n.foo(); + + var a = + Foo.get(longlinelonglinelonglinelonglinelongline) instanceof + NumberNumberNumberNumber n && + n.foo(); + } } diff --git a/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-end/_output.java b/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-end/_output.java index 6877a4b99..c4ecb0d96 100644 --- a/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-end/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-end/_output.java @@ -7,12 +7,12 @@ public void binaryOperation() { @Annotation( "This operation with two very long string should break" + - "in a very nice way" + "in a very nice way" ) public String binaryOperationThatShouldBreak() { System.out.println( "This operation with two very long string should break" + - "in a very nice way" + "in a very nice way" ); return ( "This operation with two very long string should break" + @@ -49,6 +49,16 @@ public int ternaryOperationThatShouldNotBreak() { return b ? b : c; } + void nestedTernary() { + aaaaaaaaaa + ? bbbbbbbbbb + : cccccccccc + ? dddddddddd + : eeeeeeeeee + ? ffffffffff + : gggggggggg; + } + public boolean binaryOperationWithComments() { boolean a = one || @@ -252,4 +262,17 @@ void parentheses() { uuuuuuuuuu + vvvvvvvvvv == wwwwwwwwww + xxxxxxxxxxx) ) {} } + + void instanceOf() { + var a = + a && + Foo.get(longlinelonglinelonglinelonglinelongline) instanceof + NumberNumberNumberNumber n && + n.foo(); + + var a = + Foo.get(longlinelonglinelonglinelonglinelongline) instanceof + NumberNumberNumberNumber n && + n.foo(); + } } diff --git a/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-start/_input.java b/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-start/_input.java index 94fc575ae..0e586cc0c 100644 --- a/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-start/_input.java +++ b/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-start/_input.java @@ -32,6 +32,10 @@ public int ternaryOperationThatShouldNotBreak() { return b ? b : c; } + void nestedTernary() { + aaaaaaaaaa ? bbbbbbbbbb : cccccccccc ? dddddddddd : eeeeeeeeee ? ffffffffff : gggggggggg; + } + public boolean binaryOperationWithComments() { boolean a = one || two >> 1 // one // two @@ -132,4 +136,17 @@ void parentheses() { if (aaaaaaaaaa + bbbbbbbbbb == cccccccccc + dddddddddd && eeeeeeeeee + ffffffffff == gggggggggg + hhhhhhhhhh || iiiiiiiiii + jjjjjjjjjj == kkkkkkkkkk + llllllllll && mmmmmmmmmm + nnnnnnnnnn == oooooooooo + pppppppppp || qqqqqqqqqq + rrrrrrrrrr == ssssssssss + tttttttttt && uuuuuuuuuu + vvvvvvvvvv == wwwwwwwwww + xxxxxxxxxxx) {} } + + void instanceOf() { + var a = + a && + Foo.get(longlinelonglinelonglinelonglinelongline) instanceof + NumberNumberNumberNumber n && + n.foo(); + + var a = + Foo.get(longlinelonglinelonglinelonglinelongline) instanceof + NumberNumberNumberNumber n && + n.foo(); + } } diff --git a/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-start/_output.java b/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-start/_output.java index 43699f128..71932298d 100644 --- a/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-start/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/binary_expressions/operator-position-start/_output.java @@ -7,12 +7,12 @@ public void binaryOperation() { @Annotation( "This operation with two very long string should break" - + "in a very nice way" + + "in a very nice way" ) public String binaryOperationThatShouldBreak() { System.out.println( "This operation with two very long string should break" - + "in a very nice way" + + "in a very nice way" ); return ( "This operation with two very long string should break" @@ -49,6 +49,16 @@ public int ternaryOperationThatShouldNotBreak() { return b ? b : c; } + void nestedTernary() { + aaaaaaaaaa + ? bbbbbbbbbb + : cccccccccc + ? dddddddddd + : eeeeeeeeee + ? ffffffffff + : gggggggggg; + } + public boolean binaryOperationWithComments() { boolean a = one @@ -245,4 +255,17 @@ void parentheses() { && uuuuuuuuuu + vvvvvvvvvv == wwwwwwwwww + xxxxxxxxxxx) ) {} } + + void instanceOf() { + var a = + a + && Foo.get(longlinelonglinelonglinelonglinelongline) + instanceof NumberNumberNumberNumber n + && n.foo(); + + var a = + Foo.get(longlinelonglinelonglinelonglinelongline) + instanceof NumberNumberNumberNumber n + && n.foo(); + } } diff --git a/packages/prettier-plugin-java/test/unit-test/if/_input.java b/packages/prettier-plugin-java/test/unit-test/if/_input.java index d9b588eab..24672a0a9 100644 --- a/packages/prettier-plugin-java/test/unit-test/if/_input.java +++ b/packages/prettier-plugin-java/test/unit-test/if/_input.java @@ -40,4 +40,47 @@ public void ifElseIfElseIfElse(boolean one, boolean two, boolean three) { } } + void longIfElseChain() { + if (1) { + // 1 + } else if (2) { + // 2 + } else if (3) { + // 3 + } else if (4) { + // 4 + } else if (5) { + // 5 + } else if (6) { + // 6 + } else if (7) { + // 7 + } else if (8) { + // 8 + } else if (9) { + // 9 + } else if (10) { + // 10 + } else if (11) { + // 11 + } else if (12) { + // 12 + } else if (13) { + // 13 + } else if (14) { + // 14 + } else if (15) { + // 15 + } else if (16) { + // 16 + } else if (17) { + // 17 + } else if (18) { + // 18 + } else if (19) { + // 19 + } else if (20) { + // 20 + } + } } diff --git a/packages/prettier-plugin-java/test/unit-test/if/_output.java b/packages/prettier-plugin-java/test/unit-test/if/_output.java index a836f78f7..24672a0a9 100644 --- a/packages/prettier-plugin-java/test/unit-test/if/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/if/_output.java @@ -39,4 +39,48 @@ public void ifElseIfElseIfElse(boolean one, boolean two, boolean three) { System.out.println("not on or two or three"); } } + + void longIfElseChain() { + if (1) { + // 1 + } else if (2) { + // 2 + } else if (3) { + // 3 + } else if (4) { + // 4 + } else if (5) { + // 5 + } else if (6) { + // 6 + } else if (7) { + // 7 + } else if (8) { + // 8 + } else if (9) { + // 9 + } else if (10) { + // 10 + } else if (11) { + // 11 + } else if (12) { + // 12 + } else if (13) { + // 13 + } else if (14) { + // 14 + } else if (15) { + // 15 + } else if (16) { + // 16 + } else if (17) { + // 17 + } else if (18) { + // 18 + } else if (19) { + // 19 + } else if (20) { + // 20 + } + } } diff --git a/packages/prettier-plugin-java/test/unit-test/lambda/_input.java b/packages/prettier-plugin-java/test/unit-test/lambda/_input.java index 79e674b5c..b5751e3d0 100644 --- a/packages/prettier-plugin-java/test/unit-test/lambda/_input.java +++ b/packages/prettier-plugin-java/test/unit-test/lambda/_input.java @@ -185,6 +185,16 @@ void singleLambdaWithBlockLastArgumentAndLongArguments() { return f; } ); + + this.a( + aaaaaaaaaaaaaaaaaaaaaaaaaa, + bbbbbbbbbbbbbbbbbbbbbbbbbb, + cccccccccccccccccccccccccc, + dddddddddddddddddddddddddd, + e -> { + return f; + } + ); } void singleLambdaWithBlockLastArgumentAndLongLambdaArgument() { @@ -212,6 +222,10 @@ void argumentAfterLambdaWithBlock() { } void huggableArguments() { + A.b().c(() -> { + return d; + }); + aaaaaaaaaaaaaaaaaaaaaaaa((bbbbbbbbbbbbbbbbbbbbbbbb, cccccccccccccccccccccccc, dddddddddddddddddddddddd) -> eeeeeeeeeeeeeeeeeeeeeeee.ffffffffffffffffffffffff()); a.b(c -> d -> eeeeeeeeee.ffffffffff(gggggggggg, hhhhhhhhhh, iiiiiiiiii, jjjjjjjjjj, kkkkkkkkkk)); diff --git a/packages/prettier-plugin-java/test/unit-test/lambda/_output.java b/packages/prettier-plugin-java/test/unit-test/lambda/_output.java index 9b90eef12..523bd8fee 100644 --- a/packages/prettier-plugin-java/test/unit-test/lambda/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/lambda/_output.java @@ -179,6 +179,16 @@ void singleLambdaWithBlockLastArgumentAndLongArguments() { return f; } ); + + this.a( + aaaaaaaaaaaaaaaaaaaaaaaaaa, + bbbbbbbbbbbbbbbbbbbbbbbbbb, + cccccccccccccccccccccccccc, + dddddddddddddddddddddddddd, + e -> { + return f; + } + ); } void singleLambdaWithBlockLastArgumentAndLongLambdaArgument() { @@ -228,6 +238,10 @@ void argumentAfterLambdaWithBlock() { } void huggableArguments() { + A.b().c(() -> { + return d; + }); + aaaaaaaaaaaaaaaaaaaaaaaa( ( bbbbbbbbbbbbbbbbbbbbbbbb, diff --git a/packages/prettier-plugin-java/test/unit-test/template-expression/_output.java b/packages/prettier-plugin-java/test/unit-test/template-expression/_output.java index 3f27bee86..be291f2c4 100644 --- a/packages/prettier-plugin-java/test/unit-test/template-expression/_output.java +++ b/packages/prettier-plugin-java/test/unit-test/template-expression/_output.java @@ -7,8 +7,8 @@ class TemplateExpression { String s = STR."You have a \{getOfferType()} waiting for you!"; String msg = STR."The file \{filePath} \{ - file.exists() ? "does" : "does not" - } exist"; + file.exists() ? "does" : "does not" + } exist"; String time = STR."The time is \{ // The java.time.format package is very useful @@ -55,6 +55,6 @@ class TemplateExpression { """; PreparedStatement ps = DB."SELECT * FROM Person p WHERE p.last_name = \{ - name - }"; + name + }"; } diff --git a/website/docusaurus.config.ts b/website/docusaurus.config.ts index e3b96d0e6..062436104 100644 --- a/website/docusaurus.config.ts +++ b/website/docusaurus.config.ts @@ -10,7 +10,7 @@ const { origin: url, pathname: baseUrl } = new URL(homepage); const [, organizationName, projectName] = new URL(repository).pathname.split( "/" ); -const editUrl = `${repository}/tree/docs/create-website/website/`; +const editUrl = `${repository}/tree/main/website/`; export default { title: "Prettier Java", diff --git a/yarn.lock b/yarn.lock index 2916b2a2e..6cdc62ff9 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1314,6 +1314,14 @@ cacache@^18.0.3: tar "^6.1.11" unique-filename "^3.0.0" +call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6" + integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ== + dependencies: + es-errors "^1.3.0" + function-bind "^1.1.2" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" @@ -1848,6 +1856,15 @@ dotenv@^16.4.4, dotenv@~16.4.5: resolved "https://registry.yarnpkg.com/dotenv/-/dotenv-16.4.5.tgz#cdd3b3b604cb327e286b4762e13502f717cb099f" integrity sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg== +dunder-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a" + integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A== + dependencies: + call-bind-apply-helpers "^1.0.1" + es-errors "^1.3.0" + gopd "^1.2.0" + duplexer@^0.1.1: version "0.1.2" resolved "https://registry.yarnpkg.com/duplexer/-/duplexer-0.1.2.tgz#3abe43aef3835f8ae077d136ddce0f276b0400e6" @@ -1928,6 +1945,33 @@ error-ex@^1.3.1: dependencies: is-arrayish "^0.2.1" +es-define-property@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa" + integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g== + +es-errors@^1.3.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f" + integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw== + +es-object-atoms@^1.0.0, es-object-atoms@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1" + integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA== + dependencies: + es-errors "^1.3.0" + +es-set-tostringtag@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d" + integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA== + dependencies: + es-errors "^1.3.0" + get-intrinsic "^1.2.6" + has-tostringtag "^1.0.2" + hasown "^2.0.2" + escalade@^3.1.1: version "3.1.1" resolved "https://registry.yarnpkg.com/escalade/-/escalade-3.1.1.tgz#d8cfdc7000965c5a0174b4a82eaa5c0552742e40" @@ -2236,12 +2280,14 @@ foreground-child@^3.1.0: signal-exit "^4.0.1" form-data@^4.0.0: - version "4.0.0" - resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.0.tgz#93919daeaf361ee529584b9b31664dc12c9fa452" - integrity sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww== + version "4.0.4" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4" + integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow== dependencies: asynckit "^0.4.0" combined-stream "^1.0.8" + es-set-tostringtag "^2.1.0" + hasown "^2.0.2" mime-types "^2.1.12" front-matter@^4.0.2: @@ -2304,6 +2350,22 @@ get-east-asian-width@^1.0.0: resolved "https://registry.yarnpkg.com/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz#21b4071ee58ed04ee0db653371b55b4299875389" integrity sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ== +get-intrinsic@^1.2.6: + version "1.3.0" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01" + integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ== + dependencies: + call-bind-apply-helpers "^1.0.2" + es-define-property "^1.0.1" + es-errors "^1.3.0" + es-object-atoms "^1.1.1" + function-bind "^1.1.2" + get-proto "^1.0.1" + gopd "^1.2.0" + has-symbols "^1.1.0" + hasown "^2.0.2" + math-intrinsics "^1.1.0" + get-pkg-repo@^4.2.1: version "4.2.1" resolved "https://registry.yarnpkg.com/get-pkg-repo/-/get-pkg-repo-4.2.1.tgz#75973e1c8050c73f48190c52047c4cee3acbf385" @@ -2319,6 +2381,14 @@ get-port@5.1.1: resolved "https://registry.yarnpkg.com/get-port/-/get-port-5.1.1.tgz#0469ed07563479de6efb986baf053dcd7d4e3193" integrity sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ== +get-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1" + integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g== + dependencies: + dunder-proto "^1.0.1" + es-object-atoms "^1.0.0" + get-stream@6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-6.0.0.tgz#3e0012cb6827319da2706e601a1583e8629a6718" @@ -2456,6 +2526,11 @@ globby@11.1.0: merge2 "^1.4.1" slash "^3.0.0" +gopd@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1" + integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg== + graceful-fs@4.2.11, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.6, graceful-fs@^4.2.9: version "4.2.11" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3" @@ -2488,6 +2563,18 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-symbols@^1.0.3, has-symbols@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338" + integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ== + +has-tostringtag@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc" + integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw== + dependencies: + has-symbols "^1.0.3" + has-unicode@2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" @@ -2500,6 +2587,13 @@ hasown@^2.0.0: dependencies: function-bind "^1.1.2" +hasown@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003" + integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ== + dependencies: + function-bind "^1.1.2" + he@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" @@ -3369,6 +3463,11 @@ map-obj@^4.0.0: resolved "https://registry.yarnpkg.com/map-obj/-/map-obj-4.3.0.tgz#9304f906e93faae70880da102a9f1df0ea8bb05a" integrity sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ== +math-intrinsics@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9" + integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g== + meow@^8.1.2: version "8.1.2" resolved "https://registry.yarnpkg.com/meow/-/meow-8.1.2.tgz#bcbe45bda0ee1729d350c03cffc8395a36c4e897"