|
| 1 | +# 06/12/2025 ESLint TSC Meeting Transcript |
| 2 | + |
| 3 | +**mdjermanovic:** Hi! |
| 4 | + |
| 5 | +**nzakas:** Howdy! |
| 6 | + |
| 7 | +**fasttime:** Hi! |
| 8 | + |
| 9 | +**nzakas:** Pulling up the notes from last meeting |
| 10 | + |
| 11 | +**nzakas:** Okay, doesn't look like we had any action items to follow up on |
| 12 | + |
| 13 | +**nzakas:** Let's start with statuses. I've continued working on fixing CSSTree types, added support for math functions to CSSTree, and added support for nested element selector rules in CSSTree. |
| 14 | + |
| 15 | +**mdjermanovic:** I've been working mostly on `@eslint/config-array`: I fixed two bugs, and still working on the `basePath` feature. It should be ready for review early next week. |
| 16 | + * 👍 @nzakas, @fasttime |
| 17 | + |
| 18 | +**fasttime:** I've been reviewing issues and PRs and I continued working on the multithread linting prototype. |
| 19 | + |
| 20 | +**nzakas:** RFC Duty schedule: |
| 21 | +This week - @nzakas |
| 22 | +June 16 - @mdjermanovic |
| 23 | +June 23 - @fasttime |
| 24 | + * 👍 @mdjermanovic, @fasttime |
| 25 | + |
| 26 | +**nzakas:** And let's just check availability. I'll be around 2.5-3 hours eacy weekday. |
| 27 | + |
| 28 | +**mdjermanovic:** I expect to be available around 2 hours each day |
| 29 | + |
| 30 | +**fasttime:** I'm not sure yet, but I should be available at least 7-9 hours per week. |
| 31 | + |
| 32 | +**nzakas:** Okay, I flagged one issue for today: |
| 33 | +https://github.com/eslint/eslint/issues/19834 |
| 34 | + |
| 35 | +**nzakas:** > **TSC Summary:** The issue is requesting an enhancement to the no-duplicate-imports rule to better support TypeScript syntax. The current rule flags an error when TypeScript type imports are used alongside regular imports from the same module. Currently, the rule reports an error when a file includes both a value import and a type import from the same module. |
| 36 | +> |
| 37 | +> **TSC Question:** Do we want to add the proposed option `allowSeparateTypeImports` that would allow separate import statements for types from the same module without triggering the "duplicate imports" rule error? |
| 38 | +
|
| 39 | +**mdjermanovic:** Generally makes sense to me. Just not sure how to treat imports such as `import { type foo } from "bar";` (type-only?) and mixed ones like `import { type foo, bar } from "baz";` |
| 40 | + |
| 41 | +**mdjermanovic:** If there's a mixed one, then probably any other should be considered duplicate. |
| 42 | + |
| 43 | +**fasttime:** Yeah, today TypeScript allows mixed imports of types and values, but in older versions (4.5 I think) this was not possible, so that option was necessary. |
| 44 | + |
| 45 | +**nzakas:** I think we are looking to distinguish between `import` and `import type`, specifically. If people are using `import { type foo }`, then I don't think the new option would cover that. |
| 46 | + |
| 47 | +**mdjermanovic:** Okay, we could say that we are in favor of adding this option, and discuss these details on the issue before the implementation? |
| 48 | + |
| 49 | +**fasttime:** Fine to me 👍 |
| 50 | + |
| 51 | +**nzakas:** For clarity: which details are you referring to? |
| 52 | + |
| 53 | +**mdjermanovic:** Details about how mixed imports of types and values should be treated. |
| 54 | + |
| 55 | +**mdjermanovic:** And imports that don't use `import type` syntax but `import { type ..., type... }` |
| 56 | + |
| 57 | +**nzakas:** I think maybe our wires are a bit crossed. The proposal for `allowSeparateTypeImports` is just to allow `import` and `import type` for the same module. It doesn't affect anything else, nor do I think it should. |
| 58 | + |
| 59 | +**mdjermanovic:** Maybe it will indeed be that simple, I'd just like to clarify what happens with mentioned examples. |
| 60 | + |
| 61 | +**nzakas:** In the example you gave, it's the same behavior as there is today regardless of the new option's setting. |
| 62 | + |
| 63 | +**nzakas:** Becaus they're both `import`, they're considered a duplicate and a violation is reported |
| 64 | + |
| 65 | +**mdjermanovic:** So that it's clear why are, for example, `import { foo } from "mod"` and `import { type bar } from "mod"` reported as duplicates, whereas `import { foo } from "mod"` and `import type { bar } from "mod"` are not. |
| 66 | + |
| 67 | +**nzakas:** It's a preference to use `import type {bar}` instead of `import { type bar }`. If people enable the option, they're saying they do not want the latter. |
| 68 | + |
| 69 | +**mdjermanovic:** Okay, then makes sense to treat only `import type` as type import. |
| 70 | + * 👍 @nzakas |
| 71 | + |
| 72 | +**nzakas:** We've resolved to accept the proposal for the `allowSeparateTypeImports` option to allow `import type` alongside `import` from the same module. |
| 73 | + * 👍 @mdjermanovic, @fasttime |
| 74 | + |
| 75 | +**nzakas:** That's the only issue I have flagged. Any other issues or PRs that need discussion? |
| 76 | + |
| 77 | +**fasttime:** Nothing from my side. |
| 78 | + |
| 79 | +**mdjermanovic:** Maybe we could discuss questions raised here now: https://github.com/eslint/eslint/pull/19843#discussion_r2142999877 |
| 80 | + |
| 81 | +**mdjermanovic:** Now it looks to me like a breaking-ish change because `RuleEntry` will no longer make all `Options` optional in rule config entries |
| 82 | + |
| 83 | +**nzakas:** Hmm, yeah, that's a problem. |
| 84 | + |
| 85 | +**fasttime:** I didn't even know that rules can have mandatory options. |
| 86 | + |
| 87 | +**mdjermanovic:** In theory, a rule can always require specifying some options, although I'm not sure if such rules exist (in the core certainly not) |
| 88 | + |
| 89 | +**nzakas:** This is the new definition for `RuleConfig`: |
| 90 | +https://github.com/eslint/rewrite/blob/37e3e14499c1d42c0c420dfbabac3a10a9a82925/packages/core/src/types.ts#L680-L682 |
| 91 | + |
| 92 | +**nzakas:** Which doesn't match `RuleEntry` |
| 93 | + |
| 94 | +**nzakas:** I think the larger question is if all rules options should be optional or not? |
| 95 | + |
| 96 | +**mdjermanovic:** Yeah, that allows for configs such as `["error"]`, but not for configs such as `["error", "always"]` if the rule has > 1 options elements |
| 97 | + |
| 98 | +**mdjermanovic:** That would probably makes the most sense, but we're not enforcing it currently. |
| 99 | + |
| 100 | +**nzakas:** For clarity: it would make sense that all rules options are optional? |
| 101 | + |
| 102 | +**mdjermanovic:** I think yes. But we don't know if that's the case with all plugin/custom rules that exist. |
| 103 | + |
| 104 | +**nzakas:** Based on the current `RuleEntry` type, I don't think there's a way to make any rule options required? |
| 105 | + |
| 106 | +**mdjermanovic:** I think it isn't by using that type, but that's beyond my knowlege of TypeScript |
| 107 | + |
| 108 | +**fasttime:** Yes, currently all rule options would be typed as optional. |
| 109 | + |
| 110 | +**nzakas:** I suppose in theory, `defaultOptions` means no rule options need to be required. |
| 111 | + |
| 112 | +**mdjermanovic:** But I believe (would need to doublecheck) it is possible to enforce mandatory options in rule schemas, by specifying a full JSON schema with minItems > 0 |
| 113 | + |
| 114 | +**nzakas:** 🤔 |
| 115 | + |
| 116 | +**fasttime:** Maybe we could check that? |
| 117 | + |
| 118 | +**nzakas:** Does someone want to take the action item to investigate and report back? |
| 119 | + |
| 120 | +**mdjermanovic:** I can check that |
| 121 | + * 👍 @fasttime |
| 122 | + |
| 123 | +**mdjermanovic:** And report on this thread: https://github.com/eslint/eslint/pull/19843#discussion_r2142999877 |
| 124 | + * 👍 @nzakas |
| 125 | + |
| 126 | +**nzakas:** I'll set both PRs to be a draft until we can resolve this. |
| 127 | + * 👍 @mdjermanovic |
| 128 | + |
| 129 | +**fasttime:** Sounds good. |
| 130 | + |
| 131 | +**nzakas:** Okay, anything else? |
| 132 | + |
| 133 | +**mdjermanovic:** Nothing else from my side for today |
| 134 | + |
| 135 | +**fasttime:** I also have nothing. |
| 136 | + |
| 137 | +**nzakas:** Okay, let's do contributor pool for May |
| 138 | + |
| 139 | +**nzakas:** https://github.com/issues?q=org%3Aeslint%20label%3A%22contributor%20pool%22%20merged%3A2025-05-01..2025-05-31 |
| 140 | + |
| 141 | +**nzakas:** There's A LOT |
| 142 | + * 🎉 @mdjermanovic |
| 143 | + |
| 144 | +**nzakas:** I'm going to quickly drop this into AI to summarize since the GitHub search won't let me narrow down by authors (I reported this as a bug to GitHub) |
| 145 | + |
| 146 | +**nzakas:** Damn, apparently this page is dynamically rendered so AI can't scrape them. ☹️ : |
| 147 | + |
| 148 | +**fasttime:** Yes, you must be logged in to see it. |
| 149 | + |
| 150 | +**nzakas:** Going to try copy-pasting |
| 151 | + |
| 152 | +**nzakas:** Sethamus: 7 PRs |
| 153 | + |
| 154 | +**nzakas:** thecalamity: 5 PRs |
| 155 | + |
| 156 | +**nzakas:** Pixel998: 4 PRs |
| 157 | + |
| 158 | +**nzakas:** SwetaTanwar: 2 PRs |
| 159 | + |
| 160 | +**nzakas:** Everyone else has one. |
| 161 | + |
| 162 | +**nzakas:** (I'll make a script to do this from now on) |
| 163 | + |
| 164 | +**nzakas:** I'll let you guys suggest amounts for a change of pace. 🙂 |
| 165 | + |
| 166 | +**mdjermanovic:** I think Pixel998 had 4 PRs (there's also page 2) |
| 167 | + |
| 168 | +**nzakas:** Oops yes. Missed that |
| 169 | + |
| 170 | +**mdjermanovic:** Those 4PRs are 3 new rules in `@eslint/markdown` and a lot of work on blog post updated date |
| 171 | + |
| 172 | +**mdjermanovic:** Maybe $800 ($200 each) ? |
| 173 | + * 👍 @nzakas, @fasttime |
| 174 | + |
| 175 | +**mdjermanovic:** I'm not sure what happend, but there's only one page now |
| 176 | + |
| 177 | +**nzakas:** I removed a couple PRs that were from lumirlumir |
| 178 | + * 👍 @mdjermanovic, @fasttime |
| 179 | + |
| 180 | +**mdjermanovic:** sethamus I think 6 PRs are $100 each. Not sure about this one: https://github.com/eslint/eslint/pull/19697 |
| 181 | + |
| 182 | +**fasttime:** Other sethamus' PRs are 2-5 files changed. This one has 7. |
| 183 | + |
| 184 | +**nzakas:** This one also took a while and a lot of feedback was incorporated. |
| 185 | + |
| 186 | +**fasttime:** Maybe $1000 for everything? |
| 187 | + * 👍 @nzakas, @mdjermanovic |
| 188 | + |
| 189 | +**mdjermanovic:** thecalamity I think 5 x $100 for 5 PRs, and $200 for a new rule, total $600 |
| 190 | + |
| 191 | +**fasttime:** thecalamity has one new rule, the other PRs are smaller. |
| 192 | + |
| 193 | +**mdjermanovic:** Sorry, they have 6 PRs in total, so that would be $700 |
| 194 | + |
| 195 | +**mdjermanovic:** So, $700 for thecalamiity ? |
| 196 | + * 👍 @nzakas, @fasttime |
| 197 | + |
| 198 | +**mdjermanovic:** SwetaTanwar I think $200 for the report issue button, and $100 for the other PR, so $300 in total? |
| 199 | + * 👍 @nzakas, @fasttime |
| 200 | + |
| 201 | +**mdjermanovic:** xbinaryx $100 for the bot update |
| 202 | + * 👍 @nzakas, @fasttime |
| 203 | + |
| 204 | +**mdjermanovic:** azat-io $100 for a bug fix |
| 205 | + |
| 206 | +**fasttime:** For jtbandes also at least $200 for the new rule? |
| 207 | + * 👍 @nzakas, @mdjermanovic |
| 208 | + |
| 209 | +**mdjermanovic:** Yes, I made a mistake. |
| 210 | + |
| 211 | +**fasttime:** So $100 for azat-io and $200 for jtbandes? |
| 212 | + * 👍 @nzakas, @mdjermanovic |
| 213 | + |
| 214 | +**mdjermanovic:** jokeyrhyme $100 for a bug fix. |
| 215 | + * 👍 @nzakas, @fasttime |
| 216 | + |
| 217 | +**mdjermanovic:** yeonjuan I'm not sure: https://github.com/eslint/code-explorer/pull/99 |
| 218 | + |
| 219 | +**fasttime:** Maybe $200? It took only two days but it's a big PR. |
| 220 | + * 👍 @nzakas, @mdjermanovic |
| 221 | + |
| 222 | +**mdjermanovic:** I think that's all? |
| 223 | + |
| 224 | +**nzakas:** Looks like it. |
| 225 | + |
| 226 | +**fasttime:** Yes. |
| 227 | + |
| 228 | +**nzakas:** If we're going to get this many contributors, we really need some automation around this process. 😄 Good problem to have. |
| 229 | + |
| 230 | +**nzakas:** I'll take the action to let them know. |
| 231 | + * 👍 @sam3k_, @mdjermanovic, @fasttime |
| 232 | + |
| 233 | +**mdjermanovic:** If it would be at least possible to sort by authors, but it doesn't seem that option is supported |
| 234 | + |
| 235 | +**nzakas:** Yeah, I think I'll just write a script to do it. Easy enough to call the GitHub API. |
| 236 | + |
| 237 | +**nzakas:** Let's talk about the release. |
| 238 | + |
| 239 | +**mdjermanovic:** I can tomorrow |
| 240 | + * 👍 @nzakas |
| 241 | + |
| 242 | +**fasttime:** Thanks! |
| 243 | + |
| 244 | +**mdjermanovic:** @fasttime if you have time, there are two PRs needing a second review |
| 245 | + |
| 246 | +**mdjermanovic:** https://github.com/eslint/eslint/pull/19845 |
| 247 | + |
| 248 | +**mdjermanovic:** https://github.com/eslint/eslint/pull/19832 |
| 249 | + |
| 250 | +**fasttime:** Yes, I will take a look tomorrow morning. |
| 251 | + |
| 252 | +**mdjermanovic:** Thanks! |
| 253 | + |
| 254 | +**mdjermanovic:** That would be just `@eslint/js` and `eslint` I think. |
| 255 | + * 👍 @nzakas, @fasttime |
| 256 | + |
| 257 | +**mdjermanovic:** I don't see any other PRs that are near to ready to merge |
| 258 | + |
| 259 | +**nzakas:** Nope. Lots of drafts. |
| 260 | + |
| 261 | +**mdjermanovic:** Okay, I think that's all regarding the tomorrow's release |
| 262 | + |
| 263 | +**fasttime:** I don't have anything else to discuss. |
| 264 | + |
| 265 | +**nzakas:** Okay, then I think that's it for today. |
| 266 | + |
| 267 | +**nzakas:** Thanks everyone (and thanks @sam3k) for the notes |
| 268 | + |
| 269 | +**mdjermanovic:** Thanks! 👋 |
| 270 | + |
| 271 | +**fasttime:** Thanks! Take care 👋 |
0 commit comments