diff --git a/src/main/java/org/openrewrite/codemods/ApplyCodemod.java b/src/main/java/org/openrewrite/codemods/ApplyCodemod.java index dad4f3e..99c6293 100644 --- a/src/main/java/org/openrewrite/codemods/ApplyCodemod.java +++ b/src/main/java/org/openrewrite/codemods/ApplyCodemod.java @@ -17,9 +17,9 @@ import lombok.EqualsAndHashCode; import lombok.Value; +import org.jspecify.annotations.Nullable; import org.openrewrite.ExecutionContext; import org.openrewrite.Option; -import org.openrewrite.internal.lang.Nullable; import java.util.ArrayList; import java.util.List; diff --git a/src/main/java/org/openrewrite/codemods/ESLint.java b/src/main/java/org/openrewrite/codemods/ESLint.java index 632ddd3..604ce5e 100644 --- a/src/main/java/org/openrewrite/codemods/ESLint.java +++ b/src/main/java/org/openrewrite/codemods/ESLint.java @@ -20,10 +20,10 @@ import com.fasterxml.jackson.databind.node.ArrayNode; import lombok.EqualsAndHashCode; import lombok.Value; +import org.jspecify.annotations.Nullable; import org.openrewrite.ExecutionContext; import org.openrewrite.Option; import org.openrewrite.SourceFile; -import org.openrewrite.internal.lang.Nullable; import org.openrewrite.marker.Marker; import org.openrewrite.marker.Markers; import org.openrewrite.marker.SearchResult; @@ -60,7 +60,7 @@ public class ESLint extends NodeBasedRecipe { @Option(displayName = "Parser to be used by ESLint", description = "Parser used by ESLint to parse the source files. Defaults to `@typescript-eslint/parser`. " + - "See [ESLint documentation](https://eslint.org/docs/latest/use/configure/parsers) for more details.", + "See [ESLint documentation](https://eslint.org/docs/latest/use/configure/parsers) for more details.", example = "esprima", required = false) @Nullable @@ -68,8 +68,8 @@ public class ESLint extends NodeBasedRecipe { @Option(displayName = "List of parser options for ESLint", description = "A list of parser options for ESLint. The format is `key: value`. Defaults to " + - "`ecmaVersion: \"latest\", ecmaFeatures: { jsx: true }, sourceType: \"module\"`. See " + - "[ESLint documentation](https://eslint.org/docs/latest/use/configure/language-options#specifying-parser-options) for more details.", + "`ecmaVersion: \"latest\", ecmaFeatures: { jsx: true }, sourceType: \"module\"`. See " + + "[ESLint documentation](https://eslint.org/docs/latest/use/configure/language-options#specifying-parser-options) for more details.", example = "ecmaVersion: 6, ecmaFeatures: { jsx: true }", required = false) @Nullable @@ -77,7 +77,7 @@ public class ESLint extends NodeBasedRecipe { @Option(displayName = "Allow inline configuration for ESLint", description = "Whether inline config comments are allowed. Defaults to `false`. See " + - "[ESLint documentation](https://eslint.org/docs/latest/use/configure/rules#disabling-inline-comments) for more details.", + "[ESLint documentation](https://eslint.org/docs/latest/use/configure/rules#disabling-inline-comments) for more details.", example = "true", required = false) @Nullable @@ -113,10 +113,10 @@ public class ESLint extends NodeBasedRecipe { @Option(displayName = "ESLint rules and rule configuration", description = "List of rules to be checked by ESLint. Optionally, the severity and other rule options can " + - "also be specified as e.g. `off`, `warn` or `[\"error\", \"always\"]`. " + - "The severity `off` is useful when the rule is declared by an extended " + - "[shareable config](https://eslint.org/docs/latest/extend/ways-to-extend#shareable-configs). " + - "For more information, see the [ESLint documentation](https://eslint.org/docs/latest/use/configure/rules)", + "also be specified as e.g. `off`, `warn` or `[\"error\", \"always\"]`. " + + "The severity `off` is useful when the rule is declared by an extended " + + "[shareable config](https://eslint.org/docs/latest/extend/ways-to-extend#shareable-configs). " + + "For more information, see the [ESLint documentation](https://eslint.org/docs/latest/use/configure/rules)", example = "eqeqeq: warn, multiline-comment-style: [\"error\", \"starred-block\"], prettier/prettier", required = false) @Nullable @@ -131,8 +131,8 @@ public class ESLint extends NodeBasedRecipe { @Option(displayName = "Override config file", description = "Allows specifying the full ESLint configuration file contents as multiline JSON. " + - "See [ESLint documentation](https://eslint.org/docs/latest/use/configure/configuration-files) for more details.\n\n" + - "Note that this will override any other configuration options.", + "See [ESLint documentation](https://eslint.org/docs/latest/use/configure/configuration-files) for more details.\n\n" + + "Note that this will override any other configuration options.", required = false) @Nullable String configFile; @@ -145,7 +145,7 @@ public String getDisplayName() { @Override public String getDescription() { return "Run [ESLint](https://eslint.org/) across the code to fix common static analysis issues in the code.\n\n" + - "This requires the code to have an existing ESLint configuration."; + "This requires the code to have an existing ESLint configuration."; } @Override diff --git a/src/main/java/org/openrewrite/codemods/NodeBasedRecipe.java b/src/main/java/org/openrewrite/codemods/NodeBasedRecipe.java index 2d0b1d7..634a3ff 100644 --- a/src/main/java/org/openrewrite/codemods/NodeBasedRecipe.java +++ b/src/main/java/org/openrewrite/codemods/NodeBasedRecipe.java @@ -19,8 +19,9 @@ import lombok.Getter; import lombok.RequiredArgsConstructor; import lombok.ToString; +import org.jetbrains.annotations.NotNull; +import org.jspecify.annotations.Nullable; import org.openrewrite.*; -import org.openrewrite.internal.lang.Nullable; import org.openrewrite.quark.Quark; import org.openrewrite.scheduling.WorkingDirectoryExecutionContextView; import org.openrewrite.text.PlainText; @@ -167,7 +168,7 @@ protected void processOutput(Path out, Accumulator acc, ExecutionContext ctx) { public TreeVisitor getVisitor(Accumulator acc) { return new TreeVisitor() { @Override - public @Nullable Tree visit(@Nullable Tree tree, ExecutionContext ctx) { + public @Nullable Tree visit(@Nullable Tree tree, @NotNull ExecutionContext ctx) { if (tree instanceof SourceFile) { SourceFile sourceFile = (SourceFile) tree; // TODO parse sources like JSON where parser doesn't require an environment diff --git a/src/main/java/org/openrewrite/codemods/Putout.java b/src/main/java/org/openrewrite/codemods/Putout.java index ff73d8d..d4a22bc 100644 --- a/src/main/java/org/openrewrite/codemods/Putout.java +++ b/src/main/java/org/openrewrite/codemods/Putout.java @@ -17,9 +17,9 @@ import lombok.EqualsAndHashCode; import lombok.Value; +import org.jspecify.annotations.Nullable; import org.openrewrite.ExecutionContext; import org.openrewrite.Option; -import org.openrewrite.internal.lang.Nullable; import org.openrewrite.scheduling.WorkingDirectoryExecutionContextView; import java.io.IOException; @@ -45,8 +45,8 @@ public String getDescription() { return "Run [Putout](https://github.com/coderaiser/putout) on your projects."; } - @Option(displayName = "Config file", - description = "A list of rules to enable", + @Option(displayName = "Rules", + description = "Names of rules to enable. If not provided, all rules are enabled.", required = false) @Nullable Set rules; @@ -55,15 +55,16 @@ public String getDescription() { protected List getNpmCommand(Accumulator acc, ExecutionContext ctx) { List commands = new ArrayList<>(); String executable = "${nodeModules}/.bin/putout"; + if (rules != null) { commands.add(executable + " ${repoDir} --disable-all || true"); // hacky because disable-all throws + // enable only rules that are provided for (String rule : rules) { commands.add(executable + " ${repoDir} --enable " + rule); } } - commands.add(executable + " ${repoDir}" + " --fix"); return commands; } @@ -87,6 +88,7 @@ protected void runNode(Accumulator acc, ExecutionContext ctx) { .replace("${nodeModules}", nodeModules.toString()) .replace("${repoDir}", ".") .replace("${parser}", acc.parser())); + } Path out = null, err = null; diff --git a/src/main/resources/codemods/package-lock.json b/src/main/resources/codemods/package-lock.json index 3633794..33dde0a 100644 --- a/src/main/resources/codemods/package-lock.json +++ b/src/main/resources/codemods/package-lock.json @@ -10,6 +10,7 @@ "@mui/codemod": "6.0.0", "@next/codemod": "^14.0.4", "@next/eslint-plugin-next": "^14.1.0", + "@putout/processor-typescript": "^9.0.1", "@stylistic/eslint-plugin": "1.6.1", "@typescript-eslint/eslint-plugin": "^6.18.1", "@typescript-eslint/parser": "^6.18.1", @@ -36,7 +37,7 @@ "eslint-plugin-unicorn": "^51.0.1", "eslint-plugin-vue": "^9.21.1", "eslint-webpack-plugin": "^4.0.1", - "putout": "^35.25.1", + "putout": "^36.9.0", "react": "^18.3.1", "react-declassify": "^0.2.0", "svelte": "^4.0.0", @@ -3021,9 +3022,9 @@ } }, "node_modules/@putout/cli-choose-formatter/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "engines": { "node": ">=12.20" }, @@ -3089,15 +3090,15 @@ } }, "node_modules/@putout/cli-validate-args": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@putout/cli-validate-args/-/cli-validate-args-1.1.1.tgz", - "integrity": "sha512-AczBS98YyvsDVxvvYjHGyIygFu3i/EJ0xsruU6MlytTuUiCFQIE/QQPDy1bcN5J2Y75BzSYncaYnVrEGcBjeeQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@putout/cli-validate-args/-/cli-validate-args-2.0.0.tgz", + "integrity": "sha512-/tl1XiBog6XMb1T9kalFerYU86sYsl6EtrlvGI5RVtlHOQdEEJAIPRxmX4vnKG3uoY5aVEkJOWzbPM5tsncmFQ==", "dependencies": { "fastest-levenshtein": "^1.0.12", - "just-kebab-case": "^1.1.0" + "just-kebab-case": "^4.2.0" }, "engines": { - "node": ">=14" + "node": ">=18" } }, "node_modules/@putout/compare": { @@ -3117,9 +3118,9 @@ } }, "node_modules/@putout/engine-loader": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@putout/engine-loader/-/engine-loader-13.1.0.tgz", - "integrity": "sha512-wOPtfiiqHQgrKXq6w/2rzVV4T1spvRbyL6BINAfnnS6KL4kM2nSLL+1a1WCaRnDrj7xMuN0kmzmt38m/dibP7Q==", + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/@putout/engine-loader/-/engine-loader-14.0.0.tgz", + "integrity": "sha512-pBYRDwuhJBKzCG1kW43dOA+L++WIdYdS7XmUooLpb20H+0HTkYxHdGJevgS3rR8F2VSsW27pCxwU4X+DeLiFFg==", "dependencies": { "@putout/engine-parser": "^10.0.0", "diff-match-patch": "^1.0.4", @@ -3153,13 +3154,13 @@ } }, "node_modules/@putout/engine-processor": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/@putout/engine-processor/-/engine-processor-11.2.0.tgz", - "integrity": "sha512-T+01ie33jWUH6yp7MXqkdG2Nf79JFIaRi9Ul/l1g2E8WSJLkM4bJ5dTDURDNtTNgdTfpnuIt1nPMT1tzzSdQTw==", + "version": "12.0.0", + "resolved": "https://registry.npmjs.org/@putout/engine-processor/-/engine-processor-12.0.0.tgz", + "integrity": "sha512-vyQFOeFzvmmWZXjDV+jnYJysLdckOmJXJFsizkrpUwDk0AqjENHWDIWu9uEf4+bcEdKvC2/ofww0TRgOWAZL6A==", "dependencies": { - "@putout/engine-loader": "^13.0.0", + "@putout/engine-loader": "^14.0.0", "once": "^1.4.0", - "picomatch": "^4.0.1", + "picomatch": "^4.0.2", "try-to-catch": "^3.0.1" }, "engines": { @@ -3181,13 +3182,13 @@ } }, "node_modules/@putout/engine-reporter": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@putout/engine-reporter/-/engine-reporter-1.0.2.tgz", - "integrity": "sha512-u+5P18YyK5JQBCkjPwx8PyHoJAslNJg/dRCvuMjfcFFni/eWA4rw2Ceh86eyzTyrRH5j8mwXuzZHKvEtz/Ozxw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@putout/engine-reporter/-/engine-reporter-2.0.0.tgz", + "integrity": "sha512-1adi0ZaZsDDynNqw9Z3Um6Vc0+1rpead8TajwL3LhDb78UI5HtlKXGzFVNzYsovf1FbShFnictF5QmtkTAjCIA==", "dependencies": { "@putout/cli-choose-formatter": "^4.0.0", "@putout/cli-keypress": "^2.0.0", - "@putout/engine-loader": "^13.0.0", + "@putout/engine-loader": "^14.0.0", "fullstore": "^3.0.0", "try-catch": "^3.0.1", "try-to-catch": "^3.0.1" @@ -3729,25 +3730,25 @@ } }, "node_modules/@putout/plugin-apply-optional-chaining": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@putout/plugin-apply-optional-chaining/-/plugin-apply-optional-chaining-5.0.1.tgz", - "integrity": "sha512-xnbErQDSlb6FfeLI+OoyWEpIs8vnRS8qs0OUHvKYcqYWt+6PIZi+peKT6wbeAgXOOgmuYoaYdhcRyQDI72W3tw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-apply-optional-chaining/-/plugin-apply-optional-chaining-6.0.0.tgz", + "integrity": "sha512-+9h/L9gNLEoa9ELXrGiuF/JWxq1e8Sk3z4VzD585K2nKxSmjCWJCdqtCO0LTHzv8j8AZCpfIAZavXvAyn0P/OQ==", "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "putout": ">=32" + "putout": ">=35" } }, "node_modules/@putout/plugin-apply-overrides": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-apply-overrides/-/plugin-apply-overrides-1.3.0.tgz", - "integrity": "sha512-sCtey6spNDep18E1afmTy8zam/3m8tXv+BmeTn2SoVSJ1NX9oQVlEh62swB+gdrb8HUd7dIdu1LDuex8Snei0A==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-apply-overrides/-/plugin-apply-overrides-2.1.0.tgz", + "integrity": "sha512-uu/G5rJufqWj+qhaDBL0+NFejVrwb/JVdB//8jW74I3sLcYDKiTDU5z2+hNWMCE8ORae+gr6PCWJfiEC9v2ROw==", "engines": { "node": ">=18" }, "peerDependencies": { - "putout": ">=35" + "putout": ">=36" } }, "node_modules/@putout/plugin-apply-starts-with": { @@ -3784,14 +3785,14 @@ } }, "node_modules/@putout/plugin-conditions": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-conditions/-/plugin-conditions-4.2.0.tgz", - "integrity": "sha512-WFwASVv4tZXTLae284S21MWlK5yKbc1zAypQ5ihSx/lxYtrlCnOvQs6OVmGa6RhFe3/nZQkB6k7C8/o8zrmLJw==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-conditions/-/plugin-conditions-5.0.0.tgz", + "integrity": "sha512-joqYYlN3dskMfxaon5Y/nNiR/H7/v8ZUZZ7groe9GrNCzi/DRVYhBNY2P9eoNJQNqiHY9ub8GIx8oKOo3kObQg==", "engines": { "node": ">=16" }, "peerDependencies": { - "putout": ">=33" + "putout": ">=36" } }, "node_modules/@putout/plugin-convert-apply-to-spread": { @@ -3806,14 +3807,14 @@ } }, "node_modules/@putout/plugin-convert-arguments-to-rest": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-convert-arguments-to-rest/-/plugin-convert-arguments-to-rest-2.0.0.tgz", - "integrity": "sha512-N9DBYe2/69RPcODQkrcFZPvxcP72mR/2HHr1Gjde2yGnrziUqjw7GLwmke9RSkr+M/sVUTcB6wDXKko84YSRtw==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-convert-arguments-to-rest/-/plugin-convert-arguments-to-rest-3.1.0.tgz", + "integrity": "sha512-DkjkCIc2ecbqvc8yhKWLDx2bGlNq5RMRlTfYd++nXi2iRnf5SyqcBfmr3/u/7BGoaoTN4QpDwPx9hyZXnK/PLw==", "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "putout": ">=29" + "putout": ">=36" } }, "node_modules/@putout/plugin-convert-array-copy-to-slice": { @@ -3849,6 +3850,17 @@ "putout": ">=29" } }, + "node_modules/@putout/plugin-convert-assignment-to-declaration": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@putout/plugin-convert-assignment-to-declaration/-/plugin-convert-assignment-to-declaration-1.0.1.tgz", + "integrity": "sha512-Wy2SphR27qZdnwFc8iaroOIL8xk4LG0bifyAxXqbP0Ggk/kLzJe7Ht7ExYzDOmKw4pm96hUoP9JSIRzskafgrA==", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "putout": ">=35" + } + }, "node_modules/@putout/plugin-convert-concat-to-flat": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@putout/plugin-convert-concat-to-flat/-/plugin-convert-concat-to-flat-1.0.0.tgz", @@ -3861,14 +3873,14 @@ } }, "node_modules/@putout/plugin-convert-const-to-let": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-convert-const-to-let/-/plugin-convert-const-to-let-1.2.0.tgz", - "integrity": "sha512-U4enDDqp+iXfvnHKu6B/2xVTYwVdj5CGnpweL+QCpKe8KTDd1uxjM2sEcK+V5Ly8Y0SIGLJVyvGkUBIIufsRBw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-convert-const-to-let/-/plugin-convert-const-to-let-3.0.0.tgz", + "integrity": "sha512-/I8LBeMav8WQlR1MGXbuqq3BZxsX/3SGEk4p40ozvmoQmq5aHz8Hez9Nh9WyTcdIaps9D2FZx26Ot/uSvasC3A==", "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "putout": ">=26" + "putout": ">=36" } }, "node_modules/@putout/plugin-convert-index-of-to-includes": { @@ -3882,17 +3894,6 @@ "putout": ">=29" } }, - "node_modules/@putout/plugin-convert-label-to-object": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@putout/plugin-convert-label-to-object/-/plugin-convert-label-to-object-1.0.2.tgz", - "integrity": "sha512-alWSaGzC3V0VrsVPvTt8Panw9HAiAWX/xLUtmrXDsJVhv4jK64PJ2Er3S6ctyYpbLHUIAyTiFynEanH0rZCZqQ==", - "engines": { - "node": ">=16" - }, - "peerDependencies": { - "putout": ">=25" - } - }, "node_modules/@putout/plugin-convert-object-assign-to-merge-spread": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@putout/plugin-convert-object-assign-to-merge-spread/-/plugin-convert-object-assign-to-merge-spread-6.0.0.tgz", @@ -3916,14 +3917,14 @@ } }, "node_modules/@putout/plugin-convert-optional-to-logical": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-convert-optional-to-logical/-/plugin-convert-optional-to-logical-3.1.0.tgz", - "integrity": "sha512-H/xDpYQHfswlIHlkDMftF/IBBnPIlsnYymAK06z3vyvSw/V/2SXiPDyH4NAcYxzAtI21tgTtQjo2OoCl9rLr+w==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-convert-optional-to-logical/-/plugin-convert-optional-to-logical-4.0.0.tgz", + "integrity": "sha512-JsyKKafPH95ZzA2TTizY20vp1JdpnjByQM4ZvWycE9yeUVtRHflXieOjW9StUdz1ePrPn8ghLwebSSCGmaMFng==", "engines": { "node": ">=16" }, "peerDependencies": { - "putout": ">=32" + "putout": ">=36" } }, "node_modules/@putout/plugin-convert-quotes-to-backticks": { @@ -3982,14 +3983,14 @@ } }, "node_modules/@putout/plugin-declare-before-reference": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-declare-before-reference/-/plugin-declare-before-reference-3.0.0.tgz", - "integrity": "sha512-xXVifhMa464CBFKjQ4BTrjFy6gHkS7thJxKeNTMMC6AvtKAYL9DtSqqTl8/WJRR7nBDjUgCWK9MNfaFU4EeEOA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-declare-before-reference/-/plugin-declare-before-reference-4.0.0.tgz", + "integrity": "sha512-F44TRsfGVkMO+iP7ETdnJeJa43opmHk8njhGQI06GDNiSx9oKasrjcXjOaAuuhoP3nbkZqmMTQ301CPcBmkV1g==", "engines": { "node": ">=16" }, "peerDependencies": { - "putout": ">=31" + "putout": ">=35" } }, "node_modules/@putout/plugin-declare-imports-first": { @@ -4004,14 +4005,14 @@ } }, "node_modules/@putout/plugin-eslint": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/@putout/plugin-eslint/-/plugin-eslint-8.12.1.tgz", - "integrity": "sha512-ogqsrmjwUKmStofDv9dOV6REF/wmBC8XWv5cuYC1eCvdZw1835JixiWEovrrf9LDeizfwR81kgRKs5BfWQEf+A==", + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-eslint/-/plugin-eslint-9.1.0.tgz", + "integrity": "sha512-eC5WZQVbtUxmH4uExCppbt/drhQghhnS7lQ0zrsmmVoOw6SqWnojJsqu7aLobGy436LrVB81dbJKHIa7JG/Ypw==", "engines": { "node": ">=18" }, "peerDependencies": { - "putout": ">=35" + "putout": ">=36" } }, "node_modules/@putout/plugin-extract-object-properties": { @@ -4100,26 +4101,51 @@ "putout": ">=35" } }, + "node_modules/@putout/plugin-group-imports-by-source": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-group-imports-by-source/-/plugin-group-imports-by-source-1.0.0.tgz", + "integrity": "sha512-HVg4yugHtM2UlTc8as+saiBL/Zf5Kzm/YLxdLScBODkg8TVCoUeLhWwTKLeW11fP3paqOtQNT5b9vSgMMfd+1A==", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "putout": ">=35" + } + }, + "node_modules/@putout/plugin-labels": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-labels/-/plugin-labels-1.0.0.tgz", + "integrity": "sha512-kQ0R2cfmv+IiWUTZnCLZxmmxss5HiUPk6WA5lJTjbKMgRMUt6w3aZeeD23nbqqL8BXpT/OkQ242tmY7EXRCM7A==", + "dependencies": { + "fullstore": "^3.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "putout": ">=36" + } + }, "node_modules/@putout/plugin-logical-expressions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-logical-expressions/-/plugin-logical-expressions-5.0.0.tgz", - "integrity": "sha512-E4o54IUziUL2JsP/4znA3/+4GrmZ6cb07Yy8nnEac9cbymRgoX2bam2YfO3kG5vFZTrlWfL9XI7UGBR5/1PTcw==", + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-logical-expressions/-/plugin-logical-expressions-6.0.0.tgz", + "integrity": "sha512-MSGeKSqELMTq+skt9zGACqlQh4SZj1Tkrxm3vn/37KaSOt4f31X7kRpkN6BNZels9wmenZ6Bpb9mY61RXFNwcA==", "engines": { "node": ">=16" }, "peerDependencies": { - "putout": ">=32" + "putout": ">=35" } }, "node_modules/@putout/plugin-madrun": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-madrun/-/plugin-madrun-18.0.0.tgz", - "integrity": "sha512-Wo8xOg3ynSvlWKB274vHR/kYd0gA9+NxCE/SU4Dr918Co7JdlMhqyw0Ph51TaoGqWtd7isdEfw7sN+7tsWppKA==", + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-madrun/-/plugin-madrun-19.0.0.tgz", + "integrity": "sha512-zz6lxOYVCSsPNc4rJOAyWs1JCPstFlUXG/+HSJl495sg1SU5S5kCKviT7na0wZH8/YPBvUleltXycU3RvB6soA==", "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "putout": ">=33" + "putout": ">=36" } }, "node_modules/@putout/plugin-math": { @@ -4145,14 +4171,14 @@ } }, "node_modules/@putout/plugin-merge-destructuring-properties": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-merge-destructuring-properties/-/plugin-merge-destructuring-properties-8.0.0.tgz", - "integrity": "sha512-XI53Sum3Ypf3g45ZYSmQW5oa/7dDHDUIHfQXUxUuhgjt1cOidMqkd+dUaMl8OjU/OyQr3B3yNm7asXZF+tZVBQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-merge-destructuring-properties/-/plugin-merge-destructuring-properties-9.0.0.tgz", + "integrity": "sha512-sPY2o/pkrY0vwfRSfVTuVJb9rtDceWuZFLZk/o3hjIaN4KDhwuF/SN2w5w2rcC46fUbTZsQ9vpGTUn/7RXP7rw==", "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "putout": ">=29" + "putout": ">=35" } }, "node_modules/@putout/plugin-merge-duplicate-functions": { @@ -4200,17 +4226,17 @@ } }, "node_modules/@putout/plugin-nodejs": { - "version": "11.9.1", - "resolved": "https://registry.npmjs.org/@putout/plugin-nodejs/-/plugin-nodejs-11.9.1.tgz", - "integrity": "sha512-vvWiWOVK7YkfxKA0P87PDlTiE8o9E1WhncrR30icOvZVC+AuHvgWqZriaUFrwIZpqfIGAsTINYYcvAEsTwGMAA==", + "version": "12.0.1", + "resolved": "https://registry.npmjs.org/@putout/plugin-nodejs/-/plugin-nodejs-12.0.1.tgz", + "integrity": "sha512-UmeAPXr2txeA0AsdxzNGLINJK46vWmeRlxVbTpbyJ/4qsJ6Gs7pCWteZSgbKqvqxBKSAOkRZwRahBI5W76qGSA==", "dependencies": { "just-camel-case": "^6.2.0" }, "engines": { - "node": ">=18" + "node": ">=18.6" }, "peerDependencies": { - "putout": ">=35" + "putout": ">=36" } }, "node_modules/@putout/plugin-npmignore": { @@ -4225,14 +4251,14 @@ } }, "node_modules/@putout/plugin-package-json": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-package-json/-/plugin-package-json-7.2.0.tgz", - "integrity": "sha512-Q7gsQYWE3LlYAnKo3rxuzua5S+dx1Ka9o3Db21Ny9MxXE0GrFNPO6H8kielobjvEZe0bK17ACrL1PtZaEJ73YQ==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-package-json/-/plugin-package-json-8.3.0.tgz", + "integrity": "sha512-tnz9vlOdU28YtIbuAhTSh6AgDxhVOLiRDCN2VQtHEJIBtN+dExb9YaUuE7oB5au5wpCXilpdPwYnWDwUjzCbHA==", "engines": { "node": ">=18" }, "peerDependencies": { - "putout": ">=34" + "putout": ">=36" } }, "node_modules/@putout/plugin-promises": { @@ -4250,12 +4276,12 @@ } }, "node_modules/@putout/plugin-putout": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-putout/-/plugin-putout-20.0.0.tgz", - "integrity": "sha512-Sztm3XG1td1qeX0kT094HxBO/z+yh9ta1Bl8njddpPdW/QWvX41R1JVZnqNGgm+FxLFKB8K9/VTgJmUPMwRjyQ==", + "version": "21.4.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-putout/-/plugin-putout-21.4.0.tgz", + "integrity": "sha512-C2I06vpmRGQmvQuDf9V/RyT8UfuIIUIXMlSEk8sar7NxU3rkYoZm4ZiFm3nkldixiKfJrEUZVW0/rZeNMtpBEQ==", "dependencies": { "fullstore": "^3.0.0", - "just-camel-case": "^6.0.1", + "just-camel-case": "^6.2.0", "parse-import-specifiers": "^1.0.2", "try-catch": "^3.0.0" }, @@ -4263,33 +4289,33 @@ "node": ">=18" }, "peerDependencies": { - "putout": ">=35" + "putout": ">=36" } }, "node_modules/@putout/plugin-putout-config": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-putout-config/-/plugin-putout-config-5.0.0.tgz", - "integrity": "sha512-+/3sWBhr0lbCp6SMAO6xiQbfFvSkIg7Ysv25TtkpH30bbO1NvA9Ab/l53WkusyVXSejFJdWaxvYZXoC8llCz5Q==", + "version": "6.9.3", + "resolved": "https://registry.npmjs.org/@putout/plugin-putout-config/-/plugin-putout-config-6.9.3.tgz", + "integrity": "sha512-/jImoMGZbeHnM37p9SQkHfq3vTxwM3Yzg8I/MPibDcD3dt+368R24fhYnqxCfe0Yfd4fZC1VNkVox0/nkcwwAA==", "engines": { "node": ">=18" }, "peerDependencies": { - "putout": ">=34" + "putout": ">=36" } }, "node_modules/@putout/plugin-regexp": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-regexp/-/plugin-regexp-8.0.0.tgz", - "integrity": "sha512-SD+MlFgg6r9bav3TtA9FlBJyMrAC6HACU9VuMeKyqCeBqAtm7PvBIq2b0IWIjG2sKo5nV9nN3egSvVKeczDrtQ==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-regexp/-/plugin-regexp-9.0.0.tgz", + "integrity": "sha512-dH1eKO7mobHb6JTFmOzKfEuDNqbocWaAZmxcwu8t7b58dwi73gq6SmXhVf3ZzBDDU56IGcUKb4nvDlZC4xIXIQ==", "dependencies": { "regexp-tree": "^0.1.21", "try-catch": "^3.0.0" }, "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "putout": ">=32" + "putout": ">=35" } }, "node_modules/@putout/plugin-remove-console": { @@ -4383,6 +4409,17 @@ "putout": ">=25" } }, + "node_modules/@putout/plugin-remove-quotes-from-import-assertions": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-remove-quotes-from-import-assertions/-/plugin-remove-quotes-from-import-assertions-1.0.0.tgz", + "integrity": "sha512-jV5vwffYOTHdXCZ9VWkV76dcgOuppV6xkz41SYYD6WhAARTeypqJY0El+qQnr8F1kWiS+aKC/X/IWgvT+s/2Aw==", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "putout": ">=29" + } + }, "node_modules/@putout/plugin-remove-unreachable-code": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@putout/plugin-remove-unreachable-code/-/plugin-remove-unreachable-code-1.2.0.tgz", @@ -4395,25 +4432,25 @@ } }, "node_modules/@putout/plugin-remove-unreferenced-variables": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-remove-unreferenced-variables/-/plugin-remove-unreferenced-variables-3.1.0.tgz", - "integrity": "sha512-Ve62OjbpmY76Z8fi/lv8PM4i1Adk6KaYfuQCwzZy9QtOBIFXyhWgJKEUPLPoJGKF2oH6RmIc7xyrJwb6F14Sig==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-remove-unreferenced-variables/-/plugin-remove-unreferenced-variables-4.0.0.tgz", + "integrity": "sha512-tnnz/WTcxFg5pAt7VC5X0rNavkMKpCAPLjv1sF6b66KjB1sotr7V3QE0a4vqo2SwVriPH3/MeH1/AftcT58Cxg==", "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "putout": ">=30" + "putout": ">=35" } }, "node_modules/@putout/plugin-remove-unused-expressions": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-remove-unused-expressions/-/plugin-remove-unused-expressions-8.0.0.tgz", - "integrity": "sha512-2B644t6rXv4TM4+pfTABE/yf+w1b2UF/A0jGV/uZBHMmlMuqDb0PMFeZK9OvgW56nlgbUHbqUm3KJs9yIb+4Qw==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-remove-unused-expressions/-/plugin-remove-unused-expressions-9.0.0.tgz", + "integrity": "sha512-vw8SVtr9E8c7sjuf6akAwhRYjxKIJt2K9qgUPaN5KtwGWwly0Q2h7Vuthf0ms/0YusEIfOhu4sjN2lqWYTsQfQ==", "engines": { "node": ">=18" }, "peerDependencies": { - "putout": ">=34" + "putout": ">=35" } }, "node_modules/@putout/plugin-remove-unused-for-of-variables": { @@ -4427,6 +4464,17 @@ "putout": ">=25" } }, + "node_modules/@putout/plugin-remove-unused-labels": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@putout/plugin-remove-unused-labels/-/plugin-remove-unused-labels-1.0.2.tgz", + "integrity": "sha512-cDyMWovbcPclTOJh9ZM0BTw4KyQndrzKwtOKNG1dhfStLWZrux95VgO6hFwdYM8yPGj3RsA3mJLn3W26+DwJJg==", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "putout": ">=36" + } + }, "node_modules/@putout/plugin-remove-unused-private-fields": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/@putout/plugin-remove-unused-private-fields/-/plugin-remove-unused-private-fields-2.1.0.tgz", @@ -4450,14 +4498,14 @@ } }, "node_modules/@putout/plugin-remove-useless-arguments": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-remove-useless-arguments/-/plugin-remove-useless-arguments-8.0.0.tgz", - "integrity": "sha512-rW5a2FGqYta+vIXvTGWlyZmBAHMmmTLjqzWCAnUAxquWhI9JaedKXlEccQ2j9xKc4sqLzqvj3AiKGjdUY3jB6Q==", + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-remove-useless-arguments/-/plugin-remove-useless-arguments-9.0.0.tgz", + "integrity": "sha512-+t52suTlLsmDx7p27voVch0MeQEy9himjB7hqgrab1BhSYigu88OQhNy6l7xGnIpkmvw1vu3Npn1aDudz3AEAg==", "engines": { "node": ">=16" }, "peerDependencies": { - "putout": ">=31" + "putout": ">=36" } }, "node_modules/@putout/plugin-remove-useless-array": { @@ -4505,14 +4553,14 @@ } }, "node_modules/@putout/plugin-remove-useless-constructor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-remove-useless-constructor/-/plugin-remove-useless-constructor-1.0.0.tgz", - "integrity": "sha512-K/HAWhsO65T1pPkYjHEH1u8pG7sz69sqzU509b4mWQx6C4rWNRCEkucuF1MQT2eNaawrHE+TUfzJOWoQ2J90vw==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-remove-useless-constructor/-/plugin-remove-useless-constructor-2.0.0.tgz", + "integrity": "sha512-nssmppJkz2d0xTzmPKIMtFgAyicRff4q9VuwLRahnUZ8NPN6kVdMoXb73VGy7ZYd5nMlGg/rxaF0hgZPqQ2R8Q==", "engines": { - "node": ">=14" + "node": ">=18" }, "peerDependencies": { - "putout": ">=16" + "putout": ">=36" } }, "node_modules/@putout/plugin-remove-useless-continue": { @@ -4526,6 +4574,17 @@ "putout": ">=28" } }, + "node_modules/@putout/plugin-remove-useless-delete": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@putout/plugin-remove-useless-delete/-/plugin-remove-useless-delete-1.0.4.tgz", + "integrity": "sha512-Gsq1UW8cOTwldLQHU6xEZHVNQQCEyM0diSyvufVxqMvAAVx5fvtbK/Kzosk56OB0lXn3SjiPg/EtGiZt0vwaLg==", + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "putout": ">=36" + } + }, "node_modules/@putout/plugin-remove-useless-escape": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/@putout/plugin-remove-useless-escape/-/plugin-remove-useless-escape-6.0.0.tgz", @@ -4578,6 +4637,17 @@ "putout": ">=25" } }, + "node_modules/@putout/plugin-remove-useless-push": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@putout/plugin-remove-useless-push/-/plugin-remove-useless-push-1.0.3.tgz", + "integrity": "sha512-G0e0QY6p9bd1HU5h8NoV/fMGI6+O2AWGXxQzkgPHiwtpklk4nIXkGtCLpZqNFpoa/bT9MvXUL9cgWfL5tIaoMQ==", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "putout": ">=36" + } + }, "node_modules/@putout/plugin-remove-useless-replace": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@putout/plugin-remove-useless-replace/-/plugin-remove-useless-replace-1.0.4.tgz", @@ -4590,14 +4660,14 @@ } }, "node_modules/@putout/plugin-remove-useless-return": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-remove-useless-return/-/plugin-remove-useless-return-6.0.0.tgz", - "integrity": "sha512-/ZWWRlLTsqNQUxnTgh8pc5C5Wg9glSOgRv3593mTlJyN6nU87A9gu9TmMumwYEUgR3XTGQO+3X9DVVUmAjPxBg==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-remove-useless-return/-/plugin-remove-useless-return-7.0.0.tgz", + "integrity": "sha512-YXg8StDHppFkuOzivde33g4idADikbuJSmri/jrzp/bsSw3mA0OfHhsSDJs8QKTfAwTHX71Wg2zhVzoq4vV5hg==", "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "putout": ">=33" + "putout": ">=35" } }, "node_modules/@putout/plugin-remove-useless-spread": { @@ -4623,14 +4693,14 @@ } }, "node_modules/@putout/plugin-remove-useless-variables": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-remove-useless-variables/-/plugin-remove-useless-variables-10.0.0.tgz", - "integrity": "sha512-7Xco4Jc25uYrdQG9GD43fiHUE6LrEFfrjtJ6E6x5uJKaC+Lqw/GngtebRPd5WTRAsS4feDlDVDV/bbuDZnNELQ==", + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-remove-useless-variables/-/plugin-remove-useless-variables-12.5.0.tgz", + "integrity": "sha512-GUS264h48H/FCxZVcSEDZtolB1Hei6Qv8uxkTDYiJeASbURh6iVsnHsAZq/jea4whR65lrp6B5QtoCWPRNjKmQ==", "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "putout": ">=32" + "putout": ">=36" } }, "node_modules/@putout/plugin-reuse-duplicate-init": { @@ -4656,14 +4726,14 @@ } }, "node_modules/@putout/plugin-simplify-boolean-return": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-simplify-boolean-return/-/plugin-simplify-boolean-return-1.1.0.tgz", - "integrity": "sha512-c9yJVDX2MyoNeboj/saTiWUg049FYKFYi/wxuer+glWFFydXlyGwxEBwIuqitDaiqMkKGTr8zh7uF/RXDmxB9A==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-simplify-boolean-return/-/plugin-simplify-boolean-return-2.0.0.tgz", + "integrity": "sha512-/KNrebqH/sRnk8cUqylR/uCTbI+AQ3Upag9qpozm+XkL/vCzyad5zSLqxet7qJOBwzS4dDFSzlRm2tjJAHS+SA==", "engines": { - "node": ">=16" + "node": ">=18" }, "peerDependencies": { - "putout": ">=29" + "putout": ">=35" } }, "node_modules/@putout/plugin-simplify-ternary": { @@ -4691,6 +4761,17 @@ "putout": ">=35" } }, + "node_modules/@putout/plugin-split-assignment-expressions": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-split-assignment-expressions/-/plugin-split-assignment-expressions-1.2.0.tgz", + "integrity": "sha512-mDS6l5R/Iu+7tfW3YL4NgpG5cX30ETxdDby42aDXh1Z+SpzapCK3LPseezQZWFwC4xKLGdQzOce1ZzrHydpe/w==", + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "putout": ">=35" + } + }, "node_modules/@putout/plugin-split-nested-destructuring": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@putout/plugin-split-nested-destructuring/-/plugin-split-nested-destructuring-3.0.0.tgz", @@ -4714,47 +4795,47 @@ } }, "node_modules/@putout/plugin-tape": { - "version": "14.2.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-tape/-/plugin-tape-14.2.0.tgz", - "integrity": "sha512-odoZS3Z+u1vO4jqpKCkOqRnBC/ZjzoEgSLJXSL1KWZAL6pBtnxnQnsNr5QPFdMmnpDyUu0iUQaV8ZpZ2UpJKxQ==", + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-tape/-/plugin-tape-15.1.0.tgz", + "integrity": "sha512-c3pSvJ2LKGlEqsLyeYembhLHvXQwmrxEyrNWITPNhZAjeVAi1wwTr6YRKw41YclW2iAbe3fxZIgZK4jwjPnNeQ==", "engines": { - "node": ">=18" + "node": ">=18.6" }, "peerDependencies": { - "putout": ">=35" + "putout": ">=36" } }, "node_modules/@putout/plugin-try-catch": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-try-catch/-/plugin-try-catch-3.0.0.tgz", - "integrity": "sha512-JtmeB9ZXvWZdnnmw8KZSLBxNzMQ5YUqn3bt+bB46PXXqicOhoHcZBx/O4Rn0TvmfIztf+Li2yyF4tPXfpNVjUQ==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-try-catch/-/plugin-try-catch-4.0.0.tgz", + "integrity": "sha512-ucJ0Qo8imalzjHsW/TmiEo//gqA/J6kEQbLY6nRlLsD/GeK9GehtMRwJCmTHgofsjXWUTDL5q6b8Xq3c3X4D/g==", "engines": { "node": ">=16" }, "peerDependencies": { - "putout": ">=30" + "putout": ">=36" } }, "node_modules/@putout/plugin-types": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-types/-/plugin-types-4.1.0.tgz", - "integrity": "sha512-HGcQoX/MeW8H5hzEOuR+RzgrXkZuN4WEo59DX0+0qYoetUSlshMgwH4+6LhxaTIpIceI0ttKnDaK7RDlqpflCw==", + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@putout/plugin-types/-/plugin-types-5.1.0.tgz", + "integrity": "sha512-Oy4e2/P2w56TedzIk5rh/u2Yd3EovMhjxnrAjMFI6R/h7MM8kQSwI4RQFCWTgxQcDvLfw0FS7uOw09eNSJNOkQ==", "engines": { "node": ">=18" }, "peerDependencies": { - "putout": ">=35" + "putout": ">=36" } }, "node_modules/@putout/plugin-typescript": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/@putout/plugin-typescript/-/plugin-typescript-7.3.0.tgz", - "integrity": "sha512-3+RbBpzcc2heOFK3t67FAXBwWU7E3NkWOg2KIweUe7a74WPA3CumUpm/ZFl81zRrczvm1bwzfaQNmVtTQtfT/A==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/@putout/plugin-typescript/-/plugin-typescript-8.2.1.tgz", + "integrity": "sha512-96RI7ebINqeSIsXQ8614zzvPvJ6tiWF4yYNIBIBxceeuqs+PnUkCfPVRMZFyX2BbbGxnZzCXVgn0wCXLaxs+vQ==", "engines": { "node": ">=18" }, "peerDependencies": { - "putout": ">=35" + "putout": ">=36" } }, "node_modules/@putout/plugin-webpack": { @@ -4870,6 +4951,20 @@ "node": ">=18" } }, + "node_modules/@putout/processor-typescript": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@putout/processor-typescript/-/processor-typescript-9.0.1.tgz", + "integrity": "sha512-gAj4g3+WSe93D/3ibCmzBFmgibwv2N/X7SmX30PwZ0GCHntNKOKO1N5vKeZFc8EprHHtzjMlQ/vX9qOP10zrpA==", + "dependencies": { + "ts-morph": "^23.0.0" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "putout": ">=35" + } + }, "node_modules/@putout/processor-yaml": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/@putout/processor-yaml/-/processor-yaml-8.1.0.tgz", @@ -4884,11 +4979,6 @@ "node": ">=18" } }, - "node_modules/@putout/processor-yaml/node_modules/just-kebab-case": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/just-kebab-case/-/just-kebab-case-4.2.0.tgz", - "integrity": "sha512-p2BdO7o4BI+pMun3J+dhaOfYan5JsZrw9wjshRjkWY9+p+u+kKSMhNWYnot2yHDR9CSahZ9iT3dcqJ+V72qHMw==" - }, "node_modules/@putout/processor-yaml/node_modules/yaml": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", @@ -4901,9 +4991,9 @@ } }, "node_modules/@putout/quick-lint": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@putout/quick-lint/-/quick-lint-1.2.0.tgz", - "integrity": "sha512-rxvbgCbcha8gdqNzUv5JeE5nmd3J+tY82IEJ4nAkBNis4GO0I5s2pXF3liTf1q2kLwnsCX7vcp5jUW3AavyfFA==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@putout/quick-lint/-/quick-lint-1.4.0.tgz", + "integrity": "sha512-/Dvl3xLOESVlbSGhcIzqBpKUAXp5Hn7exnqIXFx8+dMhQPxviyxTf11uyIvz3yOyoio+r9QhppK0Ys/Yx4OB1g==", "dependencies": { "once": "^1.4.0" }, @@ -5068,6 +5158,45 @@ "node": ">=10" } }, + "node_modules/@ts-morph/common": { + "version": "0.24.0", + "resolved": "https://registry.npmjs.org/@ts-morph/common/-/common-0.24.0.tgz", + "integrity": "sha512-c1xMmNHWpNselmpIqursHeOHHBTIsJLbB+NuovbTTRCNiTLEr/U9dbJ8qy0jd/O2x5pc3seWuOUN5R2IoOTp8A==", + "dependencies": { + "fast-glob": "^3.3.2", + "minimatch": "^9.0.4", + "mkdirp": "^3.0.1", + "path-browserify": "^1.0.1" + } + }, + "node_modules/@ts-morph/common/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@ts-morph/common/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@types/cacheable-request": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", @@ -5994,6 +6123,14 @@ "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, + "node_modules/acorn-typescript": { + "version": "1.4.13", + "resolved": "https://registry.npmjs.org/acorn-typescript/-/acorn-typescript-1.4.13.tgz", + "integrity": "sha512-xsc9Xv0xlVfwp2o7sQ+GCQ1PgbkdcpWdTzrwXxO3xDMTAywVS3oXVOcOHuRjAPkS4P9b+yc/qNF15460v+jp4Q==", + "peerDependencies": { + "acorn": ">=8.9.0" + } + }, "node_modules/ajv": { "version": "6.12.6", "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", @@ -7033,6 +7170,11 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/code-block-writer": { + "version": "13.0.3", + "resolved": "https://registry.npmjs.org/code-block-writer/-/code-block-writer-13.0.3.tgz", + "integrity": "sha512-Oofo0pq3IKnsFtuHqSF7TqBfr71aeyZDVJ0HpmqB7FBM2qEigL0iPONSCZSO9pE9dZTAxANe5XHG9Uy0YMv8cg==" + }, "node_modules/code-red": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/code-red/-/code-red-1.0.4.tgz", @@ -9973,18 +10115,19 @@ "integrity": "sha512-xYfnw62CKG8nLkZBfWbhWwDw02CHty86jfPcc2cr3ZfeuK9ysoVPPEUxf21bAD/rWAgk52SuBrLJlefNy8mvFg==" }, "node_modules/goldstein": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/goldstein/-/goldstein-5.7.2.tgz", - "integrity": "sha512-RpfXvbmJBVxUgZg5imWIWBoabhEf56eAUIeBZZDyBQPi00QmBGICuTV5n3XnBL1RsBWffYnBxyqCE85jBjBf0w==", + "version": "5.18.0", + "resolved": "https://registry.npmjs.org/goldstein/-/goldstein-5.18.0.tgz", + "integrity": "sha512-G/HR09Z15hoRCC2x97r2x1JIgKapUZDcAiT1yYcVtvXznYmY+OaFimMqVJq0LpOy1eehZN7aZaM2ZcPSqf648g==", "dependencies": { "@putout/plugin-declare": "^4.0.0", - "@putout/plugin-logical-expressions": "^5.0.0", - "@putout/plugin-try-catch": "^3.0.0", - "@putout/printer": "^8.0.1", + "@putout/plugin-logical-expressions": "^6.0.0", + "@putout/plugin-try-catch": "^4.0.0", + "@putout/printer": "^9.0.1", "acorn": "^8.7.1", + "acorn-typescript": "^1.4.13", "estree-to-babel": "^9.0.0", "estree-util-attach-comments": "^3.0.0", - "putout": "^35.0.0", + "putout": "^36.0.3", "try-catch": "^3.0.1" }, "bin": { @@ -9994,6 +10137,24 @@ "node": ">=18" } }, + "node_modules/goldstein/node_modules/@putout/printer": { + "version": "9.18.0", + "resolved": "https://registry.npmjs.org/@putout/printer/-/printer-9.18.0.tgz", + "integrity": "sha512-sBwgIacZgfB0tB3hK0YF4xWJh9MnNMEiKsfgyynacrRNBu+CrqsB34bBXBjlLPQJ+SRLuUeRmtLxve2Bvgw17Q==", + "dependencies": { + "@putout/babel": "^2.0.0", + "@putout/compare": "^14.0.0", + "@putout/operate": "^12.0.0", + "@putout/operator-json": "^2.0.0", + "fullstore": "^3.0.0", + "just-snake-case": "^3.2.0", + "parse-import-specifiers": "^1.0.1", + "rendy": "^4.0.0" + }, + "engines": { + "node": ">=18" + } + }, "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -11500,9 +11661,9 @@ "integrity": "sha512-ICenRLXwkQYLk3UyvLQZ+uKuwFVJ3JHFYFn7F2782G2Mv2hW8WPePqgdhpnjGaqkYtSVWnyCESZhGXUmY3/bEg==" }, "node_modules/just-kebab-case": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/just-kebab-case/-/just-kebab-case-1.1.0.tgz", - "integrity": "sha512-QkuwuBMQ9BQHMUEkAtIA4INLrkmnnveqlFB1oFi09gbU0wBdZo6tTnyxNWMR84zHxBuwK7GLAwqN8nrvVxOLTA==" + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/just-kebab-case/-/just-kebab-case-4.2.0.tgz", + "integrity": "sha512-p2BdO7o4BI+pMun3J+dhaOfYan5JsZrw9wjshRjkWY9+p+u+kKSMhNWYnot2yHDR9CSahZ9iT3dcqJ+V72qHMw==" }, "node_modules/just-snake-case": { "version": "3.2.0", @@ -13011,6 +13172,11 @@ "node": ">=0.10.0" } }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==" + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -13557,9 +13723,9 @@ } }, "node_modules/putout": { - "version": "35.26.0", - "resolved": "https://registry.npmjs.org/putout/-/putout-35.26.0.tgz", - "integrity": "sha512-lRJoXc3nfWfGmMy5i78dGRAs7mcvAayY9DzDyGWEnehCdeMXKJtf+PAoflPuzZHE0QHkx9XQygovgSP6dxmSfQ==", + "version": "36.9.0", + "resolved": "https://registry.npmjs.org/putout/-/putout-36.9.0.tgz", + "integrity": "sha512-zIlL5Vv1/ZLia/qHbEc1F5mZxXlWnBSkdumYLvd5IeUvxDjnuSdwNJM19UADIJ4yRxlFrTwtbVqZF5704nAgAw==", "dependencies": { "@putout/babel": "^2.0.0", "@putout/cli-cache": "^3.0.0", @@ -13568,12 +13734,12 @@ "@putout/cli-match": "^2.0.0", "@putout/cli-ruler": "^3.0.0", "@putout/cli-staged": "^1.0.0", - "@putout/cli-validate-args": "^1.0.0", + "@putout/cli-validate-args": "^2.0.0", "@putout/compare": "^14.0.0", - "@putout/engine-loader": "^13.0.0", + "@putout/engine-loader": "^14.0.0", "@putout/engine-parser": "^10.0.0", - "@putout/engine-processor": "^11.0.0", - "@putout/engine-reporter": "^1.0.0", + "@putout/engine-processor": "^12.0.0", + "@putout/engine-reporter": "^2.0.0", "@putout/engine-runner": "^21.0.0", "@putout/eslint": "^3.0.0", "@putout/formatter-codeframe": "^7.0.0", @@ -13600,32 +13766,32 @@ "@putout/plugin-apply-dot-notation": "^2.0.0", "@putout/plugin-apply-early-return": "^3.0.0", "@putout/plugin-apply-flat-map": "^2.0.0", - "@putout/plugin-apply-optional-chaining": "^5.0.0", - "@putout/plugin-apply-overrides": "^1.0.0", + "@putout/plugin-apply-optional-chaining": "^6.0.0", + "@putout/plugin-apply-overrides": "^2.0.0", "@putout/plugin-apply-starts-with": "^1.0.0", "@putout/plugin-apply-template-literals": "^3.0.0", "@putout/plugin-browserlist": "^2.0.0", - "@putout/plugin-conditions": "^4.0.0", + "@putout/plugin-conditions": "^5.0.0", "@putout/plugin-convert-apply-to-spread": "^4.0.0", - "@putout/plugin-convert-arguments-to-rest": "^2.0.0", + "@putout/plugin-convert-arguments-to-rest": "^3.0.0", "@putout/plugin-convert-array-copy-to-slice": "^3.0.0", "@putout/plugin-convert-assignment-to-arrow-function": "^1.0.0", "@putout/plugin-convert-assignment-to-comparison": "^2.0.0", + "@putout/plugin-convert-assignment-to-declaration": "^1.0.0", "@putout/plugin-convert-concat-to-flat": "^1.0.0", - "@putout/plugin-convert-const-to-let": "^1.0.0", + "@putout/plugin-convert-const-to-let": "^3.0.0", "@putout/plugin-convert-index-of-to-includes": "^2.0.0", - "@putout/plugin-convert-label-to-object": "^1.0.0", "@putout/plugin-convert-object-assign-to-merge-spread": "^6.0.0", "@putout/plugin-convert-object-entries-to-array-entries": "^3.0.0", - "@putout/plugin-convert-optional-to-logical": "^3.0.0", + "@putout/plugin-convert-optional-to-logical": "^4.0.0", "@putout/plugin-convert-quotes-to-backticks": "^3.0.0", "@putout/plugin-convert-template-to-string": "^2.0.0", "@putout/plugin-convert-to-arrow-function": "^4.0.0", "@putout/plugin-coverage": "^1.0.0", "@putout/plugin-declare": "^4.0.0", - "@putout/plugin-declare-before-reference": "^3.0.0", + "@putout/plugin-declare-before-reference": "^4.0.0", "@putout/plugin-declare-imports-first": "^2.0.0", - "@putout/plugin-eslint": "^8.0.0", + "@putout/plugin-eslint": "^9.0.0", "@putout/plugin-extract-object-properties": "^9.0.0", "@putout/plugin-extract-sequence-expressions": "^3.0.0", "@putout/plugin-filesystem": "^5.0.0", @@ -13633,22 +13799,24 @@ "@putout/plugin-generators": "^1.0.0", "@putout/plugin-github": "^12.0.0", "@putout/plugin-gitignore": "^6.0.0", - "@putout/plugin-logical-expressions": "^5.0.0", - "@putout/plugin-madrun": "^18.0.0", + "@putout/plugin-group-imports-by-source": "^1.0.0", + "@putout/plugin-labels": "^1.0.0", + "@putout/plugin-logical-expressions": "^6.0.0", + "@putout/plugin-madrun": "^19.0.0", "@putout/plugin-math": "^2.0.0", "@putout/plugin-maybe": "^2.0.0", - "@putout/plugin-merge-destructuring-properties": "^8.0.0", + "@putout/plugin-merge-destructuring-properties": "^9.0.0", "@putout/plugin-merge-duplicate-functions": "^2.0.0", "@putout/plugin-merge-duplicate-imports": "^11.0.0", "@putout/plugin-montag": "^2.0.0", "@putout/plugin-new": "^3.0.1", - "@putout/plugin-nodejs": "^11.0.0", + "@putout/plugin-nodejs": "^12.0.0", "@putout/plugin-npmignore": "^5.0.0", - "@putout/plugin-package-json": "^7.0.0", + "@putout/plugin-package-json": "^8.0.0", "@putout/plugin-promises": "^15.0.0", - "@putout/plugin-putout": "^20.0.0", - "@putout/plugin-putout-config": "^5.0.0", - "@putout/plugin-regexp": "^8.0.0", + "@putout/plugin-putout": "^21.0.0", + "@putout/plugin-putout-config": "^6.0.0", + "@putout/plugin-regexp": "^9.0.0", "@putout/plugin-remove-console": "^6.0.0", "@putout/plugin-remove-constant-conditions": "^4.0.0", "@putout/plugin-remove-debugger": "^7.0.0", @@ -13657,39 +13825,44 @@ "@putout/plugin-remove-empty": "^12.0.0", "@putout/plugin-remove-iife": "^4.0.0", "@putout/plugin-remove-nested-blocks": "^6.0.0", + "@putout/plugin-remove-quotes-from-import-assertions": "^1.0.0", "@putout/plugin-remove-unreachable-code": "^1.0.0", - "@putout/plugin-remove-unreferenced-variables": "^3.0.0", - "@putout/plugin-remove-unused-expressions": "^8.0.0", + "@putout/plugin-remove-unreferenced-variables": "^4.0.0", + "@putout/plugin-remove-unused-expressions": "^9.0.0", "@putout/plugin-remove-unused-for-of-variables": "^3.0.0", + "@putout/plugin-remove-unused-labels": "^1.0.1", "@putout/plugin-remove-unused-private-fields": "^2.0.0", "@putout/plugin-remove-unused-variables": "^9.0.0", - "@putout/plugin-remove-useless-arguments": "^8.0.0", + "@putout/plugin-remove-useless-arguments": "^9.0.0", "@putout/plugin-remove-useless-array": "^1.0.0", "@putout/plugin-remove-useless-array-constructor": "^2.0.0", "@putout/plugin-remove-useless-array-entries": "^1.0.0", "@putout/plugin-remove-useless-assign": "^1.0.0", - "@putout/plugin-remove-useless-constructor": "^1.0.0", + "@putout/plugin-remove-useless-constructor": "^2.0.0", "@putout/plugin-remove-useless-continue": "^2.0.0", + "@putout/plugin-remove-useless-delete": "^1.0.1", "@putout/plugin-remove-useless-escape": "^6.0.0", "@putout/plugin-remove-useless-functions": "^3.0.0", "@putout/plugin-remove-useless-map": "^1.0.0", "@putout/plugin-remove-useless-operand": "^2.0.0", + "@putout/plugin-remove-useless-push": "^1.0.0", "@putout/plugin-remove-useless-replace": "^1.0.1", - "@putout/plugin-remove-useless-return": "^6.0.0", + "@putout/plugin-remove-useless-return": "^7.0.0", "@putout/plugin-remove-useless-spread": "^11.0.0", "@putout/plugin-remove-useless-template-expressions": "^2.0.0", - "@putout/plugin-remove-useless-variables": "^10.0.0", + "@putout/plugin-remove-useless-variables": "^12.0.0", "@putout/plugin-reuse-duplicate-init": "^5.0.0", "@putout/plugin-simplify-assignment": "^3.0.0", - "@putout/plugin-simplify-boolean-return": "^1.0.0", + "@putout/plugin-simplify-boolean-return": "^2.0.0", "@putout/plugin-simplify-ternary": "^7.0.0", "@putout/plugin-sort-imports-by-specifiers": "^1.0.0", + "@putout/plugin-split-assignment-expressions": "^1.0.0", "@putout/plugin-split-nested-destructuring": "^3.0.0", "@putout/plugin-split-variable-declarations": "^3.0.0", - "@putout/plugin-tape": "^14.0.0", - "@putout/plugin-try-catch": "^3.0.0", - "@putout/plugin-types": "^4.0.0", - "@putout/plugin-typescript": "^7.0.0", + "@putout/plugin-tape": "^15.0.0", + "@putout/plugin-try-catch": "^4.0.0", + "@putout/plugin-types": "^5.0.0", + "@putout/plugin-typescript": "^8.0.0", "@putout/plugin-webpack": "^3.0.0", "@putout/processor-css": "^9.0.0", "@putout/processor-filesystem": "^4.0.0", @@ -13698,7 +13871,6 @@ "@putout/processor-json": "^9.0.0", "@putout/processor-markdown": "^12.0.0", "@putout/processor-yaml": "^8.0.0", - "@putout/quick-lint": "^1.0.0", "@putout/traverse": "^10.0.0", "ajv": "^8.8.2", "chalk": "^5.3.0", @@ -13709,12 +13881,12 @@ "fast-glob": "^3.2.2", "find-up": "^7.0.0", "fullstore": "^3.0.0", - "goldstein": "^5.3.0", "ignore": "^5.0.4", "is-relative": "^1.0.0", "nano-memoize": "^3.0.11", "once": "^1.4.0", - "picomatch": "^4.0.1", + "picomatch": "^4.0.2", + "samadhi": "^2.10.0", "try-catch": "^3.0.0", "try-to-catch": "^3.0.0", "wraptile": "^3.0.0", @@ -14842,6 +15014,25 @@ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, + "node_modules/samadhi": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/samadhi/-/samadhi-2.10.0.tgz", + "integrity": "sha512-rOOcZfHYK3haArS4/RaD+DDcPrfMC7G7dCRrzjHLaLjIj+VTs/cbWcbFkCAGwS0OY2DuiUAzBVFVX302zGzw6Q==", + "dependencies": { + "@putout/quick-lint": "^1.2.0", + "goldstein": "^5.16.0", + "js-tokens": "^9.0.0", + "try-catch": "^3.0.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/samadhi/node_modules/js-tokens": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.0.tgz", + "integrity": "sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==" + }, "node_modules/schema-utils": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.2.0.tgz", @@ -16234,6 +16425,15 @@ "node": ">=6.10" } }, + "node_modules/ts-morph": { + "version": "23.0.0", + "resolved": "https://registry.npmjs.org/ts-morph/-/ts-morph-23.0.0.tgz", + "integrity": "sha512-FcvFx7a9E8TUe6T3ShihXJLiJOiqyafzFKUO4aqIHDUCIvADdGNShcbc2W5PMr3LerXRv7mafvFZ9lRENxJmug==", + "dependencies": { + "@ts-morph/common": "~0.24.0", + "code-block-writer": "^13.0.1" + } + }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", diff --git a/src/main/resources/codemods/package.json b/src/main/resources/codemods/package.json index f3fae90..b4d063c 100644 --- a/src/main/resources/codemods/package.json +++ b/src/main/resources/codemods/package.json @@ -5,6 +5,7 @@ "@mui/codemod": "6.0.0", "@next/codemod": "^14.0.4", "@next/eslint-plugin-next": "^14.1.0", + "@putout/processor-typescript": "^9.0.1", "@stylistic/eslint-plugin": "1.6.1", "@typescript-eslint/eslint-plugin": "^6.18.1", "@typescript-eslint/parser": "^6.18.1", @@ -31,7 +32,7 @@ "eslint-plugin-unicorn": "^51.0.1", "eslint-plugin-vue": "^9.21.1", "eslint-webpack-plugin": "^4.0.1", - "putout": "^35.25.1", + "putout": "^36.9.0", "react": "^18.3.1", "react-declassify": "^0.2.0", "svelte": "^4.0.0", diff --git a/src/test/java/org/openrewrite/codemods/PutoutTest.java b/src/test/java/org/openrewrite/codemods/PutoutTest.java index 29ce068..20ca91f 100644 --- a/src/test/java/org/openrewrite/codemods/PutoutTest.java +++ b/src/test/java/org/openrewrite/codemods/PutoutTest.java @@ -27,7 +27,7 @@ public class PutoutTest implements RewriteTest { @Test - void noConfig() { + void noRules() { rewriteRun( spec -> spec.recipe(new Putout(null)), text( @@ -38,7 +38,7 @@ export function used() {} """, """ export function used() {} - + """, spec -> spec.path("src/Foo.js") ) @@ -54,18 +54,18 @@ void withRules() { """ function notUsed() {} export function used() {} - + if (a > b) if (b < c) console.log('hi'); """, """ function notUsed() {} - + export function used() {} if (a > b && b < c) console.log('hi'); - + """, spec -> spec.path("src/Foo.js") ) @@ -99,7 +99,7 @@ export function Test() { ); } - + """, spec -> spec.path("src/Foo.jsx") )