|
| 1 | +# 02/20/2025 ESLint TSC Meeting Transcript |
| 2 | + |
| 3 | +**nzakas:** Howdy! |
| 4 | + |
| 5 | +**mdjermanovic:** Hi! |
| 6 | + |
| 7 | +**fasttime:** Hi! |
| 8 | + |
| 9 | +**nzakas:** Looking over last meeting's action items and doesn't look like there were any |
| 10 | + |
| 11 | +**nzakas:** So let's start with statuses. I've been working on the CSS plugin, the `defineConfig()` helper, and various publishing improvements in `eslint/rewrite`. |
| 12 | + |
| 13 | +**nzakas:** Oh, and added JSX support to eslint-scope |
| 14 | + |
| 15 | +**mdjermanovic:** I was mostly reviewing PRs. |
| 16 | + |
| 17 | +**fasttime:** I was also mostly reviewing PRs and worked on the fix for the retry utility |
| 18 | + |
| 19 | +**nzakas:** RFC Duty: |
| 20 | +This week - @fasttime |
| 21 | +Feb 24 - @nzakas |
| 22 | +Mar 3 - @mdjermanovic |
| 23 | + * 👍 @mdjermanovic, @fasttime |
| 24 | + |
| 25 | +**nzakas:** Okay, let's dig right in. |
| 26 | + |
| 27 | +**nzakas:** First item: https://github.com/eslint/eslint/issues/19173 |
| 28 | + |
| 29 | +**nzakas:** > **TSC Summary:** In this issue, we agreed to start making some core rules TypeScript syntax-aware. |
| 30 | +> |
| 31 | +> **TSC Question:** Should we add something into the rule `meta` to reflect this? If so, what should it be? And should we take into account that rules may be aware of other languages and/or types as well? |
| 32 | +
|
| 33 | +**mdjermanovic:** What would be the new field used for? |
| 34 | + |
| 35 | +**nzakas:** I was thinking we could display a TypeScript logo on the rule page to indicate that it's TypeScript-aware |
| 36 | + |
| 37 | +**nzakas:** Kind of like npm does when the package has types |
| 38 | + |
| 39 | +**mdjermanovic:** I'm not sure if it would be very useful, many core rules already just work with TypeScript syntax |
| 40 | + |
| 41 | +**mdjermanovic:** Although they're not checking anything TS-specific |
| 42 | + |
| 43 | +**nzakas:** Right, that's the difference here. |
| 44 | + |
| 45 | +**nzakas:** I think this could also be useful for maintenance purposes, knowing which rules we've specifically updated for TypeScript and which we haven't. |
| 46 | + |
| 47 | +**mdjermanovic:** Yeah, but what are the benefits of knowing that rule checks TS-specific syntax for end users? |
| 48 | + |
| 49 | +**mdjermanovic:** Ah, if it's only for us then it makes sense, though it might be better to put it in meta.docs then. |
| 50 | + |
| 51 | +**nzakas:** I think for end-users, being able to say "you don't have to use a typescript-eslint rule for this" may be beneficial. |
| 52 | + |
| 53 | +**mdjermanovic:** Yeah, but we should then add the same field to all rules that work well with ts code |
| 54 | + |
| 55 | +**nzakas:** Although, the logo on the rule docs might ultimately be more useful for us to be able to quickly verify if the rule should be working with TypeScript-specific syntax. |
| 56 | + |
| 57 | +**nzakas:** I know I frequently look up rule docs when an issue mentions one to check if it's frozen, deprecated, etc. |
| 58 | + |
| 59 | +**nzakas:** I think adding to `meta.docs` is the correct location regardless |
| 60 | + |
| 61 | +**mdjermanovic:** What I'm trying to say is that for users it's more important whether the rule can be used with TS code than whether it specifically checks TS AST |
| 62 | + |
| 63 | +**nzakas:** I agree |
| 64 | + |
| 65 | +**mdjermanovic:** And that's I believe already maintained in typescript-eslint |
| 66 | + |
| 67 | +**nzakas:** "that" being which core rules work with TypeScript and which don't? |
| 68 | + |
| 69 | +**mdjermanovic:** Yes, rules that don't work have replacements |
| 70 | + |
| 71 | +**nzakas:** Right. |
| 72 | + |
| 73 | +**nzakas:** So it sounds like we're generally in favor of adding something into `meta.docs`? |
| 74 | + |
| 75 | +**mdjermanovic:** I'm in favor for maintenance purpose, but I'm not sure if we should display it in the rule docs |
| 76 | + |
| 77 | +**mdjermanovic:** Unless we mark all rules that work well with TS (i.e., those that don't have replacements in typescript-eslint) |
| 78 | + |
| 79 | +**nzakas:** We can take that as a separate decision later. No need to bundle the adding of meta data with displaying it. |
| 80 | + |
| 81 | +**mdjermanovic:** Okay, I agree with adding a new field to `meta.docs` |
| 82 | + |
| 83 | +**fasttime:** Sounds good to add a new internal field to `meta.docs` |
| 84 | + |
| 85 | +**nzakas:** I was thinking maybe we should add two new fields so that it works with all languages. |
| 86 | + |
| 87 | +**nzakas:** Maybe `meta.docs.language = "javascript"` and `meta.docs.dialects = ["javascript", "typescript"]` |
| 88 | + |
| 89 | +**nzakas:** (or some such thing) |
| 90 | + |
| 91 | +**nzakas:** So then the Markdown rules would be `meta.docs.language = "markdown"` and `meta.docs.dialects = ["commonmark", "gfm", "mdx"]`, as an example. |
| 92 | + |
| 93 | +**fasttime:** Could `meta.docs.language` be used to check if someone is using a rule with the wrong parser? |
| 94 | + |
| 95 | +**nzakas:** Potentially, but I think that would require the parser to declare its language as well. |
| 96 | + |
| 97 | +**fasttime:** I mean, if the parser would also provide a `language` field that matches the rule's |
| 98 | + |
| 99 | +**nzakas:** Although i think it would be on the `Language` object rather than the parser |
| 100 | + |
| 101 | +**fasttime:** Yeah, exactly. When I saw the comment on GitHub this was first thought, because sometimes users mix up things in their config when they try to lint multiple languages. |
| 102 | + |
| 103 | +**nzakas:** Yeah, we could potentially then just disable any rules that where `language` doesn't match, but then that should be `meta.language` rather than `meta.docs.language` because it affects functionality. |
| 104 | + |
| 105 | +**mdjermanovic:** Yes, if it would be used to change runtime behavior then it should be directly in `meta` rather than `meta.docs` |
| 106 | + * 👍 @fasttime |
| 107 | + |
| 108 | +**nzakas:** And what about `dialects`? |
| 109 | + |
| 110 | +**nzakas:** because that's really where we get the TypeScript info |
| 111 | + |
| 112 | +**fasttime:** No objections from my side. |
| 113 | + |
| 114 | +**mdjermanovic:** Yeah, both should be at the same level |
| 115 | + |
| 116 | +**nzakas:** Okay, it looks like we've agreed to add `meta.language` and `meta.dialects`, starting with rules that are TypeScript-enabled. We can revisit discussions around how to use that data at a later time. |
| 117 | + * 👍 @mdjermanovic, @fasttime |
| 118 | + |
| 119 | +**nzakas:** Next item: |
| 120 | + |
| 121 | +**nzakas:** > Agenda item: While CSSTree is an excellent parser, it appears to be maintained by just one person and the turnaround time on fixes is very long. Should we fork CSSTree and use that for `@eslint/css` by default? The intention is to continue to push on CSSTree to implement the changes we need by submitting PRs back upstream. Ideally, most of these changes would be transparent to rules and when they're not, hopefully we can get some feedback on proposed API changes. |
| 122 | + |
| 123 | +**fasttime:** Sounds good to me. |
| 124 | + |
| 125 | +**mdjermanovic:** Sounds good to me too |
| 126 | + |
| 127 | +**nzakas:** Okay, we've decided to create a fork of CSSTree (`@eslint/css-tree`). I'll work on getting that set up some time in the next week. |
| 128 | + * 👍 @mdjermanovic |
| 129 | + |
| 130 | +**fasttime:** Thanks! |
| 131 | + |
| 132 | +**nzakas:** That's all the agenda items. Is there anything else anyone would like to discuss? |
| 133 | + |
| 134 | +**mdjermanovic:** Nothing in particular from my side |
| 135 | + |
| 136 | +**fasttime:** Nothing from me, too. |
| 137 | + |
| 138 | +**nzakas:** Okay, then let's talk about the release |
| 139 | + |
| 140 | +**fasttime:** I can do it. |
| 141 | + |
| 142 | +**nzakas:** Thanks! |
| 143 | + |
| 144 | +**mdjermanovic:** Thanks! |
| 145 | + |
| 146 | +**nzakas:** There are a couple of types-related changes I'd like to get in, if possible |
| 147 | + |
| 148 | +**nzakas:** https://github.com/eslint/rewrite/pull/155 |
| 149 | +https://github.com/eslint/eslintrc/pull/179 |
| 150 | + |
| 151 | +**nzakas:** I'll be working on those after this meeting |
| 152 | + |
| 153 | +**fasttime:** Thanks, I left some comments on both. |
| 154 | + * 👍 @nzakas |
| 155 | + |
| 156 | +**nzakas:** If we can publish a new `@eslint/core`, then I'll also update `@eslint/json` before releasing the next version |
| 157 | + |
| 158 | +**fasttime:** Then maybe we could release `@eslint/core` earlier? |
| 159 | + |
| 160 | +**nzakas:** Yes. I think once that PR is merged we can just release it. Then it'll be ready for the other releases |
| 161 | + |
| 162 | +**fasttime:** Fine 👍 |
| 163 | + |
| 164 | +**nzakas:** Is this one close? https://github.com/eslint/eslint/pull/19238 |
| 165 | + |
| 166 | +**mdjermanovic:** Very close, I'll check tomorrow |
| 167 | + * 👍 @nzakas, @fasttime |
| 168 | + |
| 169 | +**mdjermanovic:** If it isn't ready for tomorrow's release, we should merge it as soon as possible after we close the release due to the number of files and possible merge conflicts |
| 170 | + * 👍 @fasttime |
| 171 | + |
| 172 | +**nzakas:** Agreed |
| 173 | + |
| 174 | +**nzakas:** Okay, I think that's all we have for today. Thanks everyone! (And thanks @sam3k_ for the notes) |
| 175 | + |
| 176 | +**mdjermanovic:** Thanks! 👋 |
| 177 | + |
| 178 | +**fasttime:** Thanks! Take care 👋 |
0 commit comments