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

Migrate to flat config #86

Merged
merged 5 commits into from
Aug 3, 2024
Merged

Migrate to flat config #86

merged 5 commits into from
Aug 3, 2024

Conversation

fisker
Copy link
Contributor

@fisker fisker commented Jun 6, 2024

No description provided.

@fisker
Copy link
Contributor Author

fisker commented Jun 6, 2024

eslint-config-xo-typescript may need expose an array instead of an object https://github.com/xojs/eslint-config-xo-typescript/blob/3271346cfa8cdc2d44bee64718399eea9f603ea3/index.js#L737

Should we expose an array here too?

So user can

export {default} from 'eslint-config-xo';

and

import eslintConfigXo from 'eslint-config-xo';

export default [
-	eslintConfigXo,
+	...eslintConfigXo,
];

@fregante
Copy link
Member

fregante commented Jun 6, 2024

eslint-config-xo-typescript

Do you need separate packages anymore? My understanding is that configurations are now configurable, so you can just expose a function and pass typescript:true, spaces:4, etc if needed. See https://github.com/antfu/eslint-config?tab=readme-ov-file#customization

Perhaps you can work on a baseline eslint-config-xo first and the progressively integrate the rest after a successful launch.

@fisker
Copy link
Contributor Author

fisker commented Jun 6, 2024

But eslint-config-xo-typescript need extra packages installed/imported, it's not good if user only uses js syntax.

@fisker
Copy link
Contributor Author

fisker commented Jun 6, 2024

Should we expose an array here too?

Looks like shared config can be an object, maybe arrays will be flattened too, if it's true, we don't need care, I'll test.

@fregante
Copy link
Member

fregante commented Jun 6, 2024

But eslint-config-xo-typescript need extra packages installed/imported, it's not good if user only uses js syntax.

That hasn't been a limiting factor for XO itself, which includes TypeScript and Prettier whether you use them or not.

In an ideal world, eslint-config-xo contains all the logic XO needs, and XO becomes a wrapper around eslint and eslint-config-xo without a lot of glue. This way users can choose xo-cli or eslint + eslint-config-xo without losing much.

@fisker
Copy link
Contributor Author

fisker commented Jun 6, 2024

Waiting for answers eslint/eslint#18563

@fisker fisker marked this pull request as draft June 6, 2024 06:19
@sindresorhus
Copy link
Member

I don't want to merge the TS one into this one yet.

The "space" config should be merged into this one though. It was only a separate package because of ESLint limitations.

@fisker
Copy link
Contributor Author

fisker commented Jun 6, 2024

Let's export an array? Check discussion in eslint/eslint#18563

@sindresorhus
Copy link
Member

👍

@fisker fisker marked this pull request as ready for review June 6, 2024 12:32
Copy link

@voxpelli voxpelli left a comment

Choose a reason for hiding this comment

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

I would go with generating the config through a function instead of through static objects (see review comment) as one can now be sure that the config will be used from a javascript file and hence it can be better to expose a typed factory function rather than relying on setting up files for all the possible combinations of options.

I would also consider eventually upstreaming eslint-config-xo into xo and let it be run through either xo or be extended and run through eslint.

The eslint-config- prefix is no longer needed to signify that an ESLint config can be returned.

Comment on lines +19 to +36
Add some ESLint config to your `eslint.config.js`:

```js
import eslintConfigXo from 'eslint-config-xo';

export default [
...eslintConfigXo,
];
```

This package also exposes [`eslint-config-xo/browser`](browser.js) if you're in the browser:

