Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Move from a compile-all to a compile-entry-point pattern #463

Conversation

ericmorand-sonarsource
Copy link
Contributor

@ericmorand-sonarsource ericmorand-sonarsource commented Apr 26, 2024

Fixes ESLINTJS-43

@@ -23,7 +23,7 @@
"LICENSE"
],
"scripts": {
"build": "rimraf lib && tsc -d -p tsconfig.json",
"build": "rimraf lib && tsc -d -p src",
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Since I added a tsconfig.json file under src, I target the src project here. Later on, would we want to build the test suite, we can add a tsconfig.json under tests and target the tests project to build the test suite. This way, entry point can be different between the main and the tests projects.


const plugin = {
configs: {},
rules: {},
};

const recommendedLegacyConfig: TSESLint.Linter.Config = { plugins: ['sonarjs'], rules: {} };
const recommendedLegacyConfig: TSESLint.Linter.ConfigType = { plugins: ['sonarjs'], rules: {} };
Copy link
Contributor Author

Choose a reason for hiding this comment

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

TSESLint.Linter.Configbeing deprecated, I replaced it with the legit type.

@@ -45,7 +45,7 @@ it('should document all rules', () => {
existingRules.forEach(rule => {
expect(README.includes(rule)).toBe(true);
expect(fs.existsSync(`${root}/docs/rules/${rule}.md`)).toBe(true);
expect(rules[rule].meta.docs.url).toBe(
expect(rules[rule].meta.docs!.url).toBe(
Copy link
Contributor Author

Choose a reason for hiding this comment

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

Now that the exported rules is typed, I had to honor the fact that docs can be undefined.

@@ -12,6 +12,5 @@
"outDir": "lib",
"sourceMap": true,
"moduleResolution": "nodenext"
},
Copy link
Contributor Author

Choose a reason for hiding this comment

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

There is no need to declare the included files since we now rely on an entry point declared on each project (aka tsconfig.json).

@ericmorand-sonarsource ericmorand-sonarsource force-pushed the compilation-entry-point branch 4 times, most recently from ab7bc61 to 1b8f2da Compare April 26, 2024 10:49
});
for (const key in rules) {
const rule = rules[key];
const recommended = rule.meta.docs?.recommended;
Copy link
Contributor Author

Choose a reason for hiding this comment

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

I think that, in this case, not destructuring is more readable than destructuring. Feel free to request a change if you think the destructured syntax of the original code is clearer:

const {
    meta: {
      docs: { recommended },
    },
  } = rule;

Copy link

sonarcloud bot commented Apr 26, 2024

Copy link
Contributor

@zglicz zglicz left a comment

Choose a reason for hiding this comment

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

Oh, this is much, much cleaner. Thanks for this!

successkid

@ericmorand-sonarsource ericmorand-sonarsource merged commit a4390e9 into SonarSource:master Apr 29, 2024
1 of 5 checks passed
@ericmorand-sonarsource ericmorand-sonarsource deleted the compilation-entry-point branch April 29, 2024 10:37
@zglicz zglicz added this to the 1.0.0 milestone May 3, 2024
renovate bot added a commit to ScaleLeap/amazon-marketplaces that referenced this pull request May 8, 2024
[![Mend
Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
|
[eslint-plugin-sonarjs](https://togithub.com/SonarSource/eslint-plugin-sonarjs)
| [`0.25.1` ->
`1.0.3`](https://renovatebot.com/diffs/npm/eslint-plugin-sonarjs/0.25.1/1.0.3)
|
[![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-plugin-sonarjs/1.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/eslint-plugin-sonarjs/1.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/eslint-plugin-sonarjs/0.25.1/1.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|
[![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-plugin-sonarjs/0.25.1/1.0.3?slim=true)](https://docs.renovatebot.com/merge-confidence/)
|

---

### Release Notes

<details>
<summary>SonarSource/eslint-plugin-sonarjs
(eslint-plugin-sonarjs)</summary>

###
[`v1.0.3`](https://togithub.com/SonarSource/eslint-plugin-sonarjs/compare/v1.0.2...004d7944672f249000e1eb1c97acd13e31e455eb)

[Compare
Source](https://togithub.com/SonarSource/eslint-plugin-sonarjs/compare/v1.0.2...1.0.3)

###
[`v1.0.2`](https://togithub.com/SonarSource/eslint-plugin-sonarjs/releases/tag/v1.0.2)

[Compare
Source](https://togithub.com/SonarSource/eslint-plugin-sonarjs/compare/1.0.0...v1.0.2)

#### What's Changed

- Export "meta" for plugin by
[@&#8203;zglicz](https://togithub.com/zglicz) in
[SonarSource/eslint-plugin-sonarjs#472

###
[`v1.0.0`](https://togithub.com/SonarSource/eslint-plugin-sonarjs/releases/tag/1.0.0)

[Compare
Source](https://togithub.com/SonarSource/eslint-plugin-sonarjs/compare/0.25.1...1.0.0)

Eslint-plugin-sonarjs is compatible with ESLint v9.

##### What's Changed

- Migrate to all newest packages, except for eslint v9 by
[@&#8203;zglicz](https://togithub.com/zglicz) in
[SonarSource/eslint-plugin-sonarjs#460
- Move from a compile-all to a compile-entry-point pattern by
[@&#8203;ericmorand-sonarsource](https://togithub.com/ericmorand-sonarsource)
in
[SonarSource/eslint-plugin-sonarjs#463
- ESLINTJS-36 Split out tests and analyze into separate steps by
[@&#8203;zglicz](https://togithub.com/zglicz) in
[SonarSource/eslint-plugin-sonarjs#465
- Fix breaking no-one-iteration-loop after ESLint v9 breaking change by
[@&#8203;zglicz](https://togithub.com/zglicz) in
[SonarSource/eslint-plugin-sonarjs#467
- Resolve ESLINTJS-37 by
[@&#8203;ericmorand-sonarsource](https://togithub.com/ericmorand-sonarsource)
in
[SonarSource/eslint-plugin-sonarjs#466
- Add ruling tests to handle eslint 8 and 9 by
[@&#8203;zglicz](https://togithub.com/zglicz) in
[SonarSource/eslint-plugin-sonarjs#468
- Make the exported rules a typed record by
[@&#8203;ericmorand-sonarsource](https://togithub.com/ericmorand-sonarsource)
in
[SonarSource/eslint-plugin-sonarjs#469

**Full Changelog**:
SonarSource/eslint-plugin-sonarjs@0.25.1...1.0.0

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "every weekday" in timezone Etc/UTC,
Automerge - At any time (no schedule defined).

🚦 **Automerge**: Enabled.

♻ **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://www.mend.io/free-developer-tools/renovate/). View
repository job log
[here](https://developer.mend.io/github/ScaleLeap/amazon-marketplaces).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zNDAuMTAiLCJ1cGRhdGVkSW5WZXIiOiIzNy4zNDAuMTAiLCJ0YXJnZXRCcmFuY2giOiJtYXN0ZXIiLCJsYWJlbHMiOlsicmVub3ZhdGVib3QiXX0=-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants