Skip to content

fix(parser): allow nested destructured arrow functions inside ternary-consequent bodies - #10152

Merged
ematipico merged 2 commits into
biomejs:mainfrom
Zelys-DFKH:fix/parser-nested-destructured-arrow-ternary
Jul 23, 2026
Merged

ematipico merged 2 commits into
biomejs:mainfrom
Zelys-DFKH:fix/parser-nested-destructured-arrow-ternary

Conversation

@Zelys-DFKH

@Zelys-DFKH Zelys-DFKH commented Apr 29, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #10131.

The parser was rejecting valid code like this:

const handleClick = onClick
  ? (offset: number) =>
      ({ photo, index, event }: ClickHandlerProps<TPhoto>) => {
        onClick({ photos: photosArray, index: offset + index, photo, event });
      }
  : undefined;

parse_arrow_body uses parse_assignment_expression_or_higher_no_arrow when in_conditional_consequent is set and the body starts with ({ or ([. The guard is there for a real reason: in TypeScript mode, the ternary : can be misread as a return-type annotation, and the alternate's => gets consumed as the arrow, making a parenthesized object literal look like a valid arrow function.

The guard was too broad. It was blocking legitimate nested arrows along with the false positives it was meant to prevent.

Before falling back to _no_arrow, a new helper scans forward token by token (tracking paren depth) to find the closing ), then checks whether => follows immediately. If it does, the expression must be a nested arrow, so normal parsing is allowed. => only appears in arrow function syntax, which makes it a cleaner discriminator than checking : (TypeScript return-type annotations also produce :).

fn is_paren_group_followed_by_fat_arrow(p: &mut JsParser) -> bool {
    // tracks ( / ) depth so parens inside type annotations don't mislead
    ...
    return p.nth_at(offset + 1, T![=>]);
}

One pre-existing edge case stays unchanged from main: a nested arrow with both destructuring params and a return-type annotation, like ({x}: T): R => body, inside another arrow body in a ternary consequent. That's a separate problem and I kept scope narrow here.

Test plan

Added crates/biome_js_parser/tests/js_test_suite/ok/conditional_nested_arrow_in_consequent.ts and .js, covering:

  • Object destructuring: (offset: number) => ({ photo, index, event }: ClickHandlerProps<TPhoto>) => { ... }
  • Array destructuring: (n: number) => ([a, b]: [string, string]) => { ... }
  • Existing behavior preserved: (i: number) => ({ [CONTENT_SLOT]: i }) still parses the body as a parenthesized object expression

All 688 parser spec tests pass.

Docs

No documentation changes needed.

…-consequent bodies

Fixes biomejs#10131. When `parse_arrow_body` enters the expression-body path with
`in_conditional_consequent` set and the body starts with `({` or `([`, it was
falling back to `parse_assignment_expression_or_higher_no_arrow` unconditionally.
That guard prevents a TypeScript speculative-parse false positive (the ternary `:`
being consumed as a return-type annotation), but it was too broad and also blocked
legitimate nested arrow functions.

The fix adds `is_paren_group_followed_by_fat_arrow`, a token-level lookahead that
scans forward (tracking paren depth) and checks whether `=>` immediately follows
the closing `)`. `=>` is syntactically unambiguous and a better discriminator than
`:`. The `_no_arrow` guard is kept only when `=>` does not follow.

Tests added for both TypeScript and JavaScript.
@changeset-bot

changeset-bot Bot commented Apr 29, 2026 •

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 1db27bc

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 13 packages
Name Type
@biomejs/biome Patch
@biomejs/cli-win32-x64 Patch
@biomejs/cli-win32-arm64 Patch
@biomejs/cli-darwin-x64 Patch
@biomejs/cli-darwin-arm64 Patch
@biomejs/cli-linux-x64 Patch
@biomejs/cli-linux-arm64 Patch
@biomejs/cli-linux-x64-musl Patch
@biomejs/cli-linux-arm64-musl Patch
@biomejs/wasm-web Patch
@biomejs/wasm-bundler Patch
@biomejs/wasm-nodejs Patch
@biomejs/backend-jsonrpc Patch

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@github-actions github-actions Bot added A-Parser Area: parser L-JavaScript Language: JavaScript and super languages labels Apr 29, 2026
@coderabbitai

coderabbitai Bot commented Apr 29, 2026 •

Copy link
Copy Markdown
Contributor

Walkthrough

This PR fixes a parser regression where curried arrow functions with destructured parameters inside a ternary consequent were mis-parsed. It adds a lookahead that matches a parenthesised parameter group to check for a following =>, forces the ternary-consequent flag off when parsing arrow bodies, and suppresses speculative “no-arrow” parsing for ({ or ([ starts unless the group is actually followed by =>. A changeset and JS/TS regression tests were added.

Suggested reviewers

  • dyc3
🚥 Pre-merge checks | ✅ 4
✅ Passed checks (4 passed)
Check name Status Explanation
Title check ✅ Passed Title clearly and concisely describes the main fix: allowing nested destructured arrow functions inside ternary-consequent bodies, matching the core change.
Linked Issues check ✅ Passed The PR fully addresses #10131 by implementing parser fixes [parser function.rs, changeset] to restore correct parsing of nested destructured arrow functions in ternary consequents and adding regression tests [.ts and .js fixtures].
Out of Scope Changes check ✅ Passed All changes are tightly scoped to fixing the nested destructured arrow parsing issue; no unrelated modifications present.
Description check ✅ Passed The PR description clearly explains the parsing bug, the root cause of the overly broad guard, and the solution using a token-level lookahead helper.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@dyc3 dyc3 left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nitpick: i think all the comments added in this pr are a bit hard to understand. they already include some abbreviated code samples, but maybe some more complete ones would help? idk, maybe i need sleep.

@@ -0,0 +1,22 @@
// Regression test for https://github.com/biomejs/biome/issues/10131 (JavaScript variant)
// Curried arrow in a ternary consequent where the inner arrow's parameters

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what does "curried" mean in this context?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry for the unclear comments — I've been writing a novel and apparently it's bleeding into my code reviews. Rewrote the function.rs comment blocks with concrete before/after code snippets instead of prose. Left the test fixture comments as-is to avoid touching the snapshots — happy to update those separately if you'd prefer a different description there. Ping me if anything's still off.

@codspeed

codspeed Bot commented Apr 29, 2026 •

Copy link
Copy Markdown

Merging this PR will not alter performance

✅ 58 untouched benchmarks
⏩ 196 skipped benchmarks1


Comparing Zelys-DFKH:fix/parser-nested-destructured-arrow-ternary (1db27bc) with main (e94acb2)

Open in CodSpeed

Footnotes

  1. 196 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports. ↩

// paren is the one checked for `=>`. Without this, `(a: () => T) =>` would stop
// at the inner `)` and return false.
fn is_paren_group_followed_by_fat_arrow(p: &mut JsParser) -> bool {
debug_assert!(p.at(T!['(']));

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We usually want to add a small message with debug assertions. The message should be actionable, or try to be. The message should explain the error and hint at a possible solution (hence, actionable)

@ematipico
ematipico merged commit 50a9bd8 into biomejs:main Jul 23, 2026
31 checks passed
@github-actions github-actions Bot mentioned this pull request Jul 23, 2026
OIRNOIR pushed a commit to OIRNOIR/YouTube-Helper-Server that referenced this pull request Aug 4, 2026
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [@biomejs/biome](https://biomejs.dev) ([source](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome)) | imports | patch | [`2.5.5` -> `2.5.6`](https://renovatebot.com/diffs/npm/@biomejs%2fbiome/2.5.5/2.5.6) |

---

### Release Notes

<details>
<summary>biomejs/biome (@&#8203;biomejs/biome)</summary>

### [`v2.5.6`](https://github.com/biomejs/biome/blob/HEAD/packages/@&#8203;biomejs/biome/CHANGELOG.md#256)

[Compare Source](https://github.com/biomejs/biome/compare/@biomejs/biome@2.5.5...@biomejs/biome@2.5.6)

##### Patch Changes

- [#&#8203;11035](biomejs/biome#11035) [`0e4b03b`](biomejs/biome@0e4b03b) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed a performance regression in [`noMisusedPromises`](https://biomejs.dev/linter/rules/no-misused-promises/) that caused type inference to run repeatedly while linting a file.

- [#&#8203;11043](biomejs/biome#11043) [`22ec076`](biomejs/biome@22ec076) Thanks [@&#8203;denbezrukov](https://github.com/denbezrukov)! - Fixed CSS formatting for multiline function arguments preceded by comments:

  ```diff
   .example {
     value: outer(
       1,
       /* comment */
       nested(
  -      first,
  -      second
  -    )
  +        first,
  +        second
  +      )
     );
   }
  ```

- [#&#8203;11007](biomejs/biome#11007) [`c9acb25`](biomejs/biome@c9acb25) Thanks [@&#8203;BTF-Kabir-2020](https://github.com/BTF-Kabir-2020)! - Fixed [#&#8203;9195](biomejs/biome#9195): [`useHookAtTopLevel`](https://biomejs.dev/linter/rules/use-hook-at-top-level/) no longer reports hooks in named `forwardRef` components that receive a `ref` parameter.

- [#&#8203;10152](biomejs/biome#10152) [`50a9bd8`](biomejs/biome@50a9bd8) Thanks [@&#8203;Zelys-DFKH](https://github.com/Zelys-DFKH)! - Fixed [#&#8203;10131](biomejs/biome#10131): Biome now correctly parses curried arrow functions in ternary consequents when the inner arrow's parameters use a destructuring pattern, e.g. `cond ? (x) => ({ a, b }) => body : alt`.

- [#&#8203;11105](biomejs/biome#11105) [`8ffe2b9`](biomejs/biome@8ffe2b9) Thanks [@&#8203;dadavidtseng](https://github.com/dadavidtseng)! - Fixed [#&#8203;11092](biomejs/biome#11092): The [`noUselessTernary`](https://biomejs.dev/linter/rules/no-useless-ternary/) quick fix now preserves operator spacing when simplifying or inverting boolean ternary expressions.

- [#&#8203;10533](biomejs/biome#10533) [`5809875`](biomejs/biome@5809875) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Fixed [#&#8203;10515](biomejs/biome#10515): `biome check --write` was not idempotent on Svelte files — multi-line template literals in `<script>` blocks and block comments in `<style>` blocks gained an extra indent level on every run.

- [#&#8203;11040](biomejs/biome#11040) [`0abb620`](biomejs/biome@0abb620) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Fixed an issue where the HTML formatter would duplicate a comment placed directly before a Svelte `{@&#8203;const ...}` or `{@&#8203;debug ...}` block. The duplication compounded on every subsequent `--write`, causing the file to grow exponentially.

- [#&#8203;10858](biomejs/biome#10858) [`6d18204`](biomejs/biome@6d18204) Thanks [@&#8203;ruidosujeira](https://github.com/ruidosujeira)! - Fixed [#&#8203;10839](biomejs/biome#10839): Svelte `{#each}` array destructuring no longer includes spaces inside square brackets, and multiline bind function expressions now indent their getter, setter, and function body correctly.

- [#&#8203;11009](biomejs/biome#11009) [`2c36626`](biomejs/biome@2c36626) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Improved the accuracy of type-aware lint rules by resolving more inferred types. For example, [`noFloatingPromises`](https://biomejs.dev/linter/rules/no-floating-promises/) now detects floating Promises returned by aliased callbacks and arrays of Promises created by async mapping callbacks.

  The following statements are now reported:

  ```ts
  type AsyncCallback = () => Promise<void>;
  declare const callback: AsyncCallback;
  callback();

  [1, 2, 3].map(async (value) => value);
  ```

- [#&#8203;10973](biomejs/biome#10973) [`9cb044c`](biomejs/biome@9cb044c) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed false positives in [`noMisleadingReturnType`](https://biomejs.dev/linter/rules/no-misleading-return-type/) when generic-constraint, normalization, substitution, or structural return-type comparison cannot complete. The rule now suppresses diagnostics rather than suggesting a return type derived from partial information. For example, this unresolved return type is no longer reported:

  ```ts
  function unresolvedReturnType(): MissingType {
    return "value" as const;
  }
  ```

- [#&#8203;11071](biomejs/biome#11071) [`15047a2`](biomejs/biome@15047a2) Thanks [@&#8203;dyc3](https://github.com/dyc3)! - The HTML parser now accepts mixed-case `doctype` declarations.

- [#&#8203;11030](biomejs/biome#11030) [`cc90e65`](biomejs/biome@cc90e65) Thanks [@&#8203;marschattha](https://github.com/marschattha)! - The `rdjson` reporter now populates the [severity](https://github.com/reviewdog/reviewdog/blob/master/proto/rdf/reviewdog.proto) field of each diagnostic (`ERROR`, `WARNING`, or `INFO`), so tools consuming Reviewdog Diagnostic Format output no longer need to assume a default severity.

- [#&#8203;11009](biomejs/biome#11009) [`2c36626`](biomejs/biome@2c36626) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed a performance regression in type-aware JavaScript lint rules by inferring only requested types and memoizing export resolution.

- [#&#8203;11056](biomejs/biome#11056) [`903b177`](biomejs/biome@903b177) Thanks [@&#8203;dyc3](https://github.com/dyc3)! - Added support for Svelte declaration tags using `let` and `const`. Biome can now parse, format, and lint bindings declared in these tags.

- [#&#8203;11045](biomejs/biome#11045) [`89c27c6`](biomejs/biome@89c27c6) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Improved the performance of Biome formatter up to \~7% across the board.

- [#&#8203;9806](biomejs/biome#9806) [`781d68d`](biomejs/biome@781d68d) Thanks [@&#8203;dyc3](https://github.com/dyc3)! - Added the nursery rule [`noJsRestrictedProperties`](https://biomejs.dev/linter/rules/no-js-restricted-properties/), which ports ESLint's `no-restricted-properties` rule. Biome now flags restricted member access and object destructuring, and `biome migrate eslint` preserves the rule's options.

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yODQuMCIsInVwZGF0ZWRJblZlciI6IjQzLjI4NC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: https://git.oirnoir.dev/OIRNOIR/YouTube-Helper-Server/pulls/33
OIRNOIR pushed a commit to OIRNOIR/YouTube-Helper-Client that referenced this pull request Aug 4, 2026
This PR contains the following updates:

| Package | Type | Update | Change | Pending |
|---|---|---|---|---|
| [@biomejs/biome](https://biomejs.dev) ([source](https://github.com/biomejs/biome/tree/HEAD/packages/@biomejs/biome)) | imports | patch | [`2.5.5` -> `2.5.6`](https://renovatebot.com/diffs/npm/@biomejs%2fbiome/2.5.5/2.5.6) | `2.5.7` |

---

### Release Notes

<details>
<summary>biomejs/biome (@&#8203;biomejs/biome)</summary>

### [`v2.5.6`](https://github.com/biomejs/biome/blob/HEAD/packages/@&#8203;biomejs/biome/CHANGELOG.md#256)

[Compare Source](https://github.com/biomejs/biome/compare/@biomejs/biome@2.5.5...@biomejs/biome@2.5.6)

##### Patch Changes

- [#&#8203;11035](biomejs/biome#11035) [`0e4b03b`](biomejs/biome@0e4b03b) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed a performance regression in [`noMisusedPromises`](https://biomejs.dev/linter/rules/no-misused-promises/) that caused type inference to run repeatedly while linting a file.

- [#&#8203;11043](biomejs/biome#11043) [`22ec076`](biomejs/biome@22ec076) Thanks [@&#8203;denbezrukov](https://github.com/denbezrukov)! - Fixed CSS formatting for multiline function arguments preceded by comments:

  ```diff
   .example {
     value: outer(
       1,
       /* comment */
       nested(
  -      first,
  -      second
  -    )
  +        first,
  +        second
  +      )
     );
   }
  ```

- [#&#8203;11007](biomejs/biome#11007) [`c9acb25`](biomejs/biome@c9acb25) Thanks [@&#8203;BTF-Kabir-2020](https://github.com/BTF-Kabir-2020)! - Fixed [#&#8203;9195](biomejs/biome#9195): [`useHookAtTopLevel`](https://biomejs.dev/linter/rules/use-hook-at-top-level/) no longer reports hooks in named `forwardRef` components that receive a `ref` parameter.

- [#&#8203;10152](biomejs/biome#10152) [`50a9bd8`](biomejs/biome@50a9bd8) Thanks [@&#8203;Zelys-DFKH](https://github.com/Zelys-DFKH)! - Fixed [#&#8203;10131](biomejs/biome#10131): Biome now correctly parses curried arrow functions in ternary consequents when the inner arrow's parameters use a destructuring pattern, e.g. `cond ? (x) => ({ a, b }) => body : alt`.

- [#&#8203;11105](biomejs/biome#11105) [`8ffe2b9`](biomejs/biome@8ffe2b9) Thanks [@&#8203;dadavidtseng](https://github.com/dadavidtseng)! - Fixed [#&#8203;11092](biomejs/biome#11092): The [`noUselessTernary`](https://biomejs.dev/linter/rules/no-useless-ternary/) quick fix now preserves operator spacing when simplifying or inverting boolean ternary expressions.

- [#&#8203;10533](biomejs/biome#10533) [`5809875`](biomejs/biome@5809875) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Fixed [#&#8203;10515](biomejs/biome#10515): `biome check --write` was not idempotent on Svelte files — multi-line template literals in `<script>` blocks and block comments in `<style>` blocks gained an extra indent level on every run.

- [#&#8203;11040](biomejs/biome#11040) [`0abb620`](biomejs/biome@0abb620) Thanks [@&#8203;Mokto](https://github.com/Mokto)! - Fixed an issue where the HTML formatter would duplicate a comment placed directly before a Svelte `{@&#8203;const ...}` or `{@&#8203;debug ...}` block. The duplication compounded on every subsequent `--write`, causing the file to grow exponentially.

- [#&#8203;10858](biomejs/biome#10858) [`6d18204`](biomejs/biome@6d18204) Thanks [@&#8203;ruidosujeira](https://github.com/ruidosujeira)! - Fixed [#&#8203;10839](biomejs/biome#10839): Svelte `{#each}` array destructuring no longer includes spaces inside square brackets, and multiline bind function expressions now indent their getter, setter, and function body correctly.

- [#&#8203;11009](biomejs/biome#11009) [`2c36626`](biomejs/biome@2c36626) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Improved the accuracy of type-aware lint rules by resolving more inferred types. For example, [`noFloatingPromises`](https://biomejs.dev/linter/rules/no-floating-promises/) now detects floating Promises returned by aliased callbacks and arrays of Promises created by async mapping callbacks.

  The following statements are now reported:

  ```ts
  type AsyncCallback = () => Promise<void>;
  declare const callback: AsyncCallback;
  callback();

  [1, 2, 3].map(async (value) => value);
  ```

- [#&#8203;10973](biomejs/biome#10973) [`9cb044c`](biomejs/biome@9cb044c) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed false positives in [`noMisleadingReturnType`](https://biomejs.dev/linter/rules/no-misleading-return-type/) when generic-constraint, normalization, substitution, or structural return-type comparison cannot complete. The rule now suppresses diagnostics rather than suggesting a return type derived from partial information. For example, this unresolved return type is no longer reported:

  ```ts
  function unresolvedReturnType(): MissingType {
    return "value" as const;
  }
  ```

- [#&#8203;11071](biomejs/biome#11071) [`15047a2`](biomejs/biome@15047a2) Thanks [@&#8203;dyc3](https://github.com/dyc3)! - The HTML parser now accepts mixed-case `doctype` declarations.

- [#&#8203;11030](biomejs/biome#11030) [`cc90e65`](biomejs/biome@cc90e65) Thanks [@&#8203;marschattha](https://github.com/marschattha)! - The `rdjson` reporter now populates the [severity](https://github.com/reviewdog/reviewdog/blob/master/proto/rdf/reviewdog.proto) field of each diagnostic (`ERROR`, `WARNING`, or `INFO`), so tools consuming Reviewdog Diagnostic Format output no longer need to assume a default severity.

- [#&#8203;11009](biomejs/biome#11009) [`2c36626`](biomejs/biome@2c36626) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Fixed a performance regression in type-aware JavaScript lint rules by inferring only requested types and memoizing export resolution.

- [#&#8203;11056](biomejs/biome#11056) [`903b177`](biomejs/biome@903b177) Thanks [@&#8203;dyc3](https://github.com/dyc3)! - Added support for Svelte declaration tags using `let` and `const`. Biome can now parse, format, and lint bindings declared in these tags.

- [#&#8203;11045](biomejs/biome#11045) [`89c27c6`](biomejs/biome@89c27c6) Thanks [@&#8203;ematipico](https://github.com/ematipico)! - Improved the performance of Biome formatter up to \~7% across the board.

- [#&#8203;9806](biomejs/biome#9806) [`781d68d`](biomejs/biome@781d68d) Thanks [@&#8203;dyc3](https://github.com/dyc3)! - Added the nursery rule [`noJsRestrictedProperties`](https://biomejs.dev/linter/rules/no-js-restricted-properties/), which ports ESLint's `no-restricted-properties` rule. Biome now flags restricted member access and object destructuring, and `biome migrate eslint` preserves the rule's options.

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yODQuMCIsInVwZGF0ZWRJblZlciI6IjQzLjI4NC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Reviewed-on: https://git.oirnoir.dev/OIRNOIR/YouTube-Helper-Client/pulls/15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-Parser Area: parser L-JavaScript Language: JavaScript and super languages

Projects

None yet

Development

Successfully merging this pull request may close these issues.

🐛 Biome breaks this code when formatting since v2.4.9

3 participants