Releases: coderaiser/putout
putout v41.0.4
putout v41.0.3
putout v41.0.2
putout v41.0.1
Putout v41
व्योमाकारं स्वमात्मानम् ध्यायेद्दिग्भिरनावृतम् ।
निराश्रया चितिः शक्तिः स्वरूपं दर्शयेत्तदा ॥ ९२ ॥When one meditates on one's own self in the form of unlimited space (in all) directions, the mind is suspended and shakti in the form of consciousness is revealed as the form of one's own self.
Hi folks 🎈!
The time is come for a new major release of 🐊Putout it has a couple breaking changes.
Long things things short: less dependencies, faster install, faster start.
Release contains all latest Babel 8 changes, so release is future proof.
Due to merge of some rules 🐊Putout now has 14 dependencies less 💪.
📛 Breaking changes
📛 Moved out convert-array-to-slice from default installed bundle
If you still used, just install with:
npm i @putout/plugin-convert-array-to-slice -D
📛 @putout/plugin-destructuring
- ✅
apply-destructuringrenamed todestructuring; - ✅
split-call-with-destructuringmerged withdestructuring; - ✅
merge-destructuring-propertiesmerged withdestructuring; - ✅
split-nested-destructuringmerged withdestructuring; - ✅
extract-object-propertiesmerged withdestructuring;
1 plugin instead of 5. More organised rules set, with built-in auto transform to new format, as usual 😏:
{
"rules": {
- "apply-destructuring": "off",
- "apply-destructuring/falsy": "off",
- "apply-destructuring/array": "off",
- "apply-destructuring/object": "off",
- "split-call-with-destructuring": "off",
- "merge-destructuring-properties": "off",
- "split-nested-destructuring": "off",
- "remove-useless-arguments/destructuring": "off"
- "extract-object-properties": "off",
- "extract-object-properties/equal-deep": "off",
- "extract-object-properties/not-equal-deep": "off",
+ "destructuring": "off",
+ "destructuring/remove-useless-object": "off",
+ "destructuring/apply-array": "off",
+ "destructuring/apply-object": "off",
+ "destructuring/split-call": "off",
+ "destructuring/merge-properties": "off",
+ "destructuring/split-nested": "off",
+ "destructuring/remove-useless-arguments": "off",
+ "destructuring/extract-properties": "off",
+ "desturucturing/extract-properties-equal-deep": "off",
+ "destructurigin/extract-properties-not-equal-deep": "off",
}
}📛 @putout/plugin-arguments
1 plugin instead of 2. Also with built-in auto transform 😏:
{
"rules": {
- "remove-useless-arguments": "off",
- "remove-useless-arguments/arguments": "on",
- "remove-useless-arguments/method": "on",
- "remove-useless-arguments/unused": "on",
- "remove-useless-arguments/json-parse": "on"
- "convert-arguments-to-rest": "off",
+ "arguments": "off",
+ "arguments/remove-useless": "on",
+ "arguments/remove-useless-from-method": "on",
+ "arguments/remove-unused": "on",
+ "arguments/apply-json-parse": "on"
+ "arguments/apply-rest": "on",
}
}📛 @putout/plugin-spread
- ✅
remove-useless-spreadrenamed tospread; - ✅
convert-apply-to-spreadmerged withspread; - ✅
convert-object-assign-to-merge-spreadmerged withspread;
{
"rules": {
- "remove-useless-spread": "on",
- "remove-useless-spread/array": "on",
- "remove-useless-spread/object": "on",
- "remove-useless-spread/nested": "on",
- "convert-apply-to-spread": "on",
- "convert-object-assign-to-merge-spread": "on"
+ "spread": "on",
+ "spread/remove-useless-array": "on",
+ "spread/remove-useless-object": "on",
+ "spread/simplify-nested": "on",
+ "spread/convert-apply-to-spread": "on",
+ "spread/convert-object-assign-to-merge-spread": "on"
}
}📛 @putout/plugin-variables
- ✅
remove-useless-variablesrenamed tovariables; - ✅
remove-unreferenced-variablesmerged withvariables; - ✅
remove-unused-variablesmerged withvariables; - ✅
split-variable-declarationsmerged withvariables; - ✅
split-variable-declarationsmerged withvariables; - ✅
convert-const-to-letmerged withvariables;
{
"rules": {
- "remove-useless-variables": "off",
- "remove-unused-variables": "on",
- "remove-useless-variables/remove": "on",
- "remove-useless-variables/assignment": "on",
- "remove-useless-arguments/declaration": "on",
- "remove-useless-arguments/duplicate": "on",
- "remove-useless-arguments/rename": "on",
- "remove-unreferenced-variables": "on",
- "convert-const-to-let": "on",
- "extract-keyword-from-variables": "on"
- "split-variable-declarations: "on",
+ "variables": "off",
+ "variables/remove-unused": "on",
+ "variables/remove-useless": "on",
+ "variables/remove-useless-assignment": "on",
+ "variables/remove-useless-declarations": "on",
+ "variables/remove-useless-duplicates": "on",
+ "variables/remove-useless-rename": "on",
+ "variables/remove-unreferenced": "on",
+ "variables/convert-const-to-let": "on"
+ "variables/extract-keyword": "on"
+ "variables/split-declarations: "on",
}
}eslint-plugin-putout
ESLint plugin is upgraded to v29, so consider upgrading it to get most of two linters.
A little bit technical details
AST Shape of TSImportType was changed to align with ImportExpression. That is a breaking internal change, so @putout/printer also upgraded to v16.
That's all for now, have a great day 🐘!
🐞 fix
- 0843996 putout: rm unused @putout/plugin-remove-unused-for-of-variables
- 14257a2 @putout/plugin-arguments: json-parse -> apply-json-parse
- cdc1fa8 @putout/plugin-nodejs: declare: process: assert: rm
🔥 feature
- a667092 @putout/plugin-putout-config: apply-variables: remove-unused-variables -> variables/remove-unused
- a4ad151 @putout/plugin-putout-config: apply-destructuring: extract-object-properties, convert-object-to-array
- f4a1844 @putout/plugin-destructuring: extract-properties: add
- b623363 putout: @putout/plugin-eslint v15.0.0
- e8bb810 @putout/plugin-eslint: drop support of 🐊 < 41
- 9e9e986 @putout/plugin-eslint: remove-useless-properties: innerComments: exclude
- 01a5578 eslint-plugin-putout: safe: remove-unused-variables -> variables
- de3b458 @putout/plugin-variables: extract-keywords: add
- 765537d @putout/plugin-variables: remove-unused
- 6abaa5b @putout/plugin-variables: convert-const-to-let: add
- 552beaa @putout/plugin-variables: split-declarations
- 6695af5 @putout/plugin-putout-config: apply-variables: add
- 77600c7 @putout/plugin-variables: remove-unreferenced: add
- 42df170 @putout/plugin-putout-config: apply-destructuring: remove-useless-variables: add
- 72ad83f @putout/plugin-variables: add
- ac6e107 @putout/plugin-putout-config: apply-spread: convert-object-assign-to-merge-spread: add
- cb645be @putout/plugin-spread: convert-object-assign-to-merge-spread: add
- c1fea00 @putout/plugin-tape: convert-tape-to-supertape: repo...
putout v40.15.1
🐞 fix
- 7705b5b putout: -i
- 3aca6de @putout/plugin-esm: sort-imports-by-specifiers: report after transform
- 51c2726 putout: rm useless debug
🔥 feature
- 2b98862 @putout/cli-choose-formatter: @putout/cli-choose v3.0.0
- 7e5e37b @putout/cli-choose: drop support of node < 20
- c830b60 @putout/cli-choose: ctrl + c
- 4c395fc @putout/plugin-esm: sort-imports-by-specifiers: lots
- 0de67aa @putout/eslint-flat: @eslint/config-helpers v0.5.0
- 9c9be60 @putout/engine-runner: debug -> obug
- 6002883 @putout/plugin-apply-shorthand-properties: spread
- 164bb68 @putout/compare: debug -> odebug
putout v40.15.0
🐞 fix
- 4ea622e putout: rm useless debug
🔥 feature
- 7123460 @putout/engine-runner: debug -> obug
- 70a0d25 @putout/plugin-apply-shorthand-properties: spread
- 7dc73dc @putout/compare: debug -> odebug
- 6e7a44c @putout/plugin-apply-shorthand-properties: computed
- 4c64341 root: eslint v10.0.0-alpha.0 (https://eslint.org/blog/2025/11/eslint-v10.0.0-alpha.0-released)
- 18f4ddd @putout/plugin-logical-expressions: simplify: JSXContainerExpression: exclude
- 41c8458 @putout/plugin-eslint-plugin: drop support of 🐊 < 40
- 97bb827 @putout/plugin-eslint-plugin: remove-errors-type: add
- ea07075 @putout/plugin-for-of: reduce: inside ExportNamedDeclaration
- 2f6f665 @putout/plugin-nodejs: convert-esm-to-commonjs: destructuring
putout v40.14.0
🔥 feature
- a9f96b8 putout: @putout/plugin-apply-shorthand-properties v7.0.0
- d8228f3 @putout/plugin-apply-shorthand-properties: computed: exclude
- ecee7cb @putout/plugin-apply-shorthand-properties: drop support of 🐊 < 40
- bf128ff @putout/plugin-apply-destructuring: convert-object-to-array: add
- 40be918 @putout/plugin-conditions: apply-consistent-blocks: empty
- 0d52dd7 eslint-plugin-putout: long-properties-destructuring: NumericLiteral
- 0a0856f @putout/plugin-declare-before-reference: exclude TSTypeAliasDeclaration
- 07e59f1 @putout/plugin-remove-iife: exclude JSXExpressionContainer
- 3eb8065 @putout/plugin/remove-useless-arguments: arguments: traverse: Identifier -> ReferencedIdentifier
- 788edc3 @putout/plugin-remove-useless-arguments: arguments: crawl
- 4d54d9a @putout/plugin-promises: apply-to-level-await: useEffect: exclude
putout v40.13.0
🔥 feature
- 36debe4 putout: @putout/plugin-for-of v10.0.0
- 1498718 @putout/for-of: drop support of 🐊< 40
- c20effb @putout/plugin-for-of: for-each: improve TS support
- 8070261 @putout/plugin-conditions: reverse-conditions: couple
- b2e9bbd @putout/plugin-conditions: apply-consistent-blocks: leading comments
- 8fa4544 @putout/plugin-types: convert-typeof-to-is-type: declared
- e033dab @putout/plugin-esm: group-imports-by-source: sort-imports-by-specifiers: couple
- 1df9617 @putout/plugin-putout: replace-test-message: noReport: couple args
- 1263111 @putout/plugin-putout: apply-fixture-name-to-message: noReport: couple args
- 9d71578 @putout/plugin-split-nested-destructuring: exclude declared
- ff91ae4 @putout/plugin-nodejs: group-require-by-id: traverse Program instead of using pathStore
- 480c80b @putout/operate: extract: TSAsExpression: add support
- cbf5429 @putout/plugin-nodejs: group-require-by-id: changed node before exit: add support
- 5e5371d @putout/plugin-remove-useless-variables: declaration: no loc support
- 4f1d091 @putout/plugin-remove-duplicate-keys: CallExpression: exclude
- f177cad @putout/plugin-convert-array-copy-to-slice: migrate to ESM
- 536aff4 putout: @putout/plugin-convert-array-copy-to-slice v4.0.0
- b6b7ca8 @putout/plugin-convert-array-copy-to-slice: drop support of 🐊 < 40
- 6b32df6 @putout/plugin-convert-array-copy-to-slice: exclude ternary
- 6c83b9e @putout/plugin-remove-useless-spread: array: ternary
- 70bd980 @putout/plugin-esm: merge-declaration-with-export: exclude: require
- 2daedf4 @putout/plugin-nodejs: group-require-by-id: esm/merge-declaration-with-export: improve support
putout v40.12.0
🔥 feature
- a6bdae7 putout: @putout/plugin-convert-array-copy-to-slice v4.0.0
- 386ef04 @putout/plugin-convert-array-copy-to-slice: drop support of 🐊 < 40
- 30cec8e @putout/plugin-convert-array-copy-to-slice: exclude ternary
- 2f08e26 @putout/plugin-remove-useless-spread: array: ternary
- fa9e004 @putout/plugin-esm: merge-declaration-with-export: exclude: require
- bf95218 @putout/plugin-nodejs: group-require-by-id: esm/merge-declaration-with-export: improve support
- dc8b16b @putout/engine-parser: do not produce tokens without a need
- b19a9ef @putout/plugin-github: setup-node: v6
- beceab4 @putout/plugin-github: update-actions: checkout: v5
- 0eecd1c @putout/plugin-github: install-bun: update to v2
- e9aee85 @putout/plugin-github: update-actions: oven-sh/setup-bun