From 9e4f153b10567ac5994962808da65fec23509cae Mon Sep 17 00:00:00 2001 From: Igor Martyniuk Date: Tue, 7 Jul 2026 09:32:10 +0000 Subject: [PATCH] Fix/prettier one line import --- CHANGELOG.md | 3 + apps/admin/.prettierrc | 4 +- apps/admin/package.json | 1 - package-lock.json | 68 +----------------- plugins/prettier/one-line-sorted-imports.cjs | 75 ++++++++++++++++++++ 5 files changed, 82 insertions(+), 69 deletions(-) create mode 100644 plugins/prettier/one-line-sorted-imports.cjs diff --git a/CHANGELOG.md b/CHANGELOG.md index 038346f..78f1992 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,6 +15,9 @@ adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). source-builder terminology. - Updated module-generator frontend documentation to reference the new source-builder names. +- Fix prettier one line import break sorting and class order +- Removed "prettier-plugin-one-line-imports" + ## [1.0.1] - 2026-06-30 ### Fixed diff --git a/apps/admin/.prettierrc b/apps/admin/.prettierrc index 9503450..6cb0664 100644 --- a/apps/admin/.prettierrc +++ b/apps/admin/.prettierrc @@ -26,8 +26,8 @@ ], "importOrderCaseSensitive": false, "plugins": [ - "prettier-plugin-tailwindcss", "@ianvs/prettier-plugin-sort-imports", - "prettier-plugin-one-line-imports" + "../../plugins/prettier/one-line-sorted-imports.cjs", + "prettier-plugin-tailwindcss" ] } diff --git a/apps/admin/package.json b/apps/admin/package.json index f99c8fd..77fb704 100755 --- a/apps/admin/package.json +++ b/apps/admin/package.json @@ -108,7 +108,6 @@ "dotenv": "^16.5.0", "globals": "^16.1.0", "postcss": "^8.5.3", - "prettier-plugin-one-line-imports": "^1.0.3", "tailwindcss": "^4.1.7", "tsx": "^4.19.4", "vite": "^6.3.5", diff --git a/package-lock.json b/package-lock.json index c12f42d..0107704 100644 --- a/package-lock.json +++ b/package-lock.json @@ -144,7 +144,6 @@ "dotenv": "^16.5.0", "globals": "^16.1.0", "postcss": "^8.5.3", - "prettier-plugin-one-line-imports": "^1.0.3", "tailwindcss": "^4.1.7", "tsx": "^4.19.4", "vite": "^6.3.5", @@ -490,7 +489,6 @@ "resolved": "https://registry.npmjs.org/@adonisjs/application/-/application-8.4.2.tgz", "integrity": "sha512-gxyQgl1n7M/hv7ZKQOlTo2adBMehjEO0ssWSG3AGW2RXdCvkHQKlatFXMuXJMmGg2P1AWJX0LEiXey9+qxC9Uw==", "license": "MIT", - "peer": true, "dependencies": { "@poppinss/hooks": "^7.2.5", "@poppinss/macroable": "^1.0.4", @@ -512,7 +510,6 @@ "integrity": "sha512-csLdMW58cwuRjdPEDE0dqwHZCT5snCh+1sQ19HPnQ/BLKPPAvQdDRdw0atoC8LVmouB8ghXVHp3SxnVxlvXYWQ==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "@adonisjs/env": "^6.1.0", "@antfu/install-pkg": "^0.4.1", @@ -877,7 +874,6 @@ "resolved": "https://registry.npmjs.org/@adonisjs/config/-/config-5.0.3.tgz", "integrity": "sha512-dO7gkYxZsrsnR8n7d5KUpyi+Q5c6BnV2rmFDqEmEjz5AkOZLLzJJJbeHgMb+M27le7ifEUoa8MRu6RED8NMsJg==", "license": "MIT", - "peer": true, "dependencies": { "@poppinss/utils": "^6.9.4" }, @@ -890,7 +886,6 @@ "resolved": "https://registry.npmjs.org/@adonisjs/core/-/core-6.21.0.tgz", "integrity": "sha512-0NmVdl8h5A5jdeKlV+XLGjLw9aSEWXBsga1WEMugAJMJiOHf4ufDWc+Rq+KN062/0IK7or9/4yCt3TxkGJsDWw==", "license": "MIT", - "peer": true, "dependencies": { "@adonisjs/ace": "^13.4.0", "@adonisjs/application": "^8.4.2", @@ -1076,7 +1071,6 @@ "resolved": "https://registry.npmjs.org/@adonisjs/encryption/-/encryption-6.0.2.tgz", "integrity": "sha512-37XqVPsZi6zXMbC0Me1/qlcTP0uE+KAtYOFx7D7Tvtz377NL/6gqxqgpW/BopgOSD+CVDXjzO/Wx3M2UrbkJRQ==", "license": "MIT", - "peer": true, "dependencies": { "@poppinss/utils": "^6.7.3" }, @@ -1184,7 +1178,6 @@ "resolved": "https://registry.npmjs.org/@adonisjs/fold/-/fold-10.2.1.tgz", "integrity": "sha512-WuW62T3jZB0w/7C7YbDkfzIMJaEQZ2cGdf6qoeevB0zYNH4kTp2oREfTx45ndNjiN6D5GhjoR8JRpjiAfppFIA==", "license": "MIT", - "peer": true, "dependencies": { "@poppinss/utils": "^7.0.0-next.3", "parse-imports": "^2.2.1" @@ -1249,7 +1242,6 @@ "resolved": "https://registry.npmjs.org/@adonisjs/http-server/-/http-server-7.8.1.tgz", "integrity": "sha512-ScwKHJstXQbkQXSNqD6MOESowZ+WhRyDXxjSQV/T7IpyMEg/F8NxpR5jAvrpw1BaGzd3t50LrgTrb7ouD8DOpA==", "license": "MIT", - "peer": true, "dependencies": { "@paralleldrive/cuid2": "^2.2.2", "@poppinss/macroable": "^1.0.4", @@ -1314,7 +1306,6 @@ "resolved": "https://registry.npmjs.org/@adonisjs/logger/-/logger-6.0.7.tgz", "integrity": "sha512-zeWk14EuFGD+YrwLfwrzUcEKS06equr1Xn624+b28H3s0JhjmgXNfsDRlBe9X+GgJiuD8Zf3/52MX//7cGaNWQ==", "license": "MIT", - "peer": true, "dependencies": { "@poppinss/utils": "^6.10.1", "abstract-logging": "^2.0.1", @@ -1329,7 +1320,6 @@ "resolved": "https://registry.npmjs.org/@adonisjs/lucid/-/lucid-21.8.2.tgz", "integrity": "sha512-+ocmllAr77cc7EgQoDQokNpB3lz1Rmw0olcNtx7TbR8TeCAiegDAkNe1HylKzNOGX+i0kvb0FeOvSlZ9N0GmXQ==", "license": "MIT", - "peer": true, "dependencies": { "@adonisjs/presets": "^2.6.4", "@faker-js/faker": "^9.9.0", @@ -1658,7 +1648,6 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1064.0.tgz", "integrity": "sha512-6OQhE4Qpt94oTw7ruBHE2E6/PS57alsCSdemMf4c3gBSUM0emoXRRykYffFSL56oluL49AZh/DLWRnQafynbLg==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@aws-crypto/sha1-browser": "5.2.0", "@aws-crypto/sha256-browser": "5.2.0", @@ -1902,7 +1891,6 @@ "resolved": "https://registry.npmjs.org/@aws-sdk/s3-request-presigner/-/s3-request-presigner-3.1064.0.tgz", "integrity": "sha512-BYha6t2emy50ld7wvtLkrhMsibaGNlgg1TzMXrbkof3QP+9usjikabdOI429uGyhUzklC4amPnxWLzWxP+AjIw==", "license": "Apache-2.0", - "peer": true, "dependencies": { "@aws-sdk/core": "^3.974.19", "@aws-sdk/signature-v4-multi-region": "^3.996.33", @@ -2026,7 +2014,6 @@ "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -2529,7 +2516,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" }, @@ -2552,7 +2538,6 @@ } ], "license": "MIT", - "peer": true, "engines": { "node": ">=18" } @@ -2662,7 +2647,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -3084,7 +3068,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -3765,7 +3748,6 @@ "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.3.1.tgz", "integrity": "sha512-xkGBRQQab4RLwgXxoqETICr6S5JlogafbhNsidmrkVv2YRs5MLwpjoF2qpiGjQt8S9AoxtIV603s0GIUpY5eYQ==", "license": "MIT", - "peer": true, "dependencies": { "@dnd-kit/accessibility": "^3.1.1", "@dnd-kit/utilities": "^3.2.2", @@ -4676,7 +4658,6 @@ "integrity": "sha512-F0/Hrcfpy8WuxlQyAWJTEren/uxKhYonOGY4OyWmwRdeTvkh9mMSCxowZLjNkhwi/2ipqCgtXwwOk7tW0mWXkA==", "dev": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@babel/generator": "^7.26.2", "@babel/parser": "^7.26.2", @@ -4700,7 +4681,6 @@ "integrity": "sha512-dICbeEkgGRpjkm3CviOpvPfYMBZddaoW2w20pgNMm3CfvD2bixWOFn6FBRZRq5L+fHYe/O/xfSNGMCQBFy7Zlw==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "@poppinss/hooks": "^7.3.0", "@poppinss/macroable": "^1.1.0", @@ -4733,7 +4713,6 @@ "integrity": "sha512-Krgrcee01BN1StlVwK5JQP6LL5t3DE3uFNbfFoDTfW7kQuHB0xh6yfaV0hrgcoiEjsqmm2OOsVWeju9aXK4vIA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@poppinss/macroable": "^1.1.0", "@types/chai": "^5.2.3", @@ -4851,7 +4830,6 @@ "integrity": "sha512-M2LUtHhKr4KgBfX73tDHNCD1IOmcXp9dvC+AinmRxsggIFnarsClcfjT/sXc3uNzjZW7Lk31LvcH76AxJHBmJQ==", "devOptional": true, "license": "MIT", - "peer": true, "engines": { "node": ">=18.16.0" }, @@ -4880,7 +4858,6 @@ "integrity": "sha512-F5BWRY20V5D40EUXK+O4bd1IZ7pNpsz/ct2YJGjXa3NXwVJFjGCv8NYBxlUUlfLJyfXNXlLKi+iIjbaMq2UWIQ==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "@japa/core": "^10.3.0", "@japa/errors-printer": "^4.1.3", @@ -7754,7 +7731,6 @@ "resolved": "https://registry.npmjs.org/@svgdotjs/svg.js/-/svg.js-3.2.5.tgz", "integrity": "sha512-/VNHWYhNu+BS7ktbYoVGrCmsXDh+chFMaONMwGNdIBcFHrWqk2jY8fNyr3DLdtQUIalvkPfM554ZSFa3dm3nxQ==", "license": "MIT", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/Fuzzyma" @@ -7778,7 +7754,6 @@ "resolved": "https://registry.npmjs.org/@svgdotjs/svg.select.js/-/svg.select.js-4.0.3.tgz", "integrity": "sha512-qkMgso1sd2hXKd1FZ1weO7ANq12sNmQJeGDjs46QwDVsxSRcHmvWKL2NDF7Yimpwf3sl5esOLkPqtV2bQ3v/Jg==", "license": "MIT", - "peer": true, "engines": { "node": ">= 14.18" }, @@ -7793,7 +7768,6 @@ "dev": true, "hasInstallScript": true, "license": "Apache-2.0", - "peer": true, "dependencies": { "@swc/counter": "^0.1.3", "@swc/types": "^0.1.21" @@ -8317,7 +8291,6 @@ "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.100.11.tgz", "integrity": "sha512-J0f9s5x3LE1450nNNfYx+e/n0DMa0uOBdFJUy5r0RvmsXd4nB/n0rbHtHI1vYXhikNFan+wf51p6Tmp4c8ucrg==", "license": "MIT", - "peer": true, "dependencies": { "@tanstack/query-core": "5.100.11" }, @@ -8600,7 +8573,6 @@ "integrity": "sha512-7Ec1zaFPF4RJ0eXu1YT/xgiebqwqoJz8rYPDi/O2BcZ++Wpt0Kq9cl0eg6NN6bYbPnR67ZLo7St5Q3UK0SnARw==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "undici-types": "~6.21.0" } @@ -8636,7 +8608,6 @@ "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.15.tgz", "integrity": "sha512-eRwcGNHve+E8qtEQSSRl6urh+rFop4v8gm6O8rGv25CodbvFdLjA1vVQ1KkiFE0w0UPOnb8tDiFKL5lp0rtY5Q==", "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.2.2" } @@ -8647,7 +8618,6 @@ "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", "devOptional": true, "license": "MIT", - "peer": true, "peerDependencies": { "@types/react": "^19.2.0" } @@ -8749,7 +8719,6 @@ "integrity": "sha512-JaehZvf6m0yqYp34+RVnihBAChkqeH+tqqhS0GuX1qgPpwLvmTPheKEs6OeCK6hVJgXZHJ2vbjnC9j119auStQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.33.0", "@typescript-eslint/types": "8.33.0", @@ -9139,7 +9108,6 @@ "resolved": "https://registry.npmjs.org/@vinejs/vine/-/vine-3.0.1.tgz", "integrity": "sha512-ZtvYkYpZOYdvbws3uaOAvTFuvFXoQGAtmzeiXu+XSMGxi5GVsODpoI9Xu9TplEMuD/5fmAtBbKb9cQHkWkLXDQ==", "license": "MIT", - "peer": true, "dependencies": { "@poppinss/macroable": "^1.0.4", "@types/validator": "^13.12.2", @@ -9391,7 +9359,6 @@ "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -9593,7 +9560,6 @@ "resolved": "https://registry.npmjs.org/apexcharts/-/apexcharts-4.7.0.tgz", "integrity": "sha512-iZSrrBGvVlL+nt2B1NpqfDuBZ9jX61X9I2+XV0hlYXHtTwhwLTHDKGXjNXAgFBDLuvSYCB/rq2nPWVPRv2DrGA==", "license": "MIT", - "peer": true, "dependencies": { "@svgdotjs/svg.draggable.js": "^3.0.4", "@svgdotjs/svg.filter.js": "^3.0.8", @@ -9843,7 +9809,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "baseline-browser-mapping": "^2.10.12", "caniuse-lite": "^1.0.30001782", @@ -10620,7 +10585,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -10696,7 +10660,6 @@ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.2.1.tgz", "integrity": "sha512-37RhSdxaG1suen6VDCza6rNrQfooyQh57HFVPwQGEq2QWliVLzPQZ8Oa017weOu+HZCnzI7N3Pf/wyoBKfEqrA==", "license": "MIT", - "peer": true, "funding": { "type": "github", "url": "https://github.com/sponsors/kossnocorp" @@ -11157,7 +11120,6 @@ "integrity": "sha512-ixRawFQuMB9DZ7fjU3iGGganFDp3+45bPOdaRurcFHSXO1e/sYwUX/FtQZpLZJR6SjMoJH8hR2pPEAfDyCoU2Q==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.12.1", @@ -11219,7 +11181,6 @@ "integrity": "sha512-zc1UmCpNltmVY34vuLRV61r1K27sWuX39E+uyUnY8xS2Bex88VV9cugG+UZbRSRGtGyFboj+D8JODyme1plMpw==", "dev": true, "license": "MIT", - "peer": true, "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -13930,7 +13891,6 @@ "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", "license": "MIT", - "peer": true, "engines": { "node": ">=12" } @@ -14150,7 +14110,6 @@ "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.15.3.tgz", "integrity": "sha512-6+ZSYDs5zgH5CdGfEU2q2Lsa5PztVryL1ys7kAImTU25n2A9LAMj/yneVsQpd03MfwMLDQF+7kakJR9Z+cQxSw==", "license": "MIT", - "peer": true, "funding": { "type": "opencollective", "url": "https://opencollective.com/mobx" @@ -15037,7 +14996,6 @@ } ], "license": "MIT", - "peer": true, "dependencies": { "nanoid": "^3.3.12", "picocolors": "^1.1.1", @@ -15607,7 +15565,6 @@ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.1.tgz", "integrity": "sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==", "license": "MIT", - "peer": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -15952,7 +15909,6 @@ "integrity": "sha512-QQtaxnoDJeAkDvDKWCLiwIXkTgRhwYDEQCghU9Z6q03iyek/rxRh/2lC3HB7P8sWT2xC/y5JDctPLBIGzHKbhw==", "dev": true, "license": "MIT", - "peer": true, "bin": { "prettier": "bin/prettier.cjs" }, @@ -16005,16 +15961,6 @@ "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/prettier-plugin-one-line-imports": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/prettier-plugin-one-line-imports/-/prettier-plugin-one-line-imports-1.0.3.tgz", - "integrity": "sha512-qHQ2EmiShV/rhq+/MoXAybQcVETA1EEokvn/CjKrjhoPurV7hNBs/49Z7G6guRKnwwfZpyGEoEySVuUwqOeuOQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "prettier": ">=3.0.0" - } - }, "node_modules/prettier-plugin-tailwindcss": { "version": "0.6.11", "resolved": "https://registry.npmjs.org/prettier-plugin-tailwindcss/-/prettier-plugin-tailwindcss-0.6.11.tgz", @@ -16361,7 +16307,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -16406,7 +16351,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.6.tgz", "integrity": "sha512-0prMI+hvBbPjsWnxDLxlCGyM8PN6UuWjEUCYmZhO67xIV9Xasa/r/vDnq+Xyq4Lo27g8QSbO5YzARu0D1Sps3g==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.27.0" }, @@ -16428,7 +16372,6 @@ "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.76.0.tgz", "integrity": "sha512-eKtLGgFeSgkHqQD8J59AMZ9a4uD1D83iSIzt4YlTGD7liDen5rrjcUO1rVIGd9yC1gofryjtHbv+4ny4hkLWlw==", "license": "MIT", - "peer": true, "engines": { "node": ">=18.0.0" }, @@ -17774,8 +17717,7 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.0.tgz", "integrity": "sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==", - "license": "MIT", - "peer": true + "license": "MIT" }, "node_modules/tailwindcss-animate": { "version": "1.0.7", @@ -17917,8 +17859,7 @@ "version": "7.9.3", "resolved": "https://registry.npmjs.org/tinymce/-/tinymce-7.9.3.tgz", "integrity": "sha512-Mtm54U5YJ6Pyo/GaAx+JSHXTGEuxrg2AowVWCD9zy1eBolp5Ub7S1rTtsyQdxhPegfhLuR3VLiTKGw1tacv09g==", - "license": "GPL-2.0-or-later", - "peer": true + "license": "GPL-2.0-or-later" }, "node_modules/tinyrainbow": { "version": "3.1.0", @@ -18067,7 +18008,6 @@ "integrity": "sha512-mdoNxBC/cSQObGGVQ5Bpn5i+yv7j68gk3Nfm3wFjcJg3Z0Mix9jzAFfP12prmm5eVGmDKtp0yyArrs0Q+8gZHg==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "esbuild": "~0.28.0" }, @@ -18155,7 +18095,6 @@ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -18223,7 +18162,6 @@ "integrity": "sha512-LKMrmwCPoLhM45Z00O1ulb6jwyVr2kr3XJp+G+tSEZcbauNnScewcQwtJqXDhXeYPDEjZ8C1SjXm015CirEmGg==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.32.1", "@typescript-eslint/types": "8.32.1", @@ -18657,7 +18595,6 @@ "resolved": "https://registry.npmjs.org/vite/-/vite-6.4.2.tgz", "integrity": "sha512-2N/55r4JDJ4gdrCvGgINMy+HH3iRpNIz8K6SFwVsA+JbQScLiC+clmAxBgwiSPgcG9U15QmvqCGWzMbqda5zGQ==", "license": "MIT", - "peer": true, "dependencies": { "esbuild": "^0.25.0", "fdir": "^6.4.4", @@ -19487,7 +19424,6 @@ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.9.0.tgz", "integrity": "sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==", "license": "ISC", - "peer": true, "bin": { "yaml": "bin.mjs" }, diff --git a/plugins/prettier/one-line-sorted-imports.cjs b/plugins/prettier/one-line-sorted-imports.cjs new file mode 100644 index 0000000..59eaf14 --- /dev/null +++ b/plugins/prettier/one-line-sorted-imports.cjs @@ -0,0 +1,75 @@ +const estreePlugin = require('prettier/plugins/estree'); + +function hasSpecifierComments(node) { + return node.specifiers?.some((specifier) => specifier.comments?.length > 0) ?? false; +} + +function flattenImportLines(doc) { + if (typeof doc === 'string') { + return doc; + } + + if (Array.isArray(doc)) { + return doc.map(flattenImportLines); + } + + if (!doc || typeof doc !== 'object') { + return doc; + } + + if (doc.type === 'line') { + return ' '; + } + + if ('contents' in doc) { + return { + ...doc, + contents: flattenImportLines(doc.contents) + }; + } + + if (doc.type === 'fill' && 'parts' in doc) { + return { + ...doc, + parts: flattenImportLines(doc.parts) + }; + } + + if (doc.type === 'if-break') { + return { + ...doc, + breakContents: flattenImportLines(doc.breakContents), + flatContents: flattenImportLines(doc.flatContents) + }; + } + + if (doc.type === 'group' && 'expandedStates' in doc) { + return { + ...doc, + expandedStates: flattenImportLines(doc.expandedStates) + }; + } + + return doc; +} + +const estreePrinter = estreePlugin.printers.estree; + +module.exports = { + printers: { + estree: { + ...estreePrinter, + print(path, options, print, args) { + const printed = estreePrinter.print(path, options, print, args); + const node = path.getNode(); + + if (node?.type === 'ImportDeclaration' && !hasSpecifierComments(node)) { + return flattenImportLines(printed); + } + + return printed; + } + } + } +}; +