Skip to content

Commit e283983

Browse files
committed
fix: perfectionist/sort-imports sort types always on top
Sorry for the massive diff again, but I after a second thought, I think this would make the imports more constant in the long run.
1 parent 574523f commit e283983

35 files changed

+87
-93
lines changed

src/cli/constants.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
1-
import c from 'picocolors'
1+
import type { ExtraLibrariesOption, FrameworkOption, PromItem } from './types'
22

3+
import c from 'picocolors'
34
import pkgJson from '../../package.json'
45

5-
import type { ExtraLibrariesOption, FrameworkOption, PromItem } from './types'
6-
76
export { pkgJson }
87

98
export const vscodeSettingsString = `

src/cli/run.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
/* eslint-disable perfectionist/sort-objects */
2+
import type { ExtraLibrariesOption, FrameworkOption, PromItem, PromptResult } from './types'
3+
24
import fs from 'node:fs'
35
import path from 'node:path'
46
import process from 'node:process'
5-
67
import * as p from '@clack/prompts'
78
import c from 'picocolors'
89

910
import { extra, extraOptions, frameworkOptions, frameworks } from './constants'
1011
import { updateEslintFiles } from './stages/update-eslint-files'
1112
import { updatePackageJson } from './stages/update-package-json'
1213
import { updateVscodeSettings } from './stages/update-vscode-settings'
13-
import { isGitClean } from './utils'
1414

15-
import type { ExtraLibrariesOption, FrameworkOption, PromItem, PromptResult } from './types'
15+
import { isGitClean } from './utils'
1616

1717
export interface CliRunOptions {
1818
/**

src/cli/stages/update-eslint-files.ts

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,16 @@
1+
import type { PromptResult } from '../types'
2+
13
import fs from 'node:fs'
24
import fsp from 'node:fs/promises'
35
import path from 'node:path'
46
import process from 'node:process'
5-
67
import * as p from '@clack/prompts'
78
// @ts-expect-error missing types
89
import parse from 'parse-gitignore'
910
import c from 'picocolors'
1011

1112
import { getEslintConfigContent } from '../utils'
1213

13-
import type { PromptResult } from '../types'
14-
1514
export async function updateEslintFiles(result: PromptResult): Promise<void> {
1615
const cwd = process.cwd()
1716
const pathESLintIgnore = path.join(cwd, '.eslintignore')

src/cli/stages/update-package-json.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1+
import type { ExtraLibrariesOption, PromptResult } from '../types'
12
import fsp from 'node:fs/promises'
23
import path from 'node:path'
3-
import process from 'node:process'
44

5+
import process from 'node:process'
56
import * as p from '@clack/prompts'
7+
68
import c from 'picocolors'
79

810
import { dependenciesMap, pkgJson } from '../constants'
911

10-
import type { ExtraLibrariesOption, PromptResult } from '../types'
11-
1212
export async function updatePackageJson(result: PromptResult): Promise<void> {
1313
const cwd = process.cwd()
1414

src/cli/stages/update-vscode-settings.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
1+
import type { PromptResult } from '../types'
12
import fs from 'node:fs'
23
import fsp from 'node:fs/promises'
34
import path from 'node:path'
4-
import process from 'node:process'
55

6+
import process from 'node:process'
67
import * as p from '@clack/prompts'
8+
79
import c from 'picocolors'
810

911
import { vscodeSettingsString } from '../constants'
1012

11-
import type { PromptResult } from '../types'
12-
1313
export async function updateVscodeSettings(result: PromptResult): Promise<void> {
1414
const cwd = process.cwd()
1515

src/configs/astro.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1+
import type { OptionsFiles, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
2+
13
import { GLOB_ASTRO } from '../globs'
24
import { interopDefault } from '../utils'
35

4-
import type { OptionsFiles, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
5-
66
export async function astro(
77
options: OptionsOverrides & OptionsStylistic & OptionsFiles = {},
88
): Promise<TypedFlatConfigItem[]> {

src/configs/command.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import createCommand from 'eslint-plugin-command/config'
2-
31
import type { TypedFlatConfigItem } from '../types'
42

3+
import createCommand from 'eslint-plugin-command/config'
4+
55
export async function command(): Promise<TypedFlatConfigItem[]> {
66
return [
77
{

src/configs/comments.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { pluginComments } from '../plugins'
2-
31
import type { TypedFlatConfigItem } from '../types'
42

3+
import { pluginComments } from '../plugins'
4+
55
export async function comments(): Promise<TypedFlatConfigItem[]> {
66
return [
77
{

src/configs/disables.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { GLOB_SRC, GLOB_SRC_EXT } from '../globs'
2-
31
import type { TypedFlatConfigItem } from '../types'
42

3+
import { GLOB_SRC, GLOB_SRC_EXT } from '../globs'
4+
55
export async function disables(): Promise<TypedFlatConfigItem[]> {
66
return [
77
{

src/configs/formatters.ts

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
1-
import { isPackageExists } from 'local-pkg'
1+
import type { OptionsFormatters, StylisticConfig, TypedFlatConfigItem } from '../types'
2+
import type { VendoredPrettierOptions } from '../vender/prettier-types'
23

4+
import { isPackageExists } from 'local-pkg'
35
import { GLOB_ASTRO, GLOB_ASTRO_TS, GLOB_CSS, GLOB_GRAPHQL, GLOB_HTML, GLOB_LESS, GLOB_MARKDOWN, GLOB_POSTCSS, GLOB_SCSS, GLOB_SVG, GLOB_XML } from '../globs'
6+
47
import { ensurePackages, interopDefault, isPackageInScope, parserPlain } from '../utils'
58
import { StylisticConfigDefaults } from './stylistic'
69

7-
import type { OptionsFormatters, StylisticConfig, TypedFlatConfigItem } from '../types'
8-
import type { VendoredPrettierOptions } from '../vender/prettier-types'
9-
1010
export async function formatters(
1111
options: OptionsFormatters | true = {},
1212
stylistic: StylisticConfig = {},

src/configs/ignores.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { GLOB_EXCLUDE } from '../globs'
2-
31
import type { TypedFlatConfigItem } from '../types'
42

3+
import { GLOB_EXCLUDE } from '../globs'
4+
55
export async function ignores(userIgnores: string[] = []): Promise<TypedFlatConfigItem[]> {
66
return [
77
{

src/configs/imports.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { pluginAntfu, pluginImport } from '../plugins'
2-
31
import type { OptionsStylistic, TypedFlatConfigItem } from '../types'
42

3+
import { pluginAntfu, pluginImport } from '../plugins'
4+
55
export async function imports(options: OptionsStylistic = {}): Promise<TypedFlatConfigItem[]> {
66
const {
77
stylistic = true,

src/configs/javascript.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1+
import type { OptionsIsInEditor, OptionsOverrides, TypedFlatConfigItem } from '../types'
2+
13
import globals from 'globals'
24

35
import { pluginAntfu, pluginUnusedImports } from '../plugins'
46

5-
import type { OptionsIsInEditor, OptionsOverrides, TypedFlatConfigItem } from '../types'
6-
77
export async function javascript(
88
options: OptionsIsInEditor & OptionsOverrides = {},
99
): Promise<TypedFlatConfigItem[]> {

src/configs/jsdoc.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { interopDefault } from '../utils'
2-
31
import type { OptionsStylistic, TypedFlatConfigItem } from '../types'
42

3+
import { interopDefault } from '../utils'
4+
55
export async function jsdoc(options: OptionsStylistic = {}): Promise<TypedFlatConfigItem[]> {
66
const {
77
stylistic = true,

src/configs/jsonc.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1+
import type { OptionsFiles, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
2+
13
import { GLOB_JSON, GLOB_JSON5, GLOB_JSONC } from '../globs'
24
import { interopDefault } from '../utils'
35

4-
import type { OptionsFiles, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
5-
66
export async function jsonc(
77
options: OptionsFiles & OptionsStylistic & OptionsOverrides = {},
88
): Promise<TypedFlatConfigItem[]> {

src/configs/jsx.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { GLOB_JSX, GLOB_TSX } from '../globs'
2-
31
import type { TypedFlatConfigItem } from '../types'
42

3+
import { GLOB_JSX, GLOB_TSX } from '../globs'
4+
55
export async function jsx(): Promise<TypedFlatConfigItem[]> {
66
return [
77
{

src/configs/markdown.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { mergeProcessors, processorPassThrough } from 'eslint-merge-processors'
1+
import type { OptionsComponentExts, OptionsFiles, OptionsOverrides, TypedFlatConfigItem } from '../types'
22

3+
import { mergeProcessors, processorPassThrough } from 'eslint-merge-processors'
34
import { GLOB_MARKDOWN, GLOB_MARKDOWN_CODE, GLOB_MARKDOWN_IN_MARKDOWN } from '../globs'
4-
import { interopDefault, parserPlain } from '../utils'
55

6-
import type { OptionsComponentExts, OptionsFiles, OptionsOverrides, TypedFlatConfigItem } from '../types'
6+
import { interopDefault, parserPlain } from '../utils'
77

88
export async function markdown(
99
options: OptionsFiles & OptionsComponentExts & OptionsOverrides = {},

src/configs/node.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { pluginNode } from '../plugins'
2-
31
import type { TypedFlatConfigItem } from '../types'
42

3+
import { pluginNode } from '../plugins'
4+
55
export async function node(): Promise<TypedFlatConfigItem[]> {
66
return [
77
{

src/configs/perfectionist.ts

+5-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { pluginPerfectionist } from '../plugins'
2-
31
import type { TypedFlatConfigItem } from '../types'
42

3+
import { pluginPerfectionist } from '../plugins'
4+
55
/**
66
* Perfectionist plugin for props and items sorting.
77
*
@@ -18,12 +18,13 @@ export async function perfectionist(): Promise<TypedFlatConfigItem[]> {
1818
'perfectionist/sort-exports': ['error', { order: 'asc', type: 'natural' }],
1919
'perfectionist/sort-imports': ['error', {
2020
groups: [
21+
'type',
22+
['parent-type', 'sibling-type', 'index-type'],
23+
2124
'builtin',
2225
'external',
23-
'type',
2426
['internal', 'internal-type'],
2527
['parent', 'sibling', 'index'],
26-
['parent-type', 'sibling-type', 'index-type'],
2728
'side-effect',
2829
'object',
2930
'unknown',

src/configs/react.ts

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { isPackageExists } from 'local-pkg'
1+
import type { OptionsFiles, OptionsOverrides, OptionsTypeScriptWithTypes, TypedFlatConfigItem } from '../types'
22

3+
import { isPackageExists } from 'local-pkg'
34
import { GLOB_SRC } from '../globs'
4-
import { ensurePackages, interopDefault, toArray } from '../utils'
55

6-
import type { OptionsFiles, OptionsOverrides, OptionsTypeScriptWithTypes, TypedFlatConfigItem } from '../types'
6+
import { ensurePackages, interopDefault, toArray } from '../utils'
77

88
// react refresh
99
const ReactRefreshAllowConstantExportPackages = [

src/configs/regexp.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { configs } from 'eslint-plugin-regexp'
2-
31
import type { OptionsOverrides, OptionsRegExp, TypedFlatConfigItem } from '../types'
42

3+
import { configs } from 'eslint-plugin-regexp'
4+
55
export async function regexp(
66
options: OptionsRegExp & OptionsOverrides = {},
77
): Promise<TypedFlatConfigItem[]> {

src/configs/solid.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1+
import type { OptionsFiles, OptionsHasTypeScript, OptionsOverrides, OptionsTypeScriptWithTypes, TypedFlatConfigItem } from '../types'
12
import { GLOB_JSX, GLOB_TSX } from '../globs'
2-
import { ensurePackages, interopDefault, toArray } from '../utils'
33

4-
import type { OptionsFiles, OptionsHasTypeScript, OptionsOverrides, OptionsTypeScriptWithTypes, TypedFlatConfigItem } from '../types'
4+
import { ensurePackages, interopDefault, toArray } from '../utils'
55

66
export async function solid(
77
options: OptionsHasTypeScript & OptionsOverrides & OptionsFiles & OptionsTypeScriptWithTypes = {},

src/configs/stylistic.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1+
import type { OptionsOverrides, StylisticConfig, TypedFlatConfigItem } from '../types'
2+
13
import { pluginAntfu } from '../plugins'
24
import { interopDefault } from '../utils'
35

4-
import type { OptionsOverrides, StylisticConfig, TypedFlatConfigItem } from '../types'
5-
66
export const StylisticConfigDefaults: StylisticConfig = {
77
indent: 2,
88
jsx: true,

src/configs/svelte.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1+
import type { OptionsFiles, OptionsHasTypeScript, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
2+
13
import { GLOB_SVELTE } from '../globs'
24
import { ensurePackages, interopDefault } from '../utils'
35

4-
import type { OptionsFiles, OptionsHasTypeScript, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
5-
66
export async function svelte(
77
options: OptionsHasTypeScript & OptionsOverrides & OptionsStylistic & OptionsFiles = {},
88
): Promise<TypedFlatConfigItem[]> {

src/configs/test.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1+
import type { OptionsFiles, OptionsIsInEditor, OptionsOverrides, TypedFlatConfigItem } from '../types'
2+
13
import { GLOB_TESTS } from '../globs'
24
import { interopDefault } from '../utils'
35

4-
import type { OptionsFiles, OptionsIsInEditor, OptionsOverrides, TypedFlatConfigItem } from '../types'
5-
66
// Hold the reference so we don't redeclare the plugin on each call
77
let _pluginTest: any
88

src/configs/toml.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1+
import type { OptionsFiles, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
2+
13
import { GLOB_TOML } from '../globs'
24
import { interopDefault } from '../utils'
35

4-
import type { OptionsFiles, OptionsOverrides, OptionsStylistic, TypedFlatConfigItem } from '../types'
5-
66
export async function toml(
77
options: OptionsOverrides & OptionsStylistic & OptionsFiles = {},
88
): Promise<TypedFlatConfigItem[]> {

src/configs/typescript.ts

+5-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,3 @@
1-
import process from 'node:process'
2-
3-
import { GLOB_ASTRO_TS, GLOB_MARKDOWN, GLOB_TS, GLOB_TSX } from '../globs'
4-
import { pluginAntfu } from '../plugins'
5-
import { interopDefault, renameRules } from '../utils'
6-
71
import type {
82
OptionsComponentExts,
93
OptionsFiles,
@@ -14,6 +8,11 @@ import type {
148
TypedFlatConfigItem,
159
} from '../types'
1610

11+
import process from 'node:process'
12+
import { GLOB_ASTRO_TS, GLOB_MARKDOWN, GLOB_TS, GLOB_TSX } from '../globs'
13+
import { pluginAntfu } from '../plugins'
14+
import { interopDefault, renameRules } from '../utils'
15+
1716
export async function typescript(
1817
options: OptionsFiles & OptionsComponentExts & OptionsOverrides & OptionsTypeScriptWithTypes & OptionsTypeScriptParserOptions & OptionsProjectType = {},
1918
): Promise<TypedFlatConfigItem[]> {

src/configs/unicorn.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { pluginUnicorn } from '../plugins'
2-
31
import type { OptionsUnicorn, TypedFlatConfigItem } from '../types'
42

3+
import { pluginUnicorn } from '../plugins'
4+
55
export async function unicorn(options: OptionsUnicorn = {}): Promise<TypedFlatConfigItem[]> {
66
return [
77
{

src/configs/unocss.ts

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
import { ensurePackages, interopDefault } from '../utils'
2-
31
import type { OptionsUnoCSS, TypedFlatConfigItem } from '../types'
42

3+
import { ensurePackages, interopDefault } from '../utils'
4+
55
export async function unocss(
66
options: OptionsUnoCSS = {},
77
): Promise<TypedFlatConfigItem[]> {

src/configs/vue.ts

+4-5
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,3 @@
1-
import { mergeProcessors } from 'eslint-merge-processors'
2-
3-
import { GLOB_VUE } from '../globs'
4-
import { interopDefault } from '../utils'
5-
61
import type {
72
OptionsFiles,
83
OptionsHasTypeScript,
@@ -12,6 +7,10 @@ import type {
127
TypedFlatConfigItem,
138
} from '../types'
149

10+
import { mergeProcessors } from 'eslint-merge-processors'
11+
import { GLOB_VUE } from '../globs'
12+
import { interopDefault } from '../utils'
13+
1514
export async function vue(
1615
options: OptionsVue & OptionsHasTypeScript & OptionsOverrides & OptionsStylistic & OptionsFiles = {},
1716
): Promise<TypedFlatConfigItem[]> {

0 commit comments

Comments
 (0)