```js
import eslintConfigXoBrowser from 'eslint-config-xo/browser';

export default [
...eslintConfigXoBrowser,
];
Copy link

Choose a reason for hiding this comment

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

I opted for a neostandard({ semi: true }) style to construct the config in neostandard. Have you considered doing that instead of /browser? Having something like export default xo({ browser: true })?

That way you can have space, browser etc exposed without having to have files for the combinations as well, like space/browser

Comment on lines +5 to +10
export default [
{
...config,
rules: {
...config.rules,
indent: [
Copy link

Choose a reason for hiding this comment

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

What's the benefit of this over having the space config be its own config? The latter is what I opted for in neostandard

Suggested change
export default [
{
...config,
rules: {
...config.rules,
indent: [
export default [
config,
{
rules: {
indent: [

I would do something like:

import base from './configs/base.js';
import browser from './configs/browser.js';
import space from './configs/space.js';

export default [
  base,
  browser,
  space,
];

Choose a reason for hiding this comment

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

A benefit of having them as separate (+ including names for each one of them) is that its very clear which config that leads to which config. See example here from the config inspector generated for neostandard: https://neostandard.github.io/neostandard/configs

@fregante
Copy link
Member

I would also consider eventually upstreaming eslint-config-xo into xo and let it be run through either xo or be extended and run through eslint.

xo includes cli modules (as well as the whole of Prettier), which eslint wouldn't use. Since there won't be a xo-cli package I think it can stay as eslint-config-xo

@sindresorhus sindresorhus merged commit ec210f2 into xojs:main Aug 3, 2024
3 checks passed
@fisker fisker deleted the flat-config branch August 4, 2024 09:00
@fisker
Copy link
Contributor Author

fisker commented Aug 4, 2024

Sorry that I didn't get time to check feedbacks.

@Primajin
Copy link
Contributor

Hey, do you think it makes sense to add a legacy support like they did over here in vitest: https://github.com/vitest-dev/eslint-plugin-vitest/pull/434/files

image

@voxpelli
Copy link

@Primajin Open a new issue for that discussion. Personally I would say: No, it does not make sense :)

renovate bot added a commit to mmkal/eslint-plugin-mmkal that referenced this pull request Aug 20, 2024
##### [v0.46.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.46.0)

##### New rules

-   [`@stylistic/indent-binary-ops`](https://eslint.style/rules/plus/indent-binary-ops)  [`d91defd`](xojs/eslint-config-xo@d91defd)
-   [`@stylistic/function-paren-newline`](https://eslint.style/rules/js/function-paren-newline)  [`fb5e204`](xojs/eslint-config-xo@fb5e204)
-   [`@stylistic/block-spacing`](https://eslint.style/rules/js/block-spacing)  [`cb6b443`](xojs/eslint-config-xo@cb6b443)
-   [`@stylistic/multiline-ternary`](https://eslint.style/rules/js/multiline-ternary)  [`3dea281`](xojs/eslint-config-xo@3dea281)

##### Breaking

-   Require Node.js 18.18
-   Migrate to flat config and require ESLint 9 ([#86](xojs/eslint-config-xo#86))  [`ec210f2`](xojs/eslint-config-xo@ec210f2)
    -   Migrate config: https://eslint.org/docs/latest/use/configure/migration-guide

##### Improvements

-   Migrate deprecated rules to [`@stylistic`](https://eslint.style)  [`0f81063`](xojs/eslint-config-xo@0f81063)
-   Enable permissive `max-len` and `max-lines` as warning ([#84](xojs/eslint-config-xo#84))  [`e669d26`](xojs/eslint-config-xo@e669d26)
-   Revert "Add option to `no-extra-boolean-cast`" ([#87](xojs/eslint-config-xo#87))  [`f010b63`](xojs/eslint-config-xo@f010b63)
-   Add option to `no-extra-boolean-cast`  [`a6dc171`](xojs/eslint-config-xo@a6dc171)
##### [v0.45.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.45.0)

-   Allow class fields with no blank lines between ([#85](xojs/eslint-config-xo#85))  [`6f2ff13`](xojs/eslint-config-xo@6f2ff13)
##### [v0.44.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.44.0)

##### Breaking

-   Require Node.js 18  [`f2060de`](xojs/eslint-config-xo@f2060de)

##### New rules

-   [`logical-assignment-operators`](https://eslint.org/docs/latest/rules/logical-assignment-operators)  [`27049c1`](xojs/eslint-config-xo@27049c1)
-   [`prefer-object-has-own`](https://eslint.org/docs/latest/rules/prefer-object-has-own)  [`288a3ca`](xojs/eslint-config-xo@288a3ca)
-   [`object-curly-newline`](https://eslint.org/docs/latest/rules/object-curly-newline) ([#83](xojs/eslint-config-xo#83))  [`3a5448b`](xojs/eslint-config-xo@3a5448b)

##### Improvements

-   Ban `atob` and `btoa`  [`dfa969c`](xojs/eslint-config-xo@dfa969c)
-   Replace deprecated `no-new-object` rule  [`7f8f92e`](xojs/eslint-config-xo@7f8f92e)
-   `no-unused-vars`: Allow ignoring variables by prefixing with underscore  [`b31ab8a`](xojs/eslint-config-xo@b31ab8a)
renovate bot added a commit to mmkal/eslint-plugin-mmkal that referenced this pull request Aug 20, 2024
##### [v0.46.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.46.0)

##### New rules

-   [`@stylistic/indent-binary-ops`](https://eslint.style/rules/plus/indent-binary-ops)  [`d91defd`](xojs/eslint-config-xo@d91defd)
-   [`@stylistic/function-paren-newline`](https://eslint.style/rules/js/function-paren-newline)  [`fb5e204`](xojs/eslint-config-xo@fb5e204)
-   [`@stylistic/block-spacing`](https://eslint.style/rules/js/block-spacing)  [`cb6b443`](xojs/eslint-config-xo@cb6b443)
-   [`@stylistic/multiline-ternary`](https://eslint.style/rules/js/multiline-ternary)  [`3dea281`](xojs/eslint-config-xo@3dea281)

##### Breaking

-   Require Node.js 18.18
-   Migrate to flat config and require ESLint 9 ([#86](xojs/eslint-config-xo#86))  [`ec210f2`](xojs/eslint-config-xo@ec210f2)
    -   Migrate config: https://eslint.org/docs/latest/use/configure/migration-guide

##### Improvements

-   Migrate deprecated rules to [`@stylistic`](https://eslint.style)  [`0f81063`](xojs/eslint-config-xo@0f81063)
-   Enable permissive `max-len` and `max-lines` as warning ([#84](xojs/eslint-config-xo#84))  [`e669d26`](xojs/eslint-config-xo@e669d26)
-   Revert "Add option to `no-extra-boolean-cast`" ([#87](xojs/eslint-config-xo#87))  [`f010b63`](xojs/eslint-config-xo@f010b63)
-   Add option to `no-extra-boolean-cast`  [`a6dc171`](xojs/eslint-config-xo@a6dc171)
##### [v0.45.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.45.0)

-   Allow class fields with no blank lines between ([#85](xojs/eslint-config-xo#85))  [`6f2ff13`](xojs/eslint-config-xo@6f2ff13)
##### [v0.44.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.44.0)

##### Breaking

-   Require Node.js 18  [`f2060de`](xojs/eslint-config-xo@f2060de)

##### New rules

-   [`logical-assignment-operators`](https://eslint.org/docs/latest/rules/logical-assignment-operators)  [`27049c1`](xojs/eslint-config-xo@27049c1)
-   [`prefer-object-has-own`](https://eslint.org/docs/latest/rules/prefer-object-has-own)  [`288a3ca`](xojs/eslint-config-xo@288a3ca)
-   [`object-curly-newline`](https://eslint.org/docs/latest/rules/object-curly-newline) ([#83](xojs/eslint-config-xo#83))  [`3a5448b`](xojs/eslint-config-xo@3a5448b)

##### Improvements

-   Ban `atob` and `btoa`  [`dfa969c`](xojs/eslint-config-xo@dfa969c)
-   Replace deprecated `no-new-object` rule  [`7f8f92e`](xojs/eslint-config-xo@7f8f92e)
-   `no-unused-vars`: Allow ignoring variables by prefixing with underscore  [`b31ab8a`](xojs/eslint-config-xo@b31ab8a)
renovate bot added a commit to mmkal/eslint-plugin-mmkal that referenced this pull request Aug 20, 2024
##### [v0.46.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.46.0)

##### New rules

-   [`@stylistic/indent-binary-ops`](https://eslint.style/rules/plus/indent-binary-ops)  [`d91defd`](xojs/eslint-config-xo@d91defd)
-   [`@stylistic/function-paren-newline`](https://eslint.style/rules/js/function-paren-newline)  [`fb5e204`](xojs/eslint-config-xo@fb5e204)
-   [`@stylistic/block-spacing`](https://eslint.style/rules/js/block-spacing)  [`cb6b443`](xojs/eslint-config-xo@cb6b443)
-   [`@stylistic/multiline-ternary`](https://eslint.style/rules/js/multiline-ternary)  [`3dea281`](xojs/eslint-config-xo@3dea281)

##### Breaking

-   Require Node.js 18.18
-   Migrate to flat config and require ESLint 9 ([#86](xojs/eslint-config-xo#86))  [`ec210f2`](xojs/eslint-config-xo@ec210f2)
    -   Migrate config: https://eslint.org/docs/latest/use/configure/migration-guide

##### Improvements

-   Migrate deprecated rules to [`@stylistic`](https://eslint.style)  [`0f81063`](xojs/eslint-config-xo@0f81063)
-   Enable permissive `max-len` and `max-lines` as warning ([#84](xojs/eslint-config-xo#84))  [`e669d26`](xojs/eslint-config-xo@e669d26)
-   Revert "Add option to `no-extra-boolean-cast`" ([#87](xojs/eslint-config-xo#87))  [`f010b63`](xojs/eslint-config-xo@f010b63)
-   Add option to `no-extra-boolean-cast`  [`a6dc171`](xojs/eslint-config-xo@a6dc171)
##### [v0.45.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.45.0)

-   Allow class fields with no blank lines between ([#85](xojs/eslint-config-xo#85))  [`6f2ff13`](xojs/eslint-config-xo@6f2ff13)
##### [v0.44.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.44.0)

##### Breaking

-   Require Node.js 18  [`f2060de`](xojs/eslint-config-xo@f2060de)

##### New rules

-   [`logical-assignment-operators`](https://eslint.org/docs/latest/rules/logical-assignment-operators)  [`27049c1`](xojs/eslint-config-xo@27049c1)
-   [`prefer-object-has-own`](https://eslint.org/docs/latest/rules/prefer-object-has-own)  [`288a3ca`](xojs/eslint-config-xo@288a3ca)
-   [`object-curly-newline`](https://eslint.org/docs/latest/rules/object-curly-newline) ([#83](xojs/eslint-config-xo#83))  [`3a5448b`](xojs/eslint-config-xo@3a5448b)

##### Improvements

-   Ban `atob` and `btoa`  [`dfa969c`](xojs/eslint-config-xo@dfa969c)
-   Replace deprecated `no-new-object` rule  [`7f8f92e`](xojs/eslint-config-xo@7f8f92e)
-   `no-unused-vars`: Allow ignoring variables by prefixing with underscore  [`b31ab8a`](xojs/eslint-config-xo@b31ab8a)
renovate bot added a commit to mmkal/eslint-plugin-mmkal that referenced this pull request Aug 21, 2024
##### [v0.46.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.46.0)

##### New rules

-   [`@stylistic/indent-binary-ops`](https://eslint.style/rules/plus/indent-binary-ops)  [`d91defd`](xojs/eslint-config-xo@d91defd)
-   [`@stylistic/function-paren-newline`](https://eslint.style/rules/js/function-paren-newline)  [`fb5e204`](xojs/eslint-config-xo@fb5e204)
-   [`@stylistic/block-spacing`](https://eslint.style/rules/js/block-spacing)  [`cb6b443`](xojs/eslint-config-xo@cb6b443)
-   [`@stylistic/multiline-ternary`](https://eslint.style/rules/js/multiline-ternary)  [`3dea281`](xojs/eslint-config-xo@3dea281)

##### Breaking

-   Require Node.js 18.18
-   Migrate to flat config and require ESLint 9 ([#86](xojs/eslint-config-xo#86))  [`ec210f2`](xojs/eslint-config-xo@ec210f2)
    -   Migrate config: https://eslint.org/docs/latest/use/configure/migration-guide

##### Improvements

-   Migrate deprecated rules to [`@stylistic`](https://eslint.style)  [`0f81063`](xojs/eslint-config-xo@0f81063)
-   Enable permissive `max-len` and `max-lines` as warning ([#84](xojs/eslint-config-xo#84))  [`e669d26`](xojs/eslint-config-xo@e669d26)
-   Revert "Add option to `no-extra-boolean-cast`" ([#87](xojs/eslint-config-xo#87))  [`f010b63`](xojs/eslint-config-xo@f010b63)
-   Add option to `no-extra-boolean-cast`  [`a6dc171`](xojs/eslint-config-xo@a6dc171)
##### [v0.45.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.45.0)

-   Allow class fields with no blank lines between ([#85](xojs/eslint-config-xo#85))  [`6f2ff13`](xojs/eslint-config-xo@6f2ff13)
##### [v0.44.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.44.0)

##### Breaking

-   Require Node.js 18  [`f2060de`](xojs/eslint-config-xo@f2060de)

##### New rules

-   [`logical-assignment-operators`](https://eslint.org/docs/latest/rules/logical-assignment-operators)  [`27049c1`](xojs/eslint-config-xo@27049c1)
-   [`prefer-object-has-own`](https://eslint.org/docs/latest/rules/prefer-object-has-own)  [`288a3ca`](xojs/eslint-config-xo@288a3ca)
-   [`object-curly-newline`](https://eslint.org/docs/latest/rules/object-curly-newline) ([#83](xojs/eslint-config-xo#83))  [`3a5448b`](xojs/eslint-config-xo@3a5448b)

##### Improvements

-   Ban `atob` and `btoa`  [`dfa969c`](xojs/eslint-config-xo@dfa969c)
-   Replace deprecated `no-new-object` rule  [`7f8f92e`](xojs/eslint-config-xo@7f8f92e)
-   `no-unused-vars`: Allow ignoring variables by prefixing with underscore  [`b31ab8a`](xojs/eslint-config-xo@b31ab8a)
renovate bot added a commit to mmkal/eslint-plugin-mmkal that referenced this pull request Aug 21, 2024
##### [v0.46.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.46.0)

##### New rules

-   [`@stylistic/indent-binary-ops`](https://eslint.style/rules/plus/indent-binary-ops)  [`d91defd`](xojs/eslint-config-xo@d91defd)
-   [`@stylistic/function-paren-newline`](https://eslint.style/rules/js/function-paren-newline)  [`fb5e204`](xojs/eslint-config-xo@fb5e204)
-   [`@stylistic/block-spacing`](https://eslint.style/rules/js/block-spacing)  [`cb6b443`](xojs/eslint-config-xo@cb6b443)
-   [`@stylistic/multiline-ternary`](https://eslint.style/rules/js/multiline-ternary)  [`3dea281`](xojs/eslint-config-xo@3dea281)

##### Breaking

-   Require Node.js 18.18
-   Migrate to flat config and require ESLint 9 ([#86](xojs/eslint-config-xo#86))  [`ec210f2`](xojs/eslint-config-xo@ec210f2)
    -   Migrate config: https://eslint.org/docs/latest/use/configure/migration-guide

##### Improvements

-   Migrate deprecated rules to [`@stylistic`](https://eslint.style)  [`0f81063`](xojs/eslint-config-xo@0f81063)
-   Enable permissive `max-len` and `max-lines` as warning ([#84](xojs/eslint-config-xo#84))  [`e669d26`](xojs/eslint-config-xo@e669d26)
-   Revert "Add option to `no-extra-boolean-cast`" ([#87](xojs/eslint-config-xo#87))  [`f010b63`](xojs/eslint-config-xo@f010b63)
-   Add option to `no-extra-boolean-cast`  [`a6dc171`](xojs/eslint-config-xo@a6dc171)
##### [v0.45.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.45.0)

-   Allow class fields with no blank lines between ([#85](xojs/eslint-config-xo#85))  [`6f2ff13`](xojs/eslint-config-xo@6f2ff13)
##### [v0.44.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.44.0)

##### Breaking

-   Require Node.js 18  [`f2060de`](xojs/eslint-config-xo@f2060de)

##### New rules

-   [`logical-assignment-operators`](https://eslint.org/docs/latest/rules/logical-assignment-operators)  [`27049c1`](xojs/eslint-config-xo@27049c1)
-   [`prefer-object-has-own`](https://eslint.org/docs/latest/rules/prefer-object-has-own)  [`288a3ca`](xojs/eslint-config-xo@288a3ca)
-   [`object-curly-newline`](https://eslint.org/docs/latest/rules/object-curly-newline) ([#83](xojs/eslint-config-xo#83))  [`3a5448b`](xojs/eslint-config-xo@3a5448b)

##### Improvements

-   Ban `atob` and `btoa`  [`dfa969c`](xojs/eslint-config-xo@dfa969c)
-   Replace deprecated `no-new-object` rule  [`7f8f92e`](xojs/eslint-config-xo@7f8f92e)
-   `no-unused-vars`: Allow ignoring variables by prefixing with underscore  [`b31ab8a`](xojs/eslint-config-xo@b31ab8a)
renovate bot added a commit to mmkal/eslint-plugin-mmkal that referenced this pull request Aug 21, 2024
##### [v0.46.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.46.0)

##### New rules

-   [`@stylistic/indent-binary-ops`](https://eslint.style/rules/plus/indent-binary-ops)  [`d91defd`](xojs/eslint-config-xo@d91defd)
-   [`@stylistic/function-paren-newline`](https://eslint.style/rules/js/function-paren-newline)  [`fb5e204`](xojs/eslint-config-xo@fb5e204)
-   [`@stylistic/block-spacing`](https://eslint.style/rules/js/block-spacing)  [`cb6b443`](xojs/eslint-config-xo@cb6b443)
-   [`@stylistic/multiline-ternary`](https://eslint.style/rules/js/multiline-ternary)  [`3dea281`](xojs/eslint-config-xo@3dea281)

##### Breaking

-   Require Node.js 18.18
-   Migrate to flat config and require ESLint 9 ([#86](xojs/eslint-config-xo#86))  [`ec210f2`](xojs/eslint-config-xo@ec210f2)
    -   Migrate config: https://eslint.org/docs/latest/use/configure/migration-guide

##### Improvements

-   Migrate deprecated rules to [`@stylistic`](https://eslint.style)  [`0f81063`](xojs/eslint-config-xo@0f81063)
-   Enable permissive `max-len` and `max-lines` as warning ([#84](xojs/eslint-config-xo#84))  [`e669d26`](xojs/eslint-config-xo@e669d26)
-   Revert "Add option to `no-extra-boolean-cast`" ([#87](xojs/eslint-config-xo#87))  [`f010b63`](xojs/eslint-config-xo@f010b63)
-   Add option to `no-extra-boolean-cast`  [`a6dc171`](xojs/eslint-config-xo@a6dc171)
##### [v0.45.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.45.0)

-   Allow class fields with no blank lines between ([#85](xojs/eslint-config-xo#85))  [`6f2ff13`](xojs/eslint-config-xo@6f2ff13)
##### [v0.44.0](https://github.com/xojs/eslint-config-xo/releases/tag/v0.44.0)

##### Breaking

-   Require Node.js 18  [`f2060de`](xojs/eslint-config-xo@f2060de)

##### New rules

-   [`logical-assignment-operators`](https://eslint.org/docs/latest/rules/logical-assignment-operators)  [`27049c1`](xojs/eslint-config-xo@27049c1)
-   [`prefer-object-has-own`](https://eslint.org/docs/latest/rules/prefer-object-has-own)  [`288a3ca`](xojs/eslint-config-xo@288a3ca)
-   [`object-curly-newline`](https://eslint.org/docs/latest/rules/object-curly-newline) ([#83](xojs/eslint-config-xo#83))  [`3a5448b`](xojs/eslint-config-xo@3a5448b)

##### Improvements

-   Ban `atob` and `btoa`  [`dfa969c`](xojs/eslint-config-xo@dfa969c)
-   Replace deprecated `no-new-object` rule  [`7f8f92e`](xojs/eslint-config-xo@7f8f92e)
-   `no-unused-vars`: Allow ignoring variables by prefixing with underscore  [`b31ab8a`](xojs/eslint-config-xo@b31ab8a)
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.

5 participants