-
-
Notifications
You must be signed in to change notification settings - Fork 45
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
feat: add object-curly-newline rule #83
Conversation
index.js
Outdated
}, | ||
ObjectPattern: { | ||
multiline: true, | ||
minProperties: 4, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What's the reasoning?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you for asking! Upon reflection, I believe this might not be a good idea.
let {
g, h
} = obj;
The above format isn't very good IMO.
I am leaning towards to set this option as never now until the community enhance the object-property-newline
rule or add destructuring-property-newline
.
Happy to hear your thoughts :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
If we add object-property-newline
as well we can achieve the following result
Incorrect
let a = {foo: 1
};
let b = {
foo: 1};
let c = {foo: 1, bar: 2
};
Object.assign(stream, {isTTY: true, columns, rows});
Correct
Object.assign(stream, {
isTTY: true,
columns,
rows
});
let a = {foo: 1};
let b = {foo: 1};
let c = {
foo: 1,
bar: 2
};
Thank you very much for your feedback |
For future reference, this doesn't seem to fully work as desired yet, as it now (as noted above) auto-fixes {
foo, bar
} |
##### [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)
##### [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)
##### [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)
##### [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)
##### [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)
##### [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)
@sindresorhus close xojs/xo#367