@shayanthenerd/eslint-config 0.7.0 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -0
- package/dist/configs/base.js +1 -1
- package/dist/configs/oxlintOverrides.js +1 -2
- package/dist/configs/restrictedExports.js +1 -2
- package/dist/configs/typescript.js +2 -2
- package/dist/configs/vue.js +1 -1
- package/dist/configs/vueComponentNames.js +1 -2
- package/dist/configs/vueServerComponents.js +1 -2
- package/dist/index.js +2 -4
- package/dist/oxlint.config.jsonc +7 -1
- package/dist/prettier.config.js +1 -1
- package/dist/rules/css.js +1 -2
- package/dist/rules/cypress.js +1 -2
- package/dist/rules/html.js +1 -2
- package/dist/rules/importX.js +1 -2
- package/dist/rules/javascript.js +3 -2
- package/dist/rules/perfectionist.js +3 -3
- package/dist/rules/playwright.js +1 -2
- package/dist/rules/storybook.js +1 -2
- package/dist/rules/stylistic.js +1 -2
- package/dist/rules/tailwind.js +1 -2
- package/dist/rules/typescript.js +2 -2
- package/dist/rules/vitest.js +1 -2
- package/dist/rules/vue.js +14 -10
- package/dist/rules/vueAccessibility.js +17 -3
- package/dist/types/configOptions/nuxt.d.ts +27 -1
- package/dist/types/configOptions/typescript.d.ts +3 -1
- package/dist/types/eslint-schema.d.ts +143 -39
- package/dist/utils/globs.js +10 -11
- package/dist/utils/ignores/getIgnorePatterns.js +1 -2
- package/dist/utils/ignores/resolveGitignorePatterns.js +1 -2
- package/dist/utils/options/defaultOptions.js +1 -0
- package/dist/utils/options/enableDetectedConfigs.js +1 -0
- package/dist/utils/options/mergeWithDefaults.js +4 -8
- package/dist/utils/vue/getRestrictedVueElements.js +2 -3
- package/dist/utils/vue/getRestrictedVueInputs.js +2 -3
- package/package.json +41 -42
|
@@ -13,46 +13,46 @@ declare module 'eslint-flat-config-utils' {
|
|
|
13
13
|
interface DefaultConfigNamesMap {
|
|
14
14
|
'shayanthenerd/global'?: true;
|
|
15
15
|
'shayanthenerd/ignores'?: true;
|
|
16
|
-
'shayanthenerd/base'?: true;
|
|
16
|
+
'shayanthenerd/base > ExtendedConfig[0]'?: true;
|
|
17
17
|
'shayanthenerd/base'?: true;
|
|
18
18
|
'shayanthenerd/restricted-exports'?: true;
|
|
19
|
-
'shayanthenerd/import-
|
|
20
|
-
'shayanthenerd/import-
|
|
19
|
+
'shayanthenerd/import-x > import-x/recommended'?: true;
|
|
20
|
+
'shayanthenerd/import-x > import-x/typescript'?: true;
|
|
21
21
|
'shayanthenerd/import-x'?: true;
|
|
22
|
-
'shayanthenerd/stylistic'?: true;
|
|
22
|
+
'shayanthenerd/stylistic > ExtendedConfig[0]'?: true;
|
|
23
23
|
'shayanthenerd/stylistic'?: true;
|
|
24
24
|
'shayanthenerd/perfectionist'?: true;
|
|
25
|
-
'shayanthenerd/
|
|
26
|
-
'shayanthenerd/
|
|
27
|
-
'shayanthenerd/
|
|
28
|
-
'shayanthenerd/
|
|
29
|
-
'shayanthenerd/
|
|
30
|
-
'shayanthenerd/
|
|
25
|
+
'shayanthenerd/typescript > typescript-eslint/base'?: true;
|
|
26
|
+
'shayanthenerd/typescript > typescript-eslint/eslint-recommended'?: true;
|
|
27
|
+
'shayanthenerd/typescript > typescript-eslint/strict-type-checked'?: true;
|
|
28
|
+
'shayanthenerd/typescript > typescript-eslint/base'?: true;
|
|
29
|
+
'shayanthenerd/typescript > typescript-eslint/eslint-recommended'?: true;
|
|
30
|
+
'shayanthenerd/typescript > typescript-eslint/stylistic-type-checked'?: true;
|
|
31
31
|
'shayanthenerd/typescript'?: true;
|
|
32
|
+
'shayanthenerd/html > ExtendedConfig[0]'?: true;
|
|
32
33
|
'shayanthenerd/html'?: true;
|
|
33
|
-
'shayanthenerd/
|
|
34
|
-
'shayanthenerd/css'?: true;
|
|
34
|
+
'shayanthenerd/css > ExtendedConfig[0]'?: true;
|
|
35
35
|
'shayanthenerd/css'?: true;
|
|
36
36
|
'shayanthenerd/tailwind'?: true;
|
|
37
|
-
'shayanthenerd/
|
|
38
|
-
'shayanthenerd/
|
|
39
|
-
'shayanthenerd/
|
|
40
|
-
'shayanthenerd/
|
|
41
|
-
'shayanthenerd/
|
|
42
|
-
'shayanthenerd/
|
|
43
|
-
'shayanthenerd/
|
|
37
|
+
'shayanthenerd/vue > vue/base/setup'?: true;
|
|
38
|
+
'shayanthenerd/vue > vue/base/setup-for-vue'?: true;
|
|
39
|
+
'shayanthenerd/vue > vue/essential/rules'?: true;
|
|
40
|
+
'shayanthenerd/vue > vue/strongly-recommended/rules'?: true;
|
|
41
|
+
'shayanthenerd/vue > vue/recommended/rules'?: true;
|
|
42
|
+
'shayanthenerd/vue > vuejs-accessibility:setup:base'?: true;
|
|
43
|
+
'shayanthenerd/vue > vuejs-accessibility:setup:with-files-rules-and-parser'?: true;
|
|
44
44
|
'shayanthenerd/vue'?: true;
|
|
45
45
|
'shayanthenerd/vue/multi-word-component-names'?: true;
|
|
46
46
|
'shayanthenerd/vue/server-components'?: true;
|
|
47
|
-
'shayanthenerd/
|
|
48
|
-
'shayanthenerd/
|
|
49
|
-
'shayanthenerd/
|
|
47
|
+
'shayanthenerd/storybook > storybook:recommended:setup'?: true;
|
|
48
|
+
'shayanthenerd/storybook > storybook:recommended:stories-rules'?: true;
|
|
49
|
+
'shayanthenerd/storybook > storybook:recommended:main-rules'?: true;
|
|
50
50
|
'shayanthenerd/storybook'?: true;
|
|
51
|
-
'shayanthenerd/
|
|
51
|
+
'shayanthenerd/vitest > vitest/recommended'?: true;
|
|
52
52
|
'shayanthenerd/vitest'?: true;
|
|
53
|
+
'shayanthenerd/playwright > ExtendedConfig[0]'?: true;
|
|
53
54
|
'shayanthenerd/playwright'?: true;
|
|
54
|
-
'shayanthenerd/
|
|
55
|
-
'shayanthenerd/cypress__cypress/recommended'?: true;
|
|
55
|
+
'shayanthenerd/cypress > cypress/recommended'?: true;
|
|
56
56
|
'shayanthenerd/cypress'?: true;
|
|
57
57
|
'oxlint/from-oxlint-config'?: true;
|
|
58
58
|
'oxlint/vue-svelte-exceptions'?: true;
|
|
@@ -209,6 +209,11 @@ interface ESLintSchema {
|
|
|
209
209
|
* @see https://html-eslint.org/docs/rules/no-restricted-attrs
|
|
210
210
|
*/
|
|
211
211
|
'@html-eslint/no-restricted-attrs'?: Linter.RuleEntry<HtmlEslintNoRestrictedAttrs>;
|
|
212
|
+
/**
|
|
213
|
+
* Disallow specified tags
|
|
214
|
+
* @see https://html-eslint.org/docs/rules/no-restricted-tags
|
|
215
|
+
*/
|
|
216
|
+
'@html-eslint/no-restricted-tags'?: Linter.RuleEntry<HtmlEslintNoRestrictedTags>;
|
|
212
217
|
/**
|
|
213
218
|
* Enforce to omit type attributes for style sheets and scripts
|
|
214
219
|
* @see https://html-eslint.org/docs/rules/no-script-style-type
|
|
@@ -511,8 +516,9 @@ interface ESLintSchema {
|
|
|
511
516
|
*/
|
|
512
517
|
'@stylistic/jsx-pascal-case'?: Linter.RuleEntry<StylisticJsxPascalCase>;
|
|
513
518
|
/**
|
|
514
|
-
* Disallow multiple spaces between inline JSX props
|
|
519
|
+
* Disallow multiple spaces between inline JSX props. Deprecated, use `no-multi-spaces` rule instead.
|
|
515
520
|
* @see https://eslint.style/rules/jsx-props-no-multi-spaces
|
|
521
|
+
* @deprecated
|
|
516
522
|
*/
|
|
517
523
|
'@stylistic/jsx-props-no-multi-spaces'?: Linter.RuleEntry<[]>;
|
|
518
524
|
/**
|
|
@@ -1227,7 +1233,7 @@ interface ESLintSchema {
|
|
|
1227
1233
|
* Disallow member access on a value with type `any`
|
|
1228
1234
|
* @see https://typescript-eslint.io/rules/no-unsafe-member-access
|
|
1229
1235
|
*/
|
|
1230
|
-
'@typescript-eslint/no-unsafe-member-access'?: Linter.RuleEntry<
|
|
1236
|
+
'@typescript-eslint/no-unsafe-member-access'?: Linter.RuleEntry<TypescriptEslintNoUnsafeMemberAccess>;
|
|
1231
1237
|
/**
|
|
1232
1238
|
* Disallow returning a value with type `any` from a function
|
|
1233
1239
|
* @see https://typescript-eslint.io/rules/no-unsafe-return
|
|
@@ -3614,6 +3620,11 @@ interface ESLintSchema {
|
|
|
3614
3620
|
* @see https://eslint.org/docs/latest/rules/prefer-template
|
|
3615
3621
|
*/
|
|
3616
3622
|
'prefer-template'?: Linter.RuleEntry<[]>;
|
|
3623
|
+
/**
|
|
3624
|
+
* Disallow losing originally caught error when re-throwing custom errors
|
|
3625
|
+
* @see https://eslint.org/docs/latest/rules/preserve-caught-error
|
|
3626
|
+
*/
|
|
3627
|
+
'preserve-caught-error'?: Linter.RuleEntry<PreserveCaughtError>;
|
|
3617
3628
|
/**
|
|
3618
3629
|
* Require quotes around object literal property names
|
|
3619
3630
|
* @see https://eslint.org/docs/latest/rules/quote-props
|
|
@@ -3884,6 +3895,11 @@ interface ESLintSchema {
|
|
|
3884
3895
|
* @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/expect-expect.md
|
|
3885
3896
|
*/
|
|
3886
3897
|
'vitest/expect-expect'?: Linter.RuleEntry<VitestExpectExpect>;
|
|
3898
|
+
/**
|
|
3899
|
+
* enforce hoisted APIs to be on top of the file
|
|
3900
|
+
* @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/hoisted-apis-on-top.md
|
|
3901
|
+
*/
|
|
3902
|
+
'vitest/hoisted-apis-on-top'?: Linter.RuleEntry<[]>;
|
|
3887
3903
|
/**
|
|
3888
3904
|
* enforce a maximum number of expect per test
|
|
3889
3905
|
* @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/max-expects.md
|
|
@@ -4040,6 +4056,11 @@ interface ESLintSchema {
|
|
|
4040
4056
|
* @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/padding-around-test-blocks.md
|
|
4041
4057
|
*/
|
|
4042
4058
|
'vitest/padding-around-test-blocks'?: Linter.RuleEntry<[]>;
|
|
4059
|
+
/**
|
|
4060
|
+
* Prefer `toHaveBeenCalledExactlyOnceWith` over `toHaveBeenCalledOnce` and `toHaveBeenCalledWith`
|
|
4061
|
+
* @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-exactly-once-with.md
|
|
4062
|
+
*/
|
|
4063
|
+
'vitest/prefer-called-exactly-once-with'?: Linter.RuleEntry<[]>;
|
|
4043
4064
|
/**
|
|
4044
4065
|
* enforce using `toBeCalledOnce()` or `toHaveBeenCalledOnce()`
|
|
4045
4066
|
* @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-called-once.md
|
|
@@ -4085,6 +4106,11 @@ interface ESLintSchema {
|
|
|
4085
4106
|
* @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-resolves.md
|
|
4086
4107
|
*/
|
|
4087
4108
|
'vitest/prefer-expect-resolves'?: Linter.RuleEntry<[]>;
|
|
4109
|
+
/**
|
|
4110
|
+
* enforce using `expectTypeOf` instead of `expect(typeof ...)`
|
|
4111
|
+
* @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-expect-type-of.md
|
|
4112
|
+
*/
|
|
4113
|
+
'vitest/prefer-expect-type-of'?: Linter.RuleEntry<[]>;
|
|
4088
4114
|
/**
|
|
4089
4115
|
* enforce having hooks in consistent order
|
|
4090
4116
|
* @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-in-order.md
|
|
@@ -4095,6 +4121,11 @@ interface ESLintSchema {
|
|
|
4095
4121
|
* @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-hooks-on-top.md
|
|
4096
4122
|
*/
|
|
4097
4123
|
'vitest/prefer-hooks-on-top'?: Linter.RuleEntry<[]>;
|
|
4124
|
+
/**
|
|
4125
|
+
* prefer dynamic import in mock
|
|
4126
|
+
* @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-import-in-mock.md
|
|
4127
|
+
*/
|
|
4128
|
+
'vitest/prefer-import-in-mock'?: Linter.RuleEntry<[]>;
|
|
4098
4129
|
/**
|
|
4099
4130
|
* enforce importing Vitest globals
|
|
4100
4131
|
* @see https://github.com/vitest-dev/eslint-plugin-vitest/blob/main/docs/rules/prefer-importing-vitest-globals.md
|
|
@@ -4514,7 +4545,7 @@ interface ESLintSchema {
|
|
|
4514
4545
|
* disallow asynchronous actions in computed properties
|
|
4515
4546
|
* @see https://eslint.vuejs.org/rules/no-async-in-computed-properties.html
|
|
4516
4547
|
*/
|
|
4517
|
-
'vue/no-async-in-computed-properties'?: Linter.RuleEntry<
|
|
4548
|
+
'vue/no-async-in-computed-properties'?: Linter.RuleEntry<VueNoAsyncInComputedProperties>;
|
|
4518
4549
|
/**
|
|
4519
4550
|
* disallow the use of bare strings in `<template>`
|
|
4520
4551
|
* @see https://eslint.vuejs.org/rules/no-bare-strings-in-template.html
|
|
@@ -5015,7 +5046,7 @@ interface ESLintSchema {
|
|
|
5015
5046
|
* disallow use of v-html to prevent XSS attack
|
|
5016
5047
|
* @see https://eslint.vuejs.org/rules/no-v-html.html
|
|
5017
5048
|
*/
|
|
5018
|
-
'vue/no-v-html'?: Linter.RuleEntry<
|
|
5049
|
+
'vue/no-v-html'?: Linter.RuleEntry<VueNoVHtml>;
|
|
5019
5050
|
/**
|
|
5020
5051
|
* disallow adding an argument to `v-model` used in custom component
|
|
5021
5052
|
* @see https://eslint.vuejs.org/rules/no-v-model-argument.html
|
|
@@ -5576,7 +5607,6 @@ interface ESLintSchema {
|
|
|
5576
5607
|
*/
|
|
5577
5608
|
'yoda'?: Linter.RuleEntry<Yoda>;
|
|
5578
5609
|
}
|
|
5579
|
-
|
|
5580
5610
|
/* ======= Declarations ======= */
|
|
5581
5611
|
// ----- @html-eslint/attrs-newline -----
|
|
5582
5612
|
type HtmlEslintAttrsNewline = [] | [{
|
|
@@ -5631,6 +5661,11 @@ type HtmlEslintNoRestrictedAttrs = {
|
|
|
5631
5661
|
attrPatterns: string[];
|
|
5632
5662
|
message?: string;
|
|
5633
5663
|
}[];
|
|
5664
|
+
// ----- @html-eslint/no-restricted-tags -----
|
|
5665
|
+
type HtmlEslintNoRestrictedTags = {
|
|
5666
|
+
tagPatterns: string[];
|
|
5667
|
+
message?: string;
|
|
5668
|
+
}[];
|
|
5634
5669
|
// ----- @html-eslint/quotes -----
|
|
5635
5670
|
type HtmlEslintQuotes = [] | [("single" | "double")] | [("single" | "double"), {
|
|
5636
5671
|
enforceTemplatedAttrValue?: boolean;
|
|
@@ -5879,6 +5914,10 @@ type StylisticGeneratorStarSpacing = [] | [(("before" | "after" | "both" | "neit
|
|
|
5879
5914
|
before?: boolean;
|
|
5880
5915
|
after?: boolean;
|
|
5881
5916
|
});
|
|
5917
|
+
shorthand?: (("before" | "after" | "both" | "neither") | {
|
|
5918
|
+
before?: boolean;
|
|
5919
|
+
after?: boolean;
|
|
5920
|
+
});
|
|
5882
5921
|
})];
|
|
5883
5922
|
// ----- @stylistic/implicit-arrow-linebreak -----
|
|
5884
5923
|
type StylisticImplicitArrowLinebreak = [] | [("beside" | "below")];
|
|
@@ -5891,6 +5930,7 @@ type StylisticIndent = [] | [("tab" | number)] | [("tab" | number), {
|
|
|
5891
5930
|
const?: (number | ("first" | "off"));
|
|
5892
5931
|
using?: (number | ("first" | "off"));
|
|
5893
5932
|
});
|
|
5933
|
+
assignmentOperator?: (number | "off");
|
|
5894
5934
|
outerIIFEBody?: (number | "off");
|
|
5895
5935
|
MemberExpression?: (number | "off");
|
|
5896
5936
|
FunctionDeclaration?: {
|
|
@@ -6355,7 +6395,7 @@ type StylisticKeywordSpacing = [] | [{
|
|
|
6355
6395
|
before?: boolean;
|
|
6356
6396
|
after?: boolean;
|
|
6357
6397
|
};
|
|
6358
|
-
|
|
6398
|
+
arguments?: {
|
|
6359
6399
|
before?: boolean;
|
|
6360
6400
|
after?: boolean;
|
|
6361
6401
|
};
|
|
@@ -6371,6 +6411,10 @@ type StylisticKeywordSpacing = [] | [{
|
|
|
6371
6411
|
before?: boolean;
|
|
6372
6412
|
after?: boolean;
|
|
6373
6413
|
};
|
|
6414
|
+
eval?: {
|
|
6415
|
+
before?: boolean;
|
|
6416
|
+
after?: boolean;
|
|
6417
|
+
};
|
|
6374
6418
|
from?: {
|
|
6375
6419
|
before?: boolean;
|
|
6376
6420
|
after?: boolean;
|
|
@@ -6387,11 +6431,11 @@ type StylisticKeywordSpacing = [] | [{
|
|
|
6387
6431
|
before?: boolean;
|
|
6388
6432
|
after?: boolean;
|
|
6389
6433
|
};
|
|
6390
|
-
|
|
6434
|
+
set?: {
|
|
6391
6435
|
before?: boolean;
|
|
6392
6436
|
after?: boolean;
|
|
6393
6437
|
};
|
|
6394
|
-
|
|
6438
|
+
type?: {
|
|
6395
6439
|
before?: boolean;
|
|
6396
6440
|
after?: boolean;
|
|
6397
6441
|
};
|
|
@@ -6403,7 +6447,11 @@ type StylisticKeywordSpacing = [] | [{
|
|
|
6403
6447
|
before?: boolean;
|
|
6404
6448
|
after?: boolean;
|
|
6405
6449
|
};
|
|
6406
|
-
|
|
6450
|
+
accessor?: {
|
|
6451
|
+
before?: boolean;
|
|
6452
|
+
after?: boolean;
|
|
6453
|
+
};
|
|
6454
|
+
satisfies?: {
|
|
6407
6455
|
before?: boolean;
|
|
6408
6456
|
after?: boolean;
|
|
6409
6457
|
};
|
|
@@ -6606,6 +6654,7 @@ type StylisticNoExtraParens = ([] | ["functions"] | [] | ["all"] | ["all", {
|
|
|
6606
6654
|
LogicalExpression?: boolean;
|
|
6607
6655
|
AwaitExpression?: boolean;
|
|
6608
6656
|
};
|
|
6657
|
+
ignoredNodes?: string[];
|
|
6609
6658
|
}]);
|
|
6610
6659
|
// ----- @stylistic/no-mixed-operators -----
|
|
6611
6660
|
type StylisticNoMixedOperators = [] | [{
|
|
@@ -6693,6 +6742,18 @@ type StylisticObjectCurlyNewline = [] | [((("always" | "never") | {
|
|
|
6693
6742
|
type StylisticObjectCurlySpacing = [] | [("always" | "never")] | [("always" | "never"), {
|
|
6694
6743
|
arraysInObjects?: boolean;
|
|
6695
6744
|
objectsInObjects?: boolean;
|
|
6745
|
+
overrides?: {
|
|
6746
|
+
ObjectPattern?: ("always" | "never");
|
|
6747
|
+
ObjectExpression?: ("always" | "never");
|
|
6748
|
+
ImportDeclaration?: ("always" | "never");
|
|
6749
|
+
ImportAttributes?: ("always" | "never");
|
|
6750
|
+
ExportNamedDeclaration?: ("always" | "never");
|
|
6751
|
+
ExportAllDeclaration?: ("always" | "never");
|
|
6752
|
+
TSMappedType?: ("always" | "never");
|
|
6753
|
+
TSTypeLiteral?: ("always" | "never");
|
|
6754
|
+
TSInterfaceBody?: ("always" | "never");
|
|
6755
|
+
TSEnumBody?: ("always" | "never");
|
|
6756
|
+
};
|
|
6696
6757
|
}];
|
|
6697
6758
|
// ----- @stylistic/object-property-newline -----
|
|
6698
6759
|
type StylisticObjectPropertyNewline = [] | [{
|
|
@@ -6721,7 +6782,7 @@ type StylisticPaddedBlocks = [] | [(("always" | "never" | "start" | "end") | {
|
|
|
6721
6782
|
// ----- @stylistic/padding-line-between-statements -----
|
|
6722
6783
|
type _StylisticPaddingLineBetweenStatementsPaddingType = ("any" | "never" | "always");
|
|
6723
6784
|
type _StylisticPaddingLineBetweenStatementsStatementOption = (_StylisticPaddingLineBetweenStatementsStatementType | [_StylisticPaddingLineBetweenStatementsStatementType, ...(_StylisticPaddingLineBetweenStatementsStatementType)[]]);
|
|
6724
|
-
type _StylisticPaddingLineBetweenStatementsStatementType = ("*" | "exports" | "require" | "directive" | "iife" | "block" | "empty" | "function" | "ts-method" | "break" | "case" | "class" | "continue" | "debugger" | "default" | "do" | "for" | "if" | "import" | "
|
|
6785
|
+
type _StylisticPaddingLineBetweenStatementsStatementType = ("*" | "exports" | "require" | "directive" | "iife" | "block" | "empty" | "function" | "ts-method" | "break" | "case" | "class" | "continue" | "debugger" | "default" | "do" | "for" | "if" | "import" | "switch" | "throw" | "try" | "while" | "with" | "cjs-export" | "cjs-import" | "enum" | "interface" | "function-overload" | "block-like" | "singleline-block-like" | "multiline-block-like" | "expression" | "singleline-expression" | "multiline-expression" | "return" | "singleline-return" | "multiline-return" | "export" | "singleline-export" | "multiline-export" | "var" | "singleline-var" | "multiline-var" | "let" | "singleline-let" | "multiline-let" | "const" | "singleline-const" | "multiline-const" | "using" | "singleline-using" | "multiline-using" | "type" | "singleline-type" | "multiline-type");
|
|
6725
6786
|
type StylisticPaddingLineBetweenStatements = {
|
|
6726
6787
|
blankLine: _StylisticPaddingLineBetweenStatementsPaddingType;
|
|
6727
6788
|
prev: _StylisticPaddingLineBetweenStatementsStatementOption;
|
|
@@ -7532,6 +7593,10 @@ type TypescriptEslintNoUnnecessaryTypeAssertion = [] | [{
|
|
|
7532
7593
|
checkLiteralConstAssertions?: boolean;
|
|
7533
7594
|
typesToIgnore?: string[];
|
|
7534
7595
|
}];
|
|
7596
|
+
// ----- @typescript-eslint/no-unsafe-member-access -----
|
|
7597
|
+
type TypescriptEslintNoUnsafeMemberAccess = [] | [{
|
|
7598
|
+
allowOptionalChaining?: boolean;
|
|
7599
|
+
}];
|
|
7535
7600
|
// ----- @typescript-eslint/no-unused-expressions -----
|
|
7536
7601
|
type TypescriptEslintNoUnusedExpressions = [] | [{
|
|
7537
7602
|
allowShortCircuit?: boolean;
|
|
@@ -7549,6 +7614,7 @@ type TypescriptEslintNoUnusedVars = [] | [(("all" | "local") | {
|
|
|
7549
7614
|
destructuredArrayIgnorePattern?: string;
|
|
7550
7615
|
ignoreClassWithStaticInitBlock?: boolean;
|
|
7551
7616
|
ignoreRestSiblings?: boolean;
|
|
7617
|
+
ignoreUsingDeclarations?: boolean;
|
|
7552
7618
|
reportUsedIgnorePattern?: boolean;
|
|
7553
7619
|
vars?: ("all" | "local");
|
|
7554
7620
|
varsIgnorePattern?: string;
|
|
@@ -9648,12 +9714,14 @@ type NoRestrictedImports = ((string | {
|
|
|
9648
9714
|
message?: string;
|
|
9649
9715
|
importNames?: string[];
|
|
9650
9716
|
allowImportNames?: string[];
|
|
9717
|
+
allowTypeImports?: boolean;
|
|
9651
9718
|
})[] | [] | [{
|
|
9652
9719
|
paths?: (string | {
|
|
9653
9720
|
name: string;
|
|
9654
9721
|
message?: string;
|
|
9655
9722
|
importNames?: string[];
|
|
9656
9723
|
allowImportNames?: string[];
|
|
9724
|
+
allowTypeImports?: boolean;
|
|
9657
9725
|
})[];
|
|
9658
9726
|
patterns?: (string[] | ({
|
|
9659
9727
|
[k: string]: unknown | undefined;
|
|
@@ -11747,6 +11815,10 @@ type PreferReflect = [] | [{
|
|
|
11747
11815
|
type PreferRegexLiterals = [] | [{
|
|
11748
11816
|
disallowRedundantWrapping?: boolean;
|
|
11749
11817
|
}];
|
|
11818
|
+
// ----- preserve-caught-error -----
|
|
11819
|
+
type PreserveCaughtError = [] | [{
|
|
11820
|
+
requireCatchParameter?: boolean;
|
|
11821
|
+
}];
|
|
11750
11822
|
// ----- quote-props -----
|
|
11751
11823
|
type QuoteProps = ([] | [("always" | "as-needed" | "consistent" | "consistent-as-needed")] | [] | [("always" | "as-needed" | "consistent" | "consistent-as-needed")] | [("always" | "as-needed" | "consistent" | "consistent-as-needed"), {
|
|
11752
11824
|
keywords?: boolean;
|
|
@@ -11878,6 +11950,7 @@ type UnusedImportsNoUnusedImports = [] | [(("all" | "local") | {
|
|
|
11878
11950
|
destructuredArrayIgnorePattern?: string;
|
|
11879
11951
|
ignoreClassWithStaticInitBlock?: boolean;
|
|
11880
11952
|
ignoreRestSiblings?: boolean;
|
|
11953
|
+
ignoreUsingDeclarations?: boolean;
|
|
11881
11954
|
reportUsedIgnorePattern?: boolean;
|
|
11882
11955
|
vars?: ("all" | "local");
|
|
11883
11956
|
varsIgnorePattern?: string;
|
|
@@ -11891,6 +11964,7 @@ type UnusedImportsNoUnusedVars = [] | [(("all" | "local") | {
|
|
|
11891
11964
|
destructuredArrayIgnorePattern?: string;
|
|
11892
11965
|
ignoreClassWithStaticInitBlock?: boolean;
|
|
11893
11966
|
ignoreRestSiblings?: boolean;
|
|
11967
|
+
ignoreUsingDeclarations?: boolean;
|
|
11894
11968
|
reportUsedIgnorePattern?: boolean;
|
|
11895
11969
|
vars?: ("all" | "local");
|
|
11896
11970
|
varsIgnorePattern?: string;
|
|
@@ -12041,6 +12115,7 @@ type VueAttributeHyphenation = [] | [("always" | "never")] | [("always" | "never
|
|
|
12041
12115
|
type VueAttributesOrder = [] | [{
|
|
12042
12116
|
order?: (("DEFINITION" | "LIST_RENDERING" | "CONDITIONALS" | "RENDER_MODIFIERS" | "GLOBAL" | "UNIQUE" | "SLOT" | "TWO_WAY_BINDING" | "OTHER_DIRECTIVES" | "OTHER_ATTR" | "ATTR_STATIC" | "ATTR_DYNAMIC" | "ATTR_SHORTHAND_BOOL" | "EVENTS" | "CONTENT") | ("DEFINITION" | "LIST_RENDERING" | "CONDITIONALS" | "RENDER_MODIFIERS" | "GLOBAL" | "UNIQUE" | "SLOT" | "TWO_WAY_BINDING" | "OTHER_DIRECTIVES" | "OTHER_ATTR" | "ATTR_STATIC" | "ATTR_DYNAMIC" | "ATTR_SHORTHAND_BOOL" | "EVENTS" | "CONTENT")[])[];
|
|
12043
12117
|
alphabetical?: boolean;
|
|
12118
|
+
sortLineLength?: boolean;
|
|
12044
12119
|
}];
|
|
12045
12120
|
// ----- vue/block-lang -----
|
|
12046
12121
|
type VueBlockLang = [] | [{
|
|
@@ -12524,7 +12599,7 @@ type VueKeywordSpacing = [] | [{
|
|
|
12524
12599
|
before?: boolean;
|
|
12525
12600
|
after?: boolean;
|
|
12526
12601
|
};
|
|
12527
|
-
|
|
12602
|
+
arguments?: {
|
|
12528
12603
|
before?: boolean;
|
|
12529
12604
|
after?: boolean;
|
|
12530
12605
|
};
|
|
@@ -12540,6 +12615,10 @@ type VueKeywordSpacing = [] | [{
|
|
|
12540
12615
|
before?: boolean;
|
|
12541
12616
|
after?: boolean;
|
|
12542
12617
|
};
|
|
12618
|
+
eval?: {
|
|
12619
|
+
before?: boolean;
|
|
12620
|
+
after?: boolean;
|
|
12621
|
+
};
|
|
12543
12622
|
from?: {
|
|
12544
12623
|
before?: boolean;
|
|
12545
12624
|
after?: boolean;
|
|
@@ -12556,11 +12635,11 @@ type VueKeywordSpacing = [] | [{
|
|
|
12556
12635
|
before?: boolean;
|
|
12557
12636
|
after?: boolean;
|
|
12558
12637
|
};
|
|
12559
|
-
|
|
12638
|
+
set?: {
|
|
12560
12639
|
before?: boolean;
|
|
12561
12640
|
after?: boolean;
|
|
12562
12641
|
};
|
|
12563
|
-
|
|
12642
|
+
type?: {
|
|
12564
12643
|
before?: boolean;
|
|
12565
12644
|
after?: boolean;
|
|
12566
12645
|
};
|
|
@@ -12572,7 +12651,11 @@ type VueKeywordSpacing = [] | [{
|
|
|
12572
12651
|
before?: boolean;
|
|
12573
12652
|
after?: boolean;
|
|
12574
12653
|
};
|
|
12575
|
-
|
|
12654
|
+
accessor?: {
|
|
12655
|
+
before?: boolean;
|
|
12656
|
+
after?: boolean;
|
|
12657
|
+
};
|
|
12658
|
+
satisfies?: {
|
|
12576
12659
|
before?: boolean;
|
|
12577
12660
|
after?: boolean;
|
|
12578
12661
|
};
|
|
@@ -12715,6 +12798,10 @@ type VueNewLineBetweenMultiLineProperty = [] | [{
|
|
|
12715
12798
|
}];
|
|
12716
12799
|
// ----- vue/next-tick-style -----
|
|
12717
12800
|
type VueNextTickStyle = [] | [("promise" | "callback")];
|
|
12801
|
+
// ----- vue/no-async-in-computed-properties -----
|
|
12802
|
+
type VueNoAsyncInComputedProperties = [] | [{
|
|
12803
|
+
ignoredObjectNames?: string[];
|
|
12804
|
+
}];
|
|
12718
12805
|
// ----- vue/no-bare-strings-in-template -----
|
|
12719
12806
|
type VueNoBareStringsInTemplate = [] | [{
|
|
12720
12807
|
allowlist?: string[];
|
|
@@ -12785,6 +12872,7 @@ type VueNoExtraParens = ([] | ["functions"] | [] | ["all"] | ["all", {
|
|
|
12785
12872
|
LogicalExpression?: boolean;
|
|
12786
12873
|
AwaitExpression?: boolean;
|
|
12787
12874
|
};
|
|
12875
|
+
ignoredNodes?: string[];
|
|
12788
12876
|
}]);
|
|
12789
12877
|
// ----- vue/no-implicit-coercion -----
|
|
12790
12878
|
type VueNoImplicitCoercion = [] | [{
|
|
@@ -13005,6 +13093,10 @@ type VueNoUselessVBind = [] | [{
|
|
|
13005
13093
|
ignoreIncludesComment?: boolean;
|
|
13006
13094
|
ignoreStringEscape?: boolean;
|
|
13007
13095
|
}];
|
|
13096
|
+
// ----- vue/no-v-html -----
|
|
13097
|
+
type VueNoVHtml = [] | [{
|
|
13098
|
+
ignorePattern?: string;
|
|
13099
|
+
}];
|
|
13008
13100
|
// ----- vue/no-v-text-v-html-on-component -----
|
|
13009
13101
|
type VueNoVTextVHtmlOnComponent = [] | [{
|
|
13010
13102
|
allow?: string[];
|
|
@@ -13056,6 +13148,18 @@ type VueObjectCurlyNewline = [] | [((("always" | "never") | {
|
|
|
13056
13148
|
type VueObjectCurlySpacing = [] | [("always" | "never")] | [("always" | "never"), {
|
|
13057
13149
|
arraysInObjects?: boolean;
|
|
13058
13150
|
objectsInObjects?: boolean;
|
|
13151
|
+
overrides?: {
|
|
13152
|
+
ObjectPattern?: ("always" | "never");
|
|
13153
|
+
ObjectExpression?: ("always" | "never");
|
|
13154
|
+
ImportDeclaration?: ("always" | "never");
|
|
13155
|
+
ImportAttributes?: ("always" | "never");
|
|
13156
|
+
ExportNamedDeclaration?: ("always" | "never");
|
|
13157
|
+
ExportAllDeclaration?: ("always" | "never");
|
|
13158
|
+
TSMappedType?: ("always" | "never");
|
|
13159
|
+
TSTypeLiteral?: ("always" | "never");
|
|
13160
|
+
TSInterfaceBody?: ("always" | "never");
|
|
13161
|
+
TSEnumBody?: ("always" | "never");
|
|
13162
|
+
};
|
|
13059
13163
|
}];
|
|
13060
13164
|
// ----- vue/object-property-newline -----
|
|
13061
13165
|
type VueObjectPropertyNewline = [] | [{
|
package/dist/utils/globs.js
CHANGED
|
@@ -1,22 +1,21 @@
|
|
|
1
1
|
//#region src/utils/globs.ts
|
|
2
2
|
const srcExtensions = "?([mc])[jt]s?(x)";
|
|
3
3
|
const vueExtensions = `{vue,${srcExtensions}}`;
|
|
4
|
-
const restrictedExportsFolders = [
|
|
5
|
-
"shared",
|
|
6
|
-
"dto?(s)",
|
|
7
|
-
"model?(s)",
|
|
8
|
-
"helper?(s)",
|
|
9
|
-
"module?(s)",
|
|
10
|
-
"util?(s|ities)",
|
|
11
|
-
"composable?(s)",
|
|
12
|
-
"repo?(s|sitory|sitories)"
|
|
13
|
-
];
|
|
14
4
|
const globs = {
|
|
15
5
|
css: "**/*.css",
|
|
16
6
|
html: "**/*.html",
|
|
17
7
|
ts: "**/*.?([mc])ts?(x)",
|
|
18
8
|
src: `**/*.${srcExtensions}`,
|
|
19
|
-
restrictedExports: `**/{${
|
|
9
|
+
restrictedExports: `**/{${[
|
|
10
|
+
"shared",
|
|
11
|
+
"dto?(s)",
|
|
12
|
+
"model?(s)",
|
|
13
|
+
"helper?(s)",
|
|
14
|
+
"module?(s)",
|
|
15
|
+
"util?(s|ities)",
|
|
16
|
+
"composable?(s)",
|
|
17
|
+
"repo?(s|sitory|sitories)"
|
|
18
|
+
].join(",")}}/**/*.${srcExtensions}`,
|
|
20
19
|
vue: `**/*.${vueExtensions}`,
|
|
21
20
|
vueServerComponents: `**/*.server.${vueExtensions}`,
|
|
22
21
|
vueAppErrorLayoutsPages: `**/{{app,error},{layouts,pages}/**/*}.${vueExtensions}`,
|
|
@@ -8,8 +8,7 @@ function getIgnorePatterns({ patterns, gitignore }) {
|
|
|
8
8
|
if (gitignorePatterns.length > 0) defaultIgnorePatterns.push(...gitignorePatterns);
|
|
9
9
|
}
|
|
10
10
|
if (patterns.length > 0) defaultIgnorePatterns.push(...patterns);
|
|
11
|
-
|
|
12
|
-
return uniqueIgnorePatterns;
|
|
11
|
+
return [...new Set(defaultIgnorePatterns)];
|
|
13
12
|
}
|
|
14
13
|
|
|
15
14
|
//#endregion
|
|
@@ -5,8 +5,7 @@ import fs from "node:fs";
|
|
|
5
5
|
|
|
6
6
|
//#region src/utils/ignores/resolveGitignorePatterns.ts
|
|
7
7
|
const warningMessage = styleText("yellow", "⚠ Warning:");
|
|
8
|
-
const
|
|
9
|
-
const fallbackMessage = `Falling back to default ignore patterns. You can suppress this warning by setting ${gitignoreDisableFlag} in the config.`;
|
|
8
|
+
const fallbackMessage = `Falling back to default ignore patterns. You can suppress this warning by setting ${styleText("bgBlack", " gitignore: false ")} in the config.`;
|
|
10
9
|
function resolveGitignorePatterns(gitignorePath) {
|
|
11
10
|
const gitignoreAbsolutePath = path.resolve(process.cwd(), gitignorePath);
|
|
12
11
|
const styledGitignorePath = styleText("blue", gitignoreAbsolutePath);
|
|
@@ -30,6 +30,7 @@ function enableDetectedConfigs(options) {
|
|
|
30
30
|
if (options.configs.nuxt) {
|
|
31
31
|
if (options.configs.nuxt === true) options.configs.nuxt = {};
|
|
32
32
|
options.configs.nuxt.ui ??= isPackageDetected("@nuxt/ui", options);
|
|
33
|
+
options.configs.nuxt.icon ??= isPackageDetected("@nuxt/icon", options);
|
|
33
34
|
options.configs.nuxt.image ??= isPackageDetected("@nuxt/image", options);
|
|
34
35
|
}
|
|
35
36
|
if (options.autoDetectDeps === "verbose") logDetectedPackages();
|
|
@@ -6,26 +6,22 @@ import { createDefu } from "defu";
|
|
|
6
6
|
//#region src/utils/options/mergeWithDefaults.ts
|
|
7
7
|
const mergeOptions = createDefu((object, key, value) => {
|
|
8
8
|
const stringKey = key.toString();
|
|
9
|
-
|
|
9
|
+
if ([
|
|
10
10
|
"allowedRelativeFontUnits",
|
|
11
11
|
"macrosOrder",
|
|
12
12
|
"blocksOrder",
|
|
13
13
|
"attributesOrder"
|
|
14
|
-
]
|
|
15
|
-
if (uniqueArrayOptions.includes(stringKey)) {
|
|
14
|
+
].includes(stringKey)) {
|
|
16
15
|
object[key] = value;
|
|
17
16
|
return true;
|
|
18
17
|
}
|
|
19
18
|
const isValueTrue = value === true;
|
|
20
19
|
const isDefaultValueFalse = object[key] === false;
|
|
21
|
-
|
|
22
|
-
const fallBackToDefault = isValueEmptyString || isValueTrue && !isDefaultValueFalse;
|
|
23
|
-
return fallBackToDefault;
|
|
20
|
+
return isEmptyString(value) || isValueTrue && !isDefaultValueFalse;
|
|
24
21
|
});
|
|
25
22
|
function mergeWithDefaults(options) {
|
|
26
23
|
const optionsWithDetectedConfigs = enableDetectedConfigs(options);
|
|
27
|
-
|
|
28
|
-
return mergedOptions;
|
|
24
|
+
return mergeOptions(optionsWithDetectedConfigs, defaultOptions);
|
|
29
25
|
}
|
|
30
26
|
|
|
31
27
|
//#endregion
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region src/utils/vue/getRestrictedVueElements.ts
|
|
2
|
-
const
|
|
2
|
+
const alternativeComponentPairs = Object.entries({
|
|
3
3
|
kbd: "Kbd",
|
|
4
4
|
form: "Form",
|
|
5
5
|
input: "Input",
|
|
@@ -12,8 +12,7 @@ const alternativeComponents = {
|
|
|
12
12
|
textarea: "Textarea",
|
|
13
13
|
details: "Accordion",
|
|
14
14
|
datalist: "InputMenu"
|
|
15
|
-
};
|
|
16
|
-
const alternativeComponentPairs = Object.entries(alternativeComponents);
|
|
15
|
+
});
|
|
17
16
|
function getRestrictedVueElements(prefix) {
|
|
18
17
|
const restrictedElements = [];
|
|
19
18
|
for (const [element, component] of alternativeComponentPairs) restrictedElements.push({
|
|
@@ -1,13 +1,12 @@
|
|
|
1
1
|
//#region src/utils/vue/getRestrictedVueInputs.ts
|
|
2
|
-
const
|
|
2
|
+
const alternativeComponentPairs = Object.entries({
|
|
3
3
|
range: "Slider",
|
|
4
4
|
date: "Calendar",
|
|
5
5
|
radio: "RadioGroup",
|
|
6
6
|
checkbox: "Checkbox",
|
|
7
7
|
color: "ColorPicker",
|
|
8
8
|
number: "InputNumber"
|
|
9
|
-
};
|
|
10
|
-
const alternativeComponentPairs = Object.entries(alternativeComponents);
|
|
9
|
+
});
|
|
11
10
|
function getRestrictedVueInputs(prefix) {
|
|
12
11
|
const restrictedInputs = [];
|
|
13
12
|
for (const [input, component] of alternativeComponentPairs) restrictedInputs.push({
|