Skip to content

Commit ce24c88

Browse files
committed
chore: wip
1 parent 6c4fee6 commit ce24c88

File tree

85 files changed

+2172
-208
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+2172
-208
lines changed

bun.lock

Lines changed: 10 additions & 126 deletions
Large diffs are not rendered by default.

deps.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
dependencies:
2-
bun.sh: ^1.2.21
2+
bun.sh: ^1.3.0

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,14 +43,14 @@
4343
"typecheck": "bun --bun tsc --noEmit"
4444
},
4545
"devDependencies": {
46-
"@stacksjs/bumpx": "^0.1.86",
47-
"@stacksjs/clarity": "^0.3.23",
46+
"@stacksjs/bumpx": "^0.2.2",
47+
"@stacksjs/clarity": "^0.3.24",
4848
"@stacksjs/docs": "^0.70.23",
4949
"@stacksjs/eslint-config": "^4.14.0-beta.3",
5050
"@stacksjs/gitlint": "^0.1.5",
5151
"@stacksjs/logsmith": "^0.1.18",
5252
"@types/bun": "^1.3.0",
53-
"buddy-bot": "^0.9.8",
53+
"buddy-bot": "^0.9.9",
5454
"bun-git-hooks": "^0.3.1",
5555
"bun-plugin-dtsx": "0.9.5",
5656
"tinyglobby": "^0.2.15",

packages/pickier/src/plugins/eslint.ts

Lines changed: 68 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -1,71 +1,73 @@
11
import type { PickierPlugin } from '../types'
22

3-
// Import all eslint rules
4-
import { arrayCallbackReturnRule } from '../rules/eslint/array-callback-return'
5-
import { complexityRule } from '../rules/eslint/complexity'
6-
import { constructorSuperRule } from '../rules/eslint/constructor-super'
7-
import { defaultCaseRule } from '../rules/eslint/default-case'
8-
import { eqeqeqRule } from '../rules/eslint/eqeqeq'
9-
import { forDirectionRule } from '../rules/eslint/for-direction'
10-
import { getterReturnRule } from '../rules/eslint/getter-return'
11-
import { maxDepthRule } from '../rules/eslint/max-depth'
12-
import { maxLinesPerFunctionRule } from '../rules/eslint/max-lines-per-function'
13-
import { noAlertRule } from '../rules/eslint/no-alert'
14-
import { noAsyncPromiseExecutorRule } from '../rules/eslint/no-async-promise-executor'
15-
import { noAwaitInLoopRule } from '../rules/eslint/no-await-in-loop'
16-
import { noCallerRule } from '../rules/eslint/no-caller'
17-
import { noCaseDeclarationsRule } from '../rules/eslint/no-case-declarations'
18-
import { noCompareNegZeroRule } from '../rules/eslint/no-compare-neg-zero'
19-
import { noCondAssignRule } from '../rules/eslint/no-cond-assign'
20-
import { noConstAssignRule } from '../rules/eslint/no-const-assign'
21-
import { noConstantConditionRule } from '../rules/eslint/no-constant-condition'
22-
import { noDupeClassMembersRule } from '../rules/eslint/no-dupe-class-members'
23-
import { noDupeKeysRule } from '../rules/eslint/no-dupe-keys'
24-
import { noDuplicateCaseRule } from '../rules/eslint/no-duplicate-case'
25-
import { noElseReturnRule } from '../rules/eslint/no-else-return'
26-
import { noEmptyRule } from '../rules/eslint/no-empty'
27-
import { noEmptyFunctionRule } from '../rules/eslint/no-empty-function'
28-
import { noEmptyPatternRule } from '../rules/eslint/no-empty-pattern'
29-
import { noEvalRule } from '../rules/eslint/no-eval'
30-
import { noExtendNativeRule } from '../rules/eslint/no-extend-native'
31-
import { noExtraBooleanCastRule } from '../rules/eslint/no-extra-boolean-cast'
32-
import { noFallthroughRule } from '../rules/eslint/no-fallthrough'
33-
import { noGlobalAssignRule } from '../rules/eslint/no-global-assign'
34-
import { noImpliedEvalRule } from '../rules/eslint/no-implied-eval'
35-
import { noIteratorRule } from '../rules/eslint/no-iterator'
36-
import { noLonelyIfRule } from '../rules/eslint/no-lonely-if'
37-
import { noLossOfPrecisionRule } from '../rules/eslint/no-loss-of-precision'
38-
import { noNewRule } from '../rules/eslint/no-new'
39-
import { noNewFuncRule } from '../rules/eslint/no-new-func'
40-
import { noNewWrappersRule } from '../rules/eslint/no-new-wrappers'
41-
import { noOctalRule } from '../rules/eslint/no-octal'
42-
import { noParamReassignRule } from '../rules/eslint/no-param-reassign'
43-
import { noPromiseExecutorReturnRule } from '../rules/eslint/no-promise-executor-return'
44-
import { noProtoRule } from '../rules/eslint/no-proto'
45-
import { noRedeclareRule } from '../rules/eslint/no-redeclare'
46-
import { noReturnAssignRule } from '../rules/eslint/no-return-assign'
47-
import { noSelfAssignRule } from '../rules/eslint/no-self-assign'
48-
import { noSelfCompareRule } from '../rules/eslint/no-self-compare'
49-
import { noSequencesRule } from '../rules/eslint/no-sequences'
50-
import { noShadowRule } from '../rules/eslint/no-shadow'
51-
import { noSparseArraysRule } from '../rules/eslint/no-sparse-arrays'
52-
import { noThrowLiteralRule } from '../rules/eslint/no-throw-literal'
53-
import { noUndefRule } from '../rules/eslint/no-undef'
54-
import { noUnsafeNegationRule } from '../rules/eslint/no-unsafe-negation'
55-
import { noUnreachableRule } from '../rules/eslint/no-unreachable'
56-
import { noUseBeforeDefineRule } from '../rules/eslint/no-use-before-define'
57-
import { noUselessCallRule } from '../rules/eslint/no-useless-call'
58-
import { noUselessCatchRule } from '../rules/eslint/no-useless-catch'
59-
import { noUselessConcatRule } from '../rules/eslint/no-useless-concat'
60-
import { noUselessEscapeRule } from '../rules/eslint/no-useless-escape'
61-
import { noUselessRenameRule } from '../rules/eslint/no-useless-rename'
62-
import { noUselessReturnRule } from '../rules/eslint/no-useless-return'
63-
import { noVarRule } from '../rules/eslint/no-var'
64-
import { noWithRule } from '../rules/eslint/no-with'
65-
import { preferArrowCallbackRule } from '../rules/eslint/prefer-arrow-callback'
66-
import { requireAwaitRule } from '../rules/eslint/require-await'
67-
import { useIsNaNRule } from '../rules/eslint/use-isnan'
68-
import { validTypeofRule } from '../rules/eslint/valid-typeof'
3+
// Import Possible Problems rules (from general/)
4+
import { arrayCallbackReturnRule } from '../rules/general/array-callback-return'
5+
import { constructorSuperRule } from '../rules/general/constructor-super'
6+
import { forDirectionRule } from '../rules/general/for-direction'
7+
import { getterReturnRule } from '../rules/general/getter-return'
8+
import { noAsyncPromiseExecutorRule } from '../rules/general/no-async-promise-executor'
9+
import { noCompareNegZeroRule } from '../rules/general/no-compare-neg-zero'
10+
import { noCondAssignRule } from '../rules/general/no-cond-assign'
11+
import { noConstAssignRule } from '../rules/general/no-const-assign'
12+
import { noConstantConditionRule } from '../rules/general/no-constant-condition'
13+
import { noDupeClassMembersRule } from '../rules/general/no-dupe-class-members'
14+
import { noDupeKeysRule } from '../rules/general/no-dupe-keys'
15+
import { noDuplicateCaseRule } from '../rules/general/no-duplicate-case'
16+
import { noEmptyPatternRule } from '../rules/general/no-empty-pattern'
17+
import { noFallthroughRule } from '../rules/general/no-fallthrough'
18+
import { noLossOfPrecisionRule } from '../rules/general/no-loss-of-precision'
19+
import { noPromiseExecutorReturnRule } from '../rules/general/no-promise-executor-return'
20+
import { noRedeclareRule } from '../rules/general/no-redeclare'
21+
import { noSelfAssignRule } from '../rules/general/no-self-assign'
22+
import { noSelfCompareRule } from '../rules/general/no-self-compare'
23+
import { noSparseArraysRule } from '../rules/general/no-sparse-arrays'
24+
import { noUndefRule } from '../rules/general/no-undef'
25+
import { noUnsafeNegationRule } from '../rules/general/no-unsafe-negation'
26+
import { noUnreachableRule } from '../rules/general/no-unreachable'
27+
import { noUselessCatchRule } from '../rules/general/no-useless-catch'
28+
import { useIsNaNRule } from '../rules/general/use-isnan'
29+
import { validTypeofRule } from '../rules/general/valid-typeof'
30+
31+
// Import Best Practices & Code Quality rules (from quality/)
32+
import { complexityRule } from '../rules/quality/complexity'
33+
import { defaultCaseRule } from '../rules/quality/default-case'
34+
import { eqeqeqRule } from '../rules/quality/eqeqeq'
35+
import { maxDepthRule } from '../rules/quality/max-depth'
36+
import { maxLinesPerFunctionRule } from '../rules/quality/max-lines-per-function'
37+
import { noAlertRule } from '../rules/quality/no-alert'
38+
import { noAwaitInLoopRule } from '../rules/quality/no-await-in-loop'
39+
import { noCallerRule } from '../rules/quality/no-caller'
40+
import { noCaseDeclarationsRule } from '../rules/quality/no-case-declarations'
41+
import { noElseReturnRule } from '../rules/quality/no-else-return'
42+
import { noEmptyRule } from '../rules/quality/no-empty'
43+
import { noEmptyFunctionRule } from '../rules/quality/no-empty-function'
44+
import { noEvalRule } from '../rules/quality/no-eval'
45+
import { noExtendNativeRule } from '../rules/quality/no-extend-native'
46+
import { noExtraBooleanCastRule } from '../rules/quality/no-extra-boolean-cast'
47+
import { noGlobalAssignRule } from '../rules/quality/no-global-assign'
48+
import { noImpliedEvalRule } from '../rules/quality/no-implied-eval'
49+
import { noIteratorRule } from '../rules/quality/no-iterator'
50+
import { noLonelyIfRule } from '../rules/quality/no-lonely-if'
51+
import { noNewRule } from '../rules/quality/no-new'
52+
import { noNewFuncRule } from '../rules/quality/no-new-func'
53+
import { noNewWrappersRule } from '../rules/quality/no-new-wrappers'
54+
import { noOctalRule } from '../rules/quality/no-octal'
55+
import { noParamReassignRule } from '../rules/quality/no-param-reassign'
56+
import { noProtoRule } from '../rules/quality/no-proto'
57+
import { noReturnAssignRule } from '../rules/quality/no-return-assign'
58+
import { noSequencesRule } from '../rules/quality/no-sequences'
59+
import { noShadowRule } from '../rules/quality/no-shadow'
60+
import { noThrowLiteralRule } from '../rules/quality/no-throw-literal'
61+
import { noUseBeforeDefineRule } from '../rules/quality/no-use-before-define'
62+
import { noUselessCallRule } from '../rules/quality/no-useless-call'
63+
import { noUselessConcatRule } from '../rules/quality/no-useless-concat'
64+
import { noUselessEscapeRule } from '../rules/quality/no-useless-escape'
65+
import { noUselessRenameRule } from '../rules/quality/no-useless-rename'
66+
import { noUselessReturnRule } from '../rules/quality/no-useless-return'
67+
import { noVarRule } from '../rules/quality/no-var'
68+
import { noWithRule } from '../rules/quality/no-with'
69+
import { preferArrowCallbackRule } from '../rules/quality/prefer-arrow-callback'
70+
import { requireAwaitRule } from '../rules/quality/require-await'
6971

7072
export const eslintPlugin: PickierPlugin = {
7173
name: 'eslint',
Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
import type { PickierPlugin } from '../types'
2+
3+
// Import general rules (error detection, possible problems)
4+
import { arrayCallbackReturnRule } from '../rules/general/array-callback-return'
5+
import { constructorSuperRule } from '../rules/general/constructor-super'
6+
import { forDirectionRule } from '../rules/general/for-direction'
7+
import { getterReturnRule } from '../rules/general/getter-return'
8+
import { noAsyncPromiseExecutorRule } from '../rules/general/no-async-promise-executor'
9+
import { noCompareNegZeroRule } from '../rules/general/no-compare-neg-zero'
10+
import { noCondAssignRule } from '../rules/general/no-cond-assign'
11+
import { noConstAssignRule } from '../rules/general/no-const-assign'
12+
import { noConstantConditionRule } from '../rules/general/no-constant-condition'
13+
import { noConstructorReturnRule } from '../rules/general/no-constructor-return'
14+
import { noDupeClassMembersRule } from '../rules/general/no-dupe-class-members'
15+
import { noDupeKeysRule } from '../rules/general/no-dupe-keys'
16+
import { noDuplicateCaseRule } from '../rules/general/no-duplicate-case'
17+
import { noEmptyPatternRule } from '../rules/general/no-empty-pattern'
18+
import { noFallthroughRule } from '../rules/general/no-fallthrough'
19+
import { noIrregularWhitespaceRule } from '../rules/general/no-irregular-whitespace'
20+
import { noLossOfPrecisionRule } from '../rules/general/no-loss-of-precision'
21+
import { noPromiseExecutorReturnRule } from '../rules/general/no-promise-executor-return'
22+
import { noRedeclareRule } from '../rules/general/no-redeclare'
23+
import { noSelfAssignRule } from '../rules/general/no-self-assign'
24+
import { noSelfCompareRule } from '../rules/general/no-self-compare'
25+
import { noSparseArraysRule } from '../rules/general/no-sparse-arrays'
26+
import { noUndefRule } from '../rules/general/no-undef'
27+
import { noUnusedVarsRule } from '../rules/general/no-unused-vars'
28+
import { noUnsafeNegationRule } from '../rules/general/no-unsafe-negation'
29+
import { noUnreachableRule } from '../rules/general/no-unreachable'
30+
import { noUselessCatchRule } from '../rules/general/no-useless-catch'
31+
import { preferConstRule } from '../rules/general/prefer-const'
32+
import { preferObjectSpreadRule } from '../rules/general/prefer-object-spread'
33+
import { preferTemplate } from '../rules/general/prefer-template'
34+
import { useIsNaNRule } from '../rules/general/use-isnan'
35+
import { validTypeofRule } from '../rules/general/valid-typeof'
36+
37+
export const generalPlugin: PickierPlugin = {
38+
name: 'general',
39+
rules: {
40+
// Error Detection / Possible Problems
41+
'array-callback-return': arrayCallbackReturnRule,
42+
'constructor-super': constructorSuperRule,
43+
'for-direction': forDirectionRule,
44+
'getter-return': getterReturnRule,
45+
'no-async-promise-executor': noAsyncPromiseExecutorRule,
46+
'no-compare-neg-zero': noCompareNegZeroRule,
47+
'no-cond-assign': noCondAssignRule,
48+
'no-const-assign': noConstAssignRule,
49+
'no-constant-condition': noConstantConditionRule,
50+
'no-constructor-return': noConstructorReturnRule,
51+
'no-dupe-class-members': noDupeClassMembersRule,
52+
'no-dupe-keys': noDupeKeysRule,
53+
'no-duplicate-case': noDuplicateCaseRule,
54+
'no-empty-pattern': noEmptyPatternRule,
55+
'no-fallthrough': noFallthroughRule,
56+
'no-irregular-whitespace': noIrregularWhitespaceRule,
57+
'no-loss-of-precision': noLossOfPrecisionRule,
58+
'no-promise-executor-return': noPromiseExecutorReturnRule,
59+
'no-redeclare': noRedeclareRule,
60+
'no-self-assign': noSelfAssignRule,
61+
'no-self-compare': noSelfCompareRule,
62+
'no-sparse-arrays': noSparseArraysRule,
63+
'no-undef': noUndefRule,
64+
'no-unsafe-negation': noUnsafeNegationRule,
65+
'no-unreachable': noUnreachableRule,
66+
'no-unused-vars': noUnusedVarsRule,
67+
'no-useless-catch': noUselessCatchRule,
68+
'prefer-const': preferConstRule,
69+
'prefer-object-spread': preferObjectSpreadRule,
70+
'prefer-template': preferTemplate,
71+
'use-isnan': useIsNaNRule,
72+
'valid-typeof': validTypeofRule,
73+
},
74+
}
Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
11
import type { PickierPlugin } from '../types'
22
import { eslintPlugin } from './eslint'
3+
import { generalPlugin } from './general'
34
import { markdownPlugin } from './markdown'
45
import { pickierPlugin } from './pickier'
6+
import { qualityPlugin } from './quality'
57
import { regexpPlugin } from './regexp'
68
import { stylePlugin } from './style'
79
import { tsPlugin } from './ts'
810

911
export function getAllPlugins(): PickierPlugin[] {
1012
return [
11-
eslintPlugin,
12-
pickierPlugin,
13-
stylePlugin,
14-
regexpPlugin,
15-
tsPlugin,
16-
markdownPlugin,
13+
eslintPlugin, // Legacy eslint/ prefix for backward compatibility
14+
generalPlugin, // New general/ prefix for error detection rules
15+
qualityPlugin, // New quality/ prefix for best practices & code quality
16+
pickierPlugin, // pickier/ prefix for pickier-specific rules
17+
stylePlugin, // style/ prefix for style rules
18+
regexpPlugin, // regexp/ prefix for regex rules
19+
tsPlugin, // ts/ prefix for TypeScript rules
20+
markdownPlugin, // markdown/ prefix for markdown rules
1721
]
1822
}

packages/pickier/src/plugins/pickier.ts

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,8 @@
11
import type { PickierPlugin } from '../types'
2-
import { noUnusedVarsRule } from '../rules/general/no-unused-vars'
3-
import { preferConstRule } from '../rules/general/prefer-const'
4-
import { preferTemplate } from '../rules/general/prefer-template'
2+
// Import rules
53
import { firstRule } from '../rules/imports/first'
64
import { importDedupeRule } from '../rules/imports/import-dedupe'
5+
import { noDuplicateImportsRule } from '../rules/imports/no-duplicate-imports'
76
import { namedRule } from '../rules/imports/named'
87
import { noCycleRule } from '../rules/imports/no-cycle'
98
import { noImportDistRule } from '../rules/imports/no-import-dist'
@@ -20,22 +19,25 @@ import { topLevelFunctionRule } from '../rules/style/top-level-function'
2019
export const pickierPlugin: PickierPlugin = {
2120
name: 'pickier',
2221
rules: {
22+
// Sort rules
2323
'sort-exports': sortExportsRule,
2424
'sort-objects': sortObjectsRule,
2525
'sort-imports': sortImportsRule,
2626
'sort-named-imports': sortNamedImportsRule,
2727
'sort-heritage-clauses': sortHeritageClausesRule,
2828
'sort-keys': sortKeysRule,
29-
'prefer-const': preferConstRule,
30-
'prefer-template': preferTemplate,
31-
'no-unused-vars': noUnusedVarsRule,
29+
30+
// Import rules
3231
'import-dedupe': importDedupeRule,
3332
'import-first': firstRule,
3433
'import-named': namedRule,
3534
'import-no-cycle': noCycleRule,
3635
'import-no-unresolved': noUnresolvedRule,
3736
'no-import-dist': noImportDistRule,
3837
'no-import-node-modules-by-path': noImportNodeModulesByPathRule,
38+
'no-duplicate-imports': noDuplicateImportsRule,
39+
40+
// Style rules
3941
'top-level-function': topLevelFunctionRule,
4042
},
4143
}

0 commit comments

Comments
 (0)