@vinicunca/eslint-config 2.0.13 → 2.1.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/dist/index.cjs +447 -280
- package/dist/index.d.cts +239 -45
- package/dist/index.d.ts +239 -45
- package/dist/index.js +437 -280
- package/package.json +28 -22
package/dist/index.cjs
CHANGED
|
@@ -30,22 +30,30 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
30
30
|
// src/index.ts
|
|
31
31
|
var src_exports = {};
|
|
32
32
|
__export(src_exports, {
|
|
33
|
+
GLOB_ALL_SRC: () => GLOB_ALL_SRC,
|
|
34
|
+
GLOB_CSS: () => GLOB_CSS,
|
|
33
35
|
GLOB_EXCLUDE: () => GLOB_EXCLUDE,
|
|
36
|
+
GLOB_HTML: () => GLOB_HTML,
|
|
34
37
|
GLOB_JS: () => GLOB_JS,
|
|
35
38
|
GLOB_JSON: () => GLOB_JSON,
|
|
36
39
|
GLOB_JSON5: () => GLOB_JSON5,
|
|
37
40
|
GLOB_JSONC: () => GLOB_JSONC,
|
|
38
41
|
GLOB_JSX: () => GLOB_JSX,
|
|
42
|
+
GLOB_LESS: () => GLOB_LESS,
|
|
39
43
|
GLOB_MARKDOWN: () => GLOB_MARKDOWN,
|
|
40
44
|
GLOB_MARKDOWN_CODE: () => GLOB_MARKDOWN_CODE,
|
|
41
45
|
GLOB_MARKDOWN_IN_MARKDOWN: () => GLOB_MARKDOWN_IN_MARKDOWN,
|
|
46
|
+
GLOB_POSTCSS: () => GLOB_POSTCSS,
|
|
47
|
+
GLOB_SCSS: () => GLOB_SCSS,
|
|
42
48
|
GLOB_SRC: () => GLOB_SRC,
|
|
43
49
|
GLOB_SRC_EXT: () => GLOB_SRC_EXT,
|
|
50
|
+
GLOB_STYLE: () => GLOB_STYLE,
|
|
44
51
|
GLOB_TESTS: () => GLOB_TESTS,
|
|
45
52
|
GLOB_TS: () => GLOB_TS,
|
|
46
53
|
GLOB_TSX: () => GLOB_TSX,
|
|
47
54
|
GLOB_VUE: () => GLOB_VUE,
|
|
48
55
|
GLOB_YAML: () => GLOB_YAML,
|
|
56
|
+
STYLISTIC_CONFIG_DEFAULTS: () => STYLISTIC_CONFIG_DEFAULTS,
|
|
49
57
|
combineConfigs: () => combineConfigs,
|
|
50
58
|
comments: () => comments,
|
|
51
59
|
ignores: () => ignores,
|
|
@@ -56,6 +64,7 @@ __export(src_exports, {
|
|
|
56
64
|
jsonc: () => jsonc,
|
|
57
65
|
markdown: () => markdown,
|
|
58
66
|
node: () => node,
|
|
67
|
+
parserPlain: () => parserPlain,
|
|
59
68
|
pluginComments: () => import_eslint_plugin_eslint_comments.default,
|
|
60
69
|
pluginImport: () => pluginImport,
|
|
61
70
|
pluginNode: () => import_eslint_plugin_n.default,
|
|
@@ -69,6 +78,7 @@ __export(src_exports, {
|
|
|
69
78
|
sortTsconfig: () => sortTsconfig,
|
|
70
79
|
stylistic: () => stylistic,
|
|
71
80
|
test: () => test,
|
|
81
|
+
toArray: () => toArray,
|
|
72
82
|
typescript: () => typescript,
|
|
73
83
|
unicorn: () => unicorn,
|
|
74
84
|
unocss: () => unocss,
|
|
@@ -95,9 +105,6 @@ function purry(fn, args, lazy) {
|
|
|
95
105
|
}
|
|
96
106
|
throw new Error("Wrong number of arguments");
|
|
97
107
|
}
|
|
98
|
-
function isArray(data) {
|
|
99
|
-
return Array.isArray(data);
|
|
100
|
-
}
|
|
101
108
|
function isBoolean(data) {
|
|
102
109
|
return typeof data === "boolean";
|
|
103
110
|
}
|
|
@@ -116,21 +123,6 @@ function toString(value) {
|
|
|
116
123
|
function isObject(data) {
|
|
117
124
|
return toString(data) === "[object Object]";
|
|
118
125
|
}
|
|
119
|
-
function isString(data) {
|
|
120
|
-
return typeof data === "string";
|
|
121
|
-
}
|
|
122
|
-
function isEmpty(data) {
|
|
123
|
-
if (isArray(data) || isString(data)) {
|
|
124
|
-
return data.length === 0;
|
|
125
|
-
}
|
|
126
|
-
if (isObject(data)) {
|
|
127
|
-
for (const _ in data) {
|
|
128
|
-
return false;
|
|
129
|
-
}
|
|
130
|
-
return !(data instanceof RegExp);
|
|
131
|
-
}
|
|
132
|
-
return false;
|
|
133
|
-
}
|
|
134
126
|
function _countBy(indexed) {
|
|
135
127
|
return (array, fn) => {
|
|
136
128
|
return array.reduce((ret, item, index) => {
|
|
@@ -1057,7 +1049,7 @@ function toPairs(object) {
|
|
|
1057
1049
|
|
|
1058
1050
|
// src/base.ts
|
|
1059
1051
|
var import_local_pkg = require("local-pkg");
|
|
1060
|
-
var
|
|
1052
|
+
var import_node_process2 = __toESM(require("process"), 1);
|
|
1061
1053
|
|
|
1062
1054
|
// src/flags.ts
|
|
1063
1055
|
var ERROR = "error";
|
|
@@ -1099,16 +1091,50 @@ var import_node_fs = __toESM(require("fs"), 1);
|
|
|
1099
1091
|
var import_parse_gitignore = __toESM(require("parse-gitignore"), 1);
|
|
1100
1092
|
|
|
1101
1093
|
// src/globs.ts
|
|
1094
|
+
var GLOB_SRC = "**/*.?([cm])[jt]s?(x)";
|
|
1095
|
+
var GLOB_SRC_EXT = "?([cm])[jt]s?(x)";
|
|
1102
1096
|
var GLOB_JS = "**/*.?([cm])js";
|
|
1103
1097
|
var GLOB_JSX = "**/*.?([cm])jsx";
|
|
1104
1098
|
var GLOB_TS = "**/*.?([cm])ts";
|
|
1105
1099
|
var GLOB_TSX = "**/*.?([cm])tsx";
|
|
1100
|
+
var GLOB_STYLE = "**/*.{c,le,sc}ss";
|
|
1101
|
+
var GLOB_CSS = "**/*.css";
|
|
1102
|
+
var GLOB_POSTCSS = "**/*.{p,post}css";
|
|
1103
|
+
var GLOB_LESS = "**/*.less";
|
|
1104
|
+
var GLOB_SCSS = "**/*.scss";
|
|
1105
|
+
var GLOB_JSON = "**/*.json";
|
|
1106
|
+
var GLOB_JSON5 = "**/*.json5";
|
|
1107
|
+
var GLOB_JSONC = "**/*.jsonc";
|
|
1108
|
+
var GLOB_MARKDOWN = "**/*.md";
|
|
1109
|
+
var GLOB_MARKDOWN_IN_MARKDOWN = "**/*.md/*.md";
|
|
1110
|
+
var GLOB_VUE = "**/*.vue";
|
|
1111
|
+
var GLOB_YAML = "**/*.y?(a)ml";
|
|
1112
|
+
var GLOB_HTML = "**/*.htm?(l)";
|
|
1113
|
+
var GLOB_MARKDOWN_CODE = `${GLOB_MARKDOWN}/${GLOB_SRC}`;
|
|
1114
|
+
var GLOB_TESTS = [
|
|
1115
|
+
`**/__tests__/**/*.${GLOB_SRC_EXT}`,
|
|
1116
|
+
`**/*.spec.${GLOB_SRC_EXT}`,
|
|
1117
|
+
`**/*.test.${GLOB_SRC_EXT}`,
|
|
1118
|
+
`**/*.bench.${GLOB_SRC_EXT}`,
|
|
1119
|
+
`**/*.benchmark.${GLOB_SRC_EXT}`
|
|
1120
|
+
];
|
|
1121
|
+
var GLOB_ALL_SRC = [
|
|
1122
|
+
GLOB_SRC,
|
|
1123
|
+
GLOB_STYLE,
|
|
1124
|
+
GLOB_JSON,
|
|
1125
|
+
GLOB_JSON5,
|
|
1126
|
+
GLOB_MARKDOWN,
|
|
1127
|
+
GLOB_VUE,
|
|
1128
|
+
GLOB_YAML,
|
|
1129
|
+
GLOB_HTML
|
|
1130
|
+
];
|
|
1106
1131
|
var GLOB_EXCLUDE = [
|
|
1107
1132
|
"**/node_modules",
|
|
1108
1133
|
"**/dist",
|
|
1109
1134
|
"**/package-lock.json",
|
|
1110
1135
|
"**/yarn.lock",
|
|
1111
1136
|
"**/pnpm-lock.yaml",
|
|
1137
|
+
"**/bun.lockb",
|
|
1112
1138
|
"**/output",
|
|
1113
1139
|
"**/coverage",
|
|
1114
1140
|
"**/temp",
|
|
@@ -1132,23 +1158,6 @@ var GLOB_EXCLUDE = [
|
|
|
1132
1158
|
"**/auto-import?(s).d.ts",
|
|
1133
1159
|
"**/components.d.ts"
|
|
1134
1160
|
];
|
|
1135
|
-
var GLOB_SRC = "**/*.?([cm])[jt]s?(x)";
|
|
1136
|
-
var GLOB_SRC_EXT = "?([cm])[jt]s?(x)";
|
|
1137
|
-
var GLOB_TESTS = [
|
|
1138
|
-
`**/__tests__/**/*.${GLOB_SRC_EXT}`,
|
|
1139
|
-
`**/*.spec.${GLOB_SRC_EXT}`,
|
|
1140
|
-
`**/*.test.${GLOB_SRC_EXT}`,
|
|
1141
|
-
`**/*.bench.${GLOB_SRC_EXT}`,
|
|
1142
|
-
`**/*.benchmark.${GLOB_SRC_EXT}`
|
|
1143
|
-
];
|
|
1144
|
-
var GLOB_VUE = "**/*.vue";
|
|
1145
|
-
var GLOB_JSON = "**/*.json";
|
|
1146
|
-
var GLOB_JSON5 = "**/*.json5";
|
|
1147
|
-
var GLOB_JSONC = "**/*.jsonc";
|
|
1148
|
-
var GLOB_YAML = "**/*.y?(a)ml";
|
|
1149
|
-
var GLOB_MARKDOWN = "**/*.md";
|
|
1150
|
-
var GLOB_MARKDOWN_IN_MARKDOWN = "**/*.md/*.md";
|
|
1151
|
-
var GLOB_MARKDOWN_CODE = `${GLOB_MARKDOWN}/${GLOB_SRC}`;
|
|
1152
1161
|
|
|
1153
1162
|
// src/configs/ignores.ts
|
|
1154
1163
|
async function ignores({
|
|
@@ -1224,6 +1233,7 @@ async function javascript(options = {}) {
|
|
|
1224
1233
|
languageOptions: {
|
|
1225
1234
|
ecmaVersion: 2022,
|
|
1226
1235
|
globals: {
|
|
1236
|
+
...import_globals.default.browser,
|
|
1227
1237
|
...import_globals.default.es2021,
|
|
1228
1238
|
...import_globals.default.node,
|
|
1229
1239
|
document: "readonly",
|
|
@@ -1506,8 +1516,8 @@ async function javascript(options = {}) {
|
|
|
1506
1516
|
|
|
1507
1517
|
// src/utils.ts
|
|
1508
1518
|
async function combineConfigs(...configs) {
|
|
1509
|
-
const
|
|
1510
|
-
return
|
|
1519
|
+
const resolved = await Promise.all(configs);
|
|
1520
|
+
return resolved.flat();
|
|
1511
1521
|
}
|
|
1512
1522
|
function renameRules(rules, from, to) {
|
|
1513
1523
|
return Object.fromEntries(
|
|
@@ -1524,9 +1534,35 @@ async function interopDefault(m) {
|
|
|
1524
1534
|
const resolved = await m;
|
|
1525
1535
|
return resolved.default || resolved;
|
|
1526
1536
|
}
|
|
1537
|
+
var parserPlain = {
|
|
1538
|
+
meta: {
|
|
1539
|
+
name: "parser-plain"
|
|
1540
|
+
},
|
|
1541
|
+
parseForESLint: (code) => ({
|
|
1542
|
+
ast: {
|
|
1543
|
+
body: [],
|
|
1544
|
+
comments: [],
|
|
1545
|
+
loc: { end: code.length, start: 0 },
|
|
1546
|
+
range: [0, code.length],
|
|
1547
|
+
tokens: [],
|
|
1548
|
+
type: "Program"
|
|
1549
|
+
},
|
|
1550
|
+
scopeManager: null,
|
|
1551
|
+
services: { isPlain: true },
|
|
1552
|
+
visitorKeys: {
|
|
1553
|
+
Program: []
|
|
1554
|
+
}
|
|
1555
|
+
})
|
|
1556
|
+
};
|
|
1557
|
+
function toArray(value) {
|
|
1558
|
+
return Array.isArray(value) ? value : [value];
|
|
1559
|
+
}
|
|
1527
1560
|
|
|
1528
1561
|
// src/configs/jsdoc.ts
|
|
1529
|
-
async function jsdoc() {
|
|
1562
|
+
async function jsdoc(options = {}) {
|
|
1563
|
+
const {
|
|
1564
|
+
stylistic: stylistic2 = true
|
|
1565
|
+
} = options;
|
|
1530
1566
|
return [
|
|
1531
1567
|
{
|
|
1532
1568
|
name: "vinicunca:jsdoc",
|
|
@@ -1553,7 +1589,11 @@ async function jsdoc() {
|
|
|
1553
1589
|
"jsdoc/require-returns-check": WARN,
|
|
1554
1590
|
"jsdoc/require-returns-description": WARN,
|
|
1555
1591
|
"jsdoc/require-yields-check": WARN,
|
|
1556
|
-
"jsdoc/valid-types": WARN
|
|
1592
|
+
"jsdoc/valid-types": WARN,
|
|
1593
|
+
...stylistic2 ? {
|
|
1594
|
+
"jsdoc/check-alignment": "warn",
|
|
1595
|
+
"jsdoc/multiline-blocks": "warn"
|
|
1596
|
+
} : {}
|
|
1557
1597
|
}
|
|
1558
1598
|
}
|
|
1559
1599
|
];
|
|
@@ -1635,30 +1675,41 @@ async function jsonc(options = {}) {
|
|
|
1635
1675
|
}
|
|
1636
1676
|
|
|
1637
1677
|
// src/configs/markdown.ts
|
|
1678
|
+
var import_eslint_merge_processors = require("eslint-merge-processors");
|
|
1638
1679
|
async function markdown(options = {}) {
|
|
1639
1680
|
const {
|
|
1640
1681
|
componentExts = [],
|
|
1641
1682
|
files = [GLOB_MARKDOWN],
|
|
1642
1683
|
overrides = {}
|
|
1643
1684
|
} = options;
|
|
1685
|
+
const markdown2 = await interopDefault(import("eslint-plugin-markdown"));
|
|
1644
1686
|
return [
|
|
1645
1687
|
{
|
|
1646
1688
|
name: "vinicunca:markdown:setup",
|
|
1647
1689
|
plugins: {
|
|
1648
|
-
|
|
1649
|
-
markdown: await interopDefault(import("eslint-plugin-markdown"))
|
|
1690
|
+
markdown: markdown2
|
|
1650
1691
|
}
|
|
1651
1692
|
},
|
|
1652
1693
|
{
|
|
1653
1694
|
files,
|
|
1654
1695
|
ignores: [GLOB_MARKDOWN_IN_MARKDOWN],
|
|
1655
1696
|
name: "vinicunca:markdown:processor",
|
|
1656
|
-
|
|
1697
|
+
/**
|
|
1698
|
+
* `eslint-plugin-markdown` only creates virtual files for code blocks,
|
|
1699
|
+
* but not the markdown file itself. We use `eslint-merge-processors` to
|
|
1700
|
+
* add a pass-through processor for the markdown file itself.
|
|
1701
|
+
*/
|
|
1702
|
+
processor: (0, import_eslint_merge_processors.mergeProcessors)([
|
|
1703
|
+
markdown2.processors.markdown,
|
|
1704
|
+
import_eslint_merge_processors.processorPassThrough
|
|
1705
|
+
])
|
|
1657
1706
|
},
|
|
1658
1707
|
{
|
|
1659
|
-
files
|
|
1660
|
-
|
|
1661
|
-
|
|
1708
|
+
files,
|
|
1709
|
+
languageOptions: {
|
|
1710
|
+
parser: parserPlain
|
|
1711
|
+
},
|
|
1712
|
+
name: "vinicunca:markdown:parser"
|
|
1662
1713
|
},
|
|
1663
1714
|
{
|
|
1664
1715
|
files: [
|
|
@@ -2080,6 +2131,8 @@ var STYLISTIC_CONFIG_DEFAULTS = {
|
|
|
2080
2131
|
async function stylistic(options = {}) {
|
|
2081
2132
|
const {
|
|
2082
2133
|
indent,
|
|
2134
|
+
jsx,
|
|
2135
|
+
overrides = {},
|
|
2083
2136
|
quotes,
|
|
2084
2137
|
semi
|
|
2085
2138
|
} = {
|
|
@@ -2087,6 +2140,14 @@ async function stylistic(options = {}) {
|
|
|
2087
2140
|
...options
|
|
2088
2141
|
};
|
|
2089
2142
|
const pluginStylistic = await interopDefault(import("@stylistic/eslint-plugin"));
|
|
2143
|
+
const config = pluginStylistic.configs.customize({
|
|
2144
|
+
flat: true,
|
|
2145
|
+
indent,
|
|
2146
|
+
jsx,
|
|
2147
|
+
pluginName: "style",
|
|
2148
|
+
quotes,
|
|
2149
|
+
semi
|
|
2150
|
+
});
|
|
2090
2151
|
return [
|
|
2091
2152
|
{
|
|
2092
2153
|
name: "vinicunca:stylistic",
|
|
@@ -2095,83 +2156,15 @@ async function stylistic(options = {}) {
|
|
|
2095
2156
|
vinicunca: import_eslint_plugin_vinicunca.default
|
|
2096
2157
|
},
|
|
2097
2158
|
rules: {
|
|
2159
|
+
...config.rules,
|
|
2098
2160
|
"curly": [ERROR, "all"],
|
|
2099
2161
|
"style/array-bracket-newline": [ERROR, CONSISTENT],
|
|
2100
2162
|
"style/array-bracket-spacing": [ERROR, NEVER],
|
|
2101
2163
|
"style/array-element-newline": [ERROR, CONSISTENT],
|
|
2102
2164
|
"style/arrow-parens": [ERROR, ALWAYS],
|
|
2103
|
-
"style/arrow-spacing": [ERROR, { after: true, before: true }],
|
|
2104
|
-
"style/block-spacing": [ERROR, ALWAYS],
|
|
2105
2165
|
"style/brace-style": [ERROR],
|
|
2106
|
-
"style/comma-dangle": [ERROR, "always-multiline"],
|
|
2107
|
-
"style/comma-spacing": [ERROR, { after: true, before: false }],
|
|
2108
|
-
"style/comma-style": [ERROR, "last"],
|
|
2109
|
-
"style/computed-property-spacing": [ERROR, NEVER, { enforceForClassMembers: true }],
|
|
2110
|
-
"style/dot-location": [ERROR, "property"],
|
|
2111
|
-
"style/eol-last": ERROR,
|
|
2112
2166
|
"style/func-call-spacing": [ERROR, NEVER],
|
|
2113
|
-
"style/indent": [ERROR, indent, {
|
|
2114
|
-
ArrayExpression: 1,
|
|
2115
|
-
CallExpression: { arguments: 1 },
|
|
2116
|
-
FunctionDeclaration: { body: 1, parameters: 1 },
|
|
2117
|
-
FunctionExpression: { body: 1, parameters: 1 },
|
|
2118
|
-
ImportDeclaration: 1,
|
|
2119
|
-
MemberExpression: 1,
|
|
2120
|
-
ObjectExpression: 1,
|
|
2121
|
-
SwitchCase: 1,
|
|
2122
|
-
VariableDeclarator: 1,
|
|
2123
|
-
flatTernaryExpressions: false,
|
|
2124
|
-
ignoreComments: false,
|
|
2125
|
-
ignoredNodes: [
|
|
2126
|
-
"TemplateLiteral *",
|
|
2127
|
-
"JSXElement",
|
|
2128
|
-
"JSXElement > *",
|
|
2129
|
-
"JSXAttribute",
|
|
2130
|
-
"JSXIdentifier",
|
|
2131
|
-
"JSXNamespacedName",
|
|
2132
|
-
"JSXMemberExpression",
|
|
2133
|
-
"JSXSpreadAttribute",
|
|
2134
|
-
"JSXExpressionContainer",
|
|
2135
|
-
"JSXOpeningElement",
|
|
2136
|
-
"JSXClosingElement",
|
|
2137
|
-
"JSXFragment",
|
|
2138
|
-
"JSXOpeningFragment",
|
|
2139
|
-
"JSXClosingFragment",
|
|
2140
|
-
"JSXText",
|
|
2141
|
-
"JSXEmptyExpression",
|
|
2142
|
-
"JSXSpreadChild",
|
|
2143
|
-
"TSTypeParameterInstantiation",
|
|
2144
|
-
"FunctionExpression > .params[decorators.length > 0]",
|
|
2145
|
-
"FunctionExpression > .params > :matches(Decorator, :not(:first-child))",
|
|
2146
|
-
"ClassBody.body > PropertyDefinition[decorators.length > 0] > .key"
|
|
2147
|
-
],
|
|
2148
|
-
offsetTernaryExpressions: true,
|
|
2149
|
-
outerIIFEBody: 1
|
|
2150
|
-
}],
|
|
2151
|
-
"style/indent-binary-ops": [ERROR, indent],
|
|
2152
|
-
"style/key-spacing": [ERROR, { afterColon: true, beforeColon: false }],
|
|
2153
|
-
"style/keyword-spacing": [ERROR, { after: true, before: true }],
|
|
2154
|
-
"style/lines-between-class-members": [ERROR, ALWAYS, { exceptAfterSingleLine: true }],
|
|
2155
|
-
"style/max-statements-per-line": [ERROR, { max: 1 }],
|
|
2156
2167
|
"style/member-delimiter-style": [ERROR],
|
|
2157
|
-
"style/multiline-ternary": [ERROR, "always-multiline"],
|
|
2158
|
-
"style/new-parens": ERROR,
|
|
2159
|
-
"style/no-extra-parens": [ERROR, "functions"],
|
|
2160
|
-
"style/no-floating-decimal": ERROR,
|
|
2161
|
-
"style/no-mixed-operators": [ERROR, {
|
|
2162
|
-
allowSamePrecedence: true,
|
|
2163
|
-
groups: [
|
|
2164
|
-
["==", "!=", "===", "!==", ">", ">=", "<", "<="],
|
|
2165
|
-
["&&", "||"],
|
|
2166
|
-
["in", "instanceof"]
|
|
2167
|
-
]
|
|
2168
|
-
}],
|
|
2169
|
-
"style/no-mixed-spaces-and-tabs": ERROR,
|
|
2170
|
-
"style/no-multi-spaces": ERROR,
|
|
2171
|
-
"style/no-multiple-empty-lines": [ERROR, { max: 1, maxBOF: 0, maxEOF: 1 }],
|
|
2172
|
-
"style/no-tabs": ERROR,
|
|
2173
|
-
"style/no-trailing-spaces": ERROR,
|
|
2174
|
-
"style/no-whitespace-before-property": ERROR,
|
|
2175
2168
|
"style/object-curly-newline": [ERROR, { consistent: true, multiline: true }],
|
|
2176
2169
|
"style/object-curly-spacing": [ERROR, ALWAYS],
|
|
2177
2170
|
"style/object-property-newline": [ERROR, { allowMultiplePropertiesPerLine: true }],
|
|
@@ -2182,36 +2175,10 @@ async function stylistic(options = {}) {
|
|
|
2182
2175
|
"style/rest-spread-spacing": [ERROR, NEVER],
|
|
2183
2176
|
"style/semi": [ERROR, semi ? ALWAYS : NEVER],
|
|
2184
2177
|
"style/semi-spacing": [ERROR, { after: true, before: false }],
|
|
2185
|
-
"style/space-before-blocks": [ERROR, ALWAYS],
|
|
2186
|
-
"style/space-before-function-paren": [ERROR, {
|
|
2187
|
-
anonymous: NEVER,
|
|
2188
|
-
asyncArrow: ALWAYS,
|
|
2189
|
-
named: NEVER
|
|
2190
|
-
}],
|
|
2191
|
-
"style/space-in-parens": [ERROR, NEVER],
|
|
2192
|
-
"style/space-infix-ops": ERROR,
|
|
2193
|
-
"style/space-unary-ops": [ERROR, { nonwords: false, words: true }],
|
|
2194
|
-
"style/spaced-comment": [ERROR, "always", {
|
|
2195
|
-
block: {
|
|
2196
|
-
balanced: true,
|
|
2197
|
-
exceptions: ["*"],
|
|
2198
|
-
markers: ["!"]
|
|
2199
|
-
},
|
|
2200
|
-
line: {
|
|
2201
|
-
exceptions: ["/", "#"],
|
|
2202
|
-
markers: ["/"]
|
|
2203
|
-
}
|
|
2204
|
-
}],
|
|
2205
|
-
"style/template-curly-spacing": ERROR,
|
|
2206
|
-
"style/template-tag-spacing": [ERROR, NEVER],
|
|
2207
|
-
"style/type-annotation-spacing": [ERROR, {}],
|
|
2208
|
-
"style/wrap-iife": [ERROR, "any", {
|
|
2209
|
-
functionPrototypeMethods: true
|
|
2210
|
-
}],
|
|
2211
|
-
"style/yield-star-spacing": [ERROR, "both"],
|
|
2212
2178
|
"vinicunca/consistent-list-newline": ERROR,
|
|
2213
2179
|
"vinicunca/if-newline": ERROR,
|
|
2214
|
-
"vinicunca/top-level-function": ERROR
|
|
2180
|
+
"vinicunca/top-level-function": ERROR,
|
|
2181
|
+
...overrides
|
|
2215
2182
|
}
|
|
2216
2183
|
},
|
|
2217
2184
|
{
|
|
@@ -2256,6 +2223,7 @@ async function test(options = {}) {
|
|
|
2256
2223
|
files,
|
|
2257
2224
|
name: "vinicunca:test:rules",
|
|
2258
2225
|
rules: {
|
|
2226
|
+
"node/prefer-global/process": OFF,
|
|
2259
2227
|
"test/consistent-test-it": [ERROR, { fn: "it", withinDescribe: "it" }],
|
|
2260
2228
|
"test/no-identical-title": ERROR,
|
|
2261
2229
|
"test/no-only-tests": isInEditor ? OFF : ERROR,
|
|
@@ -2273,13 +2241,13 @@ async function typescript(options = {}) {
|
|
|
2273
2241
|
const {
|
|
2274
2242
|
componentExts = [],
|
|
2275
2243
|
overrides = {},
|
|
2276
|
-
parserOptions = {}
|
|
2277
|
-
tsconfigPath = []
|
|
2244
|
+
parserOptions = {}
|
|
2278
2245
|
} = options ?? {};
|
|
2279
2246
|
const files = options.files ?? [
|
|
2280
2247
|
GLOB_SRC,
|
|
2281
2248
|
...componentExts.map((ext) => `**/*.${ext}`)
|
|
2282
2249
|
];
|
|
2250
|
+
const filesTypeAware = options.filesTypeAware ?? [GLOB_TS, GLOB_TSX];
|
|
2283
2251
|
const typeAwareRules = {
|
|
2284
2252
|
"dot-notation": OFF,
|
|
2285
2253
|
"no-implied-eval": OFF,
|
|
@@ -2295,31 +2263,19 @@ async function typescript(options = {}) {
|
|
|
2295
2263
|
"ts/restrict-plus-operands": ERROR,
|
|
2296
2264
|
"ts/restrict-template-expressions": ERROR
|
|
2297
2265
|
};
|
|
2298
|
-
|
|
2299
|
-
let additionalTypeAwareRules = {};
|
|
2300
|
-
if (!isEmpty(tsconfigPath)) {
|
|
2301
|
-
tsConfigOptions = {
|
|
2302
|
-
project: tsconfigPath,
|
|
2303
|
-
tsconfigRootDir: import_node_process.default.cwd()
|
|
2304
|
-
};
|
|
2305
|
-
additionalTypeAwareRules = typeAwareRules;
|
|
2306
|
-
}
|
|
2266
|
+
const tsconfigPath = options?.tsconfigPath ? toArray(options.tsconfigPath) : void 0;
|
|
2307
2267
|
const [
|
|
2308
2268
|
pluginTs,
|
|
2309
|
-
parserTs
|
|
2310
|
-
pluginStylistic
|
|
2269
|
+
parserTs
|
|
2311
2270
|
] = await Promise.all([
|
|
2312
2271
|
interopDefault(import("@typescript-eslint/eslint-plugin")),
|
|
2313
|
-
interopDefault(import("@typescript-eslint/parser"))
|
|
2314
|
-
interopDefault(import("@stylistic/eslint-plugin"))
|
|
2272
|
+
interopDefault(import("@typescript-eslint/parser"))
|
|
2315
2273
|
]);
|
|
2316
2274
|
return [
|
|
2317
2275
|
{
|
|
2318
2276
|
// Install the plugins without globs, so they can be configured separately.
|
|
2319
2277
|
name: "vinicunca:typescript:setup",
|
|
2320
2278
|
plugins: {
|
|
2321
|
-
import: pluginImport,
|
|
2322
|
-
style: pluginStylistic,
|
|
2323
2279
|
ts: pluginTs,
|
|
2324
2280
|
vinicunca: import_eslint_plugin_vinicunca.default
|
|
2325
2281
|
}
|
|
@@ -2331,7 +2287,10 @@ async function typescript(options = {}) {
|
|
|
2331
2287
|
parserOptions: {
|
|
2332
2288
|
extraFileExtensions: componentExts.map((ext) => `.${ext}`),
|
|
2333
2289
|
sourceType: "module",
|
|
2334
|
-
...
|
|
2290
|
+
...tsconfigPath ? {
|
|
2291
|
+
project: tsconfigPath,
|
|
2292
|
+
tsconfigRootDir: import_node_process.default.cwd()
|
|
2293
|
+
} : {},
|
|
2335
2294
|
...parserOptions
|
|
2336
2295
|
}
|
|
2337
2296
|
},
|
|
@@ -2354,8 +2313,6 @@ async function typescript(options = {}) {
|
|
|
2354
2313
|
"no-unused-vars": OFF,
|
|
2355
2314
|
"no-use-before-define": OFF,
|
|
2356
2315
|
"no-useless-constructor": OFF,
|
|
2357
|
-
"style/type-generic-spacing": ERROR,
|
|
2358
|
-
"style/type-named-tuple-spacing": ERROR,
|
|
2359
2316
|
"ts/ban-ts-comment": [ERROR, { "ts-ignore": "allow-with-description" }],
|
|
2360
2317
|
"ts/ban-types": [ERROR, { types: { Function: false } }],
|
|
2361
2318
|
"ts/consistent-type-definitions": [ERROR, "interface"],
|
|
@@ -2384,8 +2341,14 @@ async function typescript(options = {}) {
|
|
|
2384
2341
|
"ts/parameter-properties": OFF,
|
|
2385
2342
|
"ts/prefer-ts-expect-error": ERROR,
|
|
2386
2343
|
"ts/triple-slash-reference": OFF,
|
|
2387
|
-
|
|
2388
|
-
|
|
2344
|
+
...overrides
|
|
2345
|
+
}
|
|
2346
|
+
},
|
|
2347
|
+
{
|
|
2348
|
+
files: filesTypeAware,
|
|
2349
|
+
name: "vinicunca:typescript:rules-type-aware",
|
|
2350
|
+
rules: {
|
|
2351
|
+
...tsconfigPath ? typeAwareRules : {},
|
|
2389
2352
|
...overrides
|
|
2390
2353
|
}
|
|
2391
2354
|
},
|
|
@@ -2395,6 +2358,7 @@ async function typescript(options = {}) {
|
|
|
2395
2358
|
rules: {
|
|
2396
2359
|
"eslint-comments/no-unlimited-disable": OFF,
|
|
2397
2360
|
"import/no-duplicates": OFF,
|
|
2361
|
+
"no-restricted-syntax": "off",
|
|
2398
2362
|
"unused-imports/no-unused-vars": OFF
|
|
2399
2363
|
}
|
|
2400
2364
|
},
|
|
@@ -2417,10 +2381,7 @@ async function typescript(options = {}) {
|
|
|
2417
2381
|
}
|
|
2418
2382
|
|
|
2419
2383
|
// src/configs/unicorn.ts
|
|
2420
|
-
async function unicorn(
|
|
2421
|
-
const {
|
|
2422
|
-
overrides = {}
|
|
2423
|
-
} = options;
|
|
2384
|
+
async function unicorn() {
|
|
2424
2385
|
return [
|
|
2425
2386
|
{
|
|
2426
2387
|
name: "vinicunca:unicorn",
|
|
@@ -2440,8 +2401,7 @@ async function unicorn(options = {}) {
|
|
|
2440
2401
|
"unicorn/prefer-number-properties": ERROR,
|
|
2441
2402
|
"unicorn/prefer-string-starts-ends-with": ERROR,
|
|
2442
2403
|
"unicorn/prefer-type-error": ERROR,
|
|
2443
|
-
"unicorn/throw-new-error": ERROR
|
|
2444
|
-
...overrides
|
|
2404
|
+
"unicorn/throw-new-error": ERROR
|
|
2445
2405
|
}
|
|
2446
2406
|
}
|
|
2447
2407
|
];
|
|
@@ -2478,32 +2438,26 @@ async function unocss(options = {}) {
|
|
|
2478
2438
|
}
|
|
2479
2439
|
|
|
2480
2440
|
// src/configs/vue.ts
|
|
2481
|
-
var
|
|
2441
|
+
var import_eslint_merge_processors2 = require("eslint-merge-processors");
|
|
2482
2442
|
async function vue(options = {}) {
|
|
2483
2443
|
const {
|
|
2484
2444
|
files = [GLOB_VUE],
|
|
2485
2445
|
overrides = {},
|
|
2486
|
-
stylistic: stylistic2 = true
|
|
2487
|
-
typescript: typescript2 = {}
|
|
2446
|
+
stylistic: stylistic2 = true
|
|
2488
2447
|
} = options;
|
|
2448
|
+
const sfcBlocks = options.sfcBlocks === true ? {} : options.sfcBlocks ?? {};
|
|
2489
2449
|
const {
|
|
2490
2450
|
indent = 2
|
|
2491
2451
|
} = isBoolean(stylistic2) ? {} : stylistic2;
|
|
2492
|
-
let tsConfigOptions = {};
|
|
2493
|
-
const tsconfigPath = typescript2.tsconfigPath ?? [];
|
|
2494
|
-
if (!isEmpty(tsconfigPath)) {
|
|
2495
|
-
tsConfigOptions = {
|
|
2496
|
-
project: tsconfigPath,
|
|
2497
|
-
tsconfigRootDir: import_node_process2.default.cwd()
|
|
2498
|
-
};
|
|
2499
|
-
}
|
|
2500
2452
|
const [
|
|
2501
2453
|
pluginVue,
|
|
2502
|
-
parserVue
|
|
2454
|
+
parserVue,
|
|
2455
|
+
processorVueBlocks
|
|
2503
2456
|
] = await Promise.all([
|
|
2504
2457
|
// @ts-expect-error missing types
|
|
2505
2458
|
interopDefault(import("eslint-plugin-vue")),
|
|
2506
|
-
interopDefault(import("vue-eslint-parser"))
|
|
2459
|
+
interopDefault(import("vue-eslint-parser")),
|
|
2460
|
+
interopDefault(import("eslint-processor-vue-blocks"))
|
|
2507
2461
|
]);
|
|
2508
2462
|
return [
|
|
2509
2463
|
{
|
|
@@ -2521,39 +2475,30 @@ async function vue(options = {}) {
|
|
|
2521
2475
|
jsx: true
|
|
2522
2476
|
},
|
|
2523
2477
|
extraFileExtensions: [".vue"],
|
|
2524
|
-
parser:
|
|
2525
|
-
sourceType: "module"
|
|
2526
|
-
...tsConfigOptions
|
|
2478
|
+
parser: options.typescript ? await interopDefault(import("@typescript-eslint/parser")) : null,
|
|
2479
|
+
sourceType: "module"
|
|
2527
2480
|
}
|
|
2528
2481
|
},
|
|
2529
2482
|
name: "vinicunca:vue:rules",
|
|
2530
|
-
processor: pluginVue.processors[".vue"],
|
|
2483
|
+
processor: sfcBlocks === false ? pluginVue.processors[".vue"] : (0, import_eslint_merge_processors2.mergeProcessors)([
|
|
2484
|
+
pluginVue.processors[".vue"],
|
|
2485
|
+
processorVueBlocks({
|
|
2486
|
+
...sfcBlocks,
|
|
2487
|
+
blocks: {
|
|
2488
|
+
styles: true,
|
|
2489
|
+
...sfcBlocks.blocks
|
|
2490
|
+
}
|
|
2491
|
+
})
|
|
2492
|
+
]),
|
|
2531
2493
|
rules: {
|
|
2532
2494
|
...pluginVue.configs.base.rules,
|
|
2533
2495
|
...pluginVue.configs["vue3-essential"].rules,
|
|
2534
2496
|
...pluginVue.configs["vue3-strongly-recommended"].rules,
|
|
2535
2497
|
...pluginVue.configs["vue3-recommended"].rules,
|
|
2536
2498
|
"node/prefer-global/process": OFF,
|
|
2537
|
-
"vue/array-bracket-spacing": [ERROR, NEVER],
|
|
2538
|
-
"vue/arrow-spacing": [ERROR, {
|
|
2539
|
-
after: true,
|
|
2540
|
-
before: true
|
|
2541
|
-
}],
|
|
2542
2499
|
"vue/block-order": [ERROR, {
|
|
2543
2500
|
order: ["script", "template", "style"]
|
|
2544
2501
|
}],
|
|
2545
|
-
"vue/block-spacing": [ERROR, ALWAYS],
|
|
2546
|
-
"vue/block-tag-newline": [ERROR, {
|
|
2547
|
-
multiline: ALWAYS,
|
|
2548
|
-
singleline: ALWAYS
|
|
2549
|
-
}],
|
|
2550
|
-
"vue/brace-style": [ERROR, "stroustrup", { allowSingleLine: true }],
|
|
2551
|
-
"vue/comma-dangle": [ERROR, "always-multiline"],
|
|
2552
|
-
"vue/comma-spacing": [ERROR, {
|
|
2553
|
-
after: true,
|
|
2554
|
-
before: false
|
|
2555
|
-
}],
|
|
2556
|
-
"vue/comma-style": [ERROR, "last"],
|
|
2557
2502
|
"vue/component-name-in-template-casing": [ERROR, "PascalCase"],
|
|
2558
2503
|
"vue/component-options-name-casing": [ERROR, "PascalCase"],
|
|
2559
2504
|
"vue/custom-event-name-casing": [ERROR, "camelCase"],
|
|
@@ -2563,18 +2508,7 @@ async function vue(options = {}) {
|
|
|
2563
2508
|
"vue/dot-location": [ERROR, "property"],
|
|
2564
2509
|
"vue/dot-notation": [ERROR, { allowKeywords: true }],
|
|
2565
2510
|
"vue/eqeqeq": [ERROR, "smart"],
|
|
2566
|
-
"vue/html-comment-content-spacing": [ERROR, ALWAYS, {
|
|
2567
|
-
exceptions: ["-"]
|
|
2568
|
-
}],
|
|
2569
2511
|
"vue/html-indent": [ERROR, indent],
|
|
2570
|
-
"vue/key-spacing": [ERROR, {
|
|
2571
|
-
afterColon: true,
|
|
2572
|
-
beforeColon: false
|
|
2573
|
-
}],
|
|
2574
|
-
"vue/keyword-spacing": [ERROR, {
|
|
2575
|
-
after: true,
|
|
2576
|
-
before: true
|
|
2577
|
-
}],
|
|
2578
2512
|
"vue/max-attributes-per-line": [ERROR],
|
|
2579
2513
|
"vue/multi-word-component-names": OFF,
|
|
2580
2514
|
"vue/no-constant-condition": WARN,
|
|
@@ -2597,28 +2531,58 @@ async function vue(options = {}) {
|
|
|
2597
2531
|
"vue/no-useless-v-bind": ERROR,
|
|
2598
2532
|
"vue/no-v-html": OFF,
|
|
2599
2533
|
"vue/no-v-text-v-html-on-component": OFF,
|
|
2600
|
-
"vue/object-curly-newline": [ERROR, { consistent: true, multiline: true }],
|
|
2601
|
-
"vue/object-curly-spacing": [ERROR, ALWAYS],
|
|
2602
|
-
"vue/object-property-newline": [ERROR, { allowMultiplePropertiesPerLine: true }],
|
|
2603
2534
|
"vue/object-shorthand": [ERROR, ALWAYS, {
|
|
2604
2535
|
avoidQuotes: true,
|
|
2605
2536
|
ignoreConstructors: false
|
|
2606
2537
|
}],
|
|
2607
|
-
"vue/operator-linebreak": [ERROR, "before"],
|
|
2608
|
-
"vue/padding-line-between-blocks": [ERROR, ALWAYS],
|
|
2609
2538
|
"vue/prefer-import-from-vue": OFF,
|
|
2610
2539
|
"vue/prefer-separate-static-class": ERROR,
|
|
2611
2540
|
"vue/prefer-template": ERROR,
|
|
2612
|
-
"vue/quote-props": [ERROR, "consistent-as-needed"],
|
|
2613
2541
|
"vue/require-default-prop": OFF,
|
|
2614
2542
|
"vue/require-prop-types": OFF,
|
|
2615
|
-
"vue/space-in-parens": [ERROR, NEVER],
|
|
2616
2543
|
"vue/space-infix-ops": ERROR,
|
|
2617
2544
|
"vue/space-unary-ops": [ERROR, {
|
|
2618
2545
|
nonwords: false,
|
|
2619
2546
|
words: true
|
|
2620
2547
|
}],
|
|
2621
|
-
|
|
2548
|
+
...stylistic2 ? {
|
|
2549
|
+
"vue/array-bracket-spacing": [ERROR, NEVER],
|
|
2550
|
+
"vue/arrow-spacing": [ERROR, {
|
|
2551
|
+
after: true,
|
|
2552
|
+
before: true
|
|
2553
|
+
}],
|
|
2554
|
+
"vue/block-spacing": [ERROR, ALWAYS],
|
|
2555
|
+
"vue/block-tag-newline": [ERROR, {
|
|
2556
|
+
multiline: ALWAYS,
|
|
2557
|
+
singleline: ALWAYS
|
|
2558
|
+
}],
|
|
2559
|
+
"vue/brace-style": [ERROR, "stroustrup", { allowSingleLine: true }],
|
|
2560
|
+
"vue/comma-dangle": [ERROR, "always-multiline"],
|
|
2561
|
+
"vue/comma-spacing": [ERROR, {
|
|
2562
|
+
after: true,
|
|
2563
|
+
before: false
|
|
2564
|
+
}],
|
|
2565
|
+
"vue/comma-style": [ERROR, "last"],
|
|
2566
|
+
"vue/html-comment-content-spacing": [ERROR, ALWAYS, {
|
|
2567
|
+
exceptions: ["-"]
|
|
2568
|
+
}],
|
|
2569
|
+
"vue/key-spacing": [ERROR, {
|
|
2570
|
+
afterColon: true,
|
|
2571
|
+
beforeColon: false
|
|
2572
|
+
}],
|
|
2573
|
+
"vue/keyword-spacing": [ERROR, {
|
|
2574
|
+
after: true,
|
|
2575
|
+
before: true
|
|
2576
|
+
}],
|
|
2577
|
+
"vue/object-curly-newline": [ERROR, { consistent: true, multiline: true }],
|
|
2578
|
+
"vue/object-curly-spacing": [ERROR, ALWAYS],
|
|
2579
|
+
"vue/object-property-newline": [ERROR, { allowMultiplePropertiesPerLine: true }],
|
|
2580
|
+
"vue/operator-linebreak": [ERROR, "before"],
|
|
2581
|
+
"vue/padding-line-between-blocks": [ERROR, ALWAYS],
|
|
2582
|
+
"vue/quote-props": [ERROR, "consistent-as-needed"],
|
|
2583
|
+
"vue/space-in-parens": [ERROR, NEVER],
|
|
2584
|
+
"vue/template-curly-spacing": ERROR
|
|
2585
|
+
} : {},
|
|
2622
2586
|
...overrides
|
|
2623
2587
|
}
|
|
2624
2588
|
}
|
|
@@ -2659,51 +2623,219 @@ async function yaml(options = {}) {
|
|
|
2659
2623
|
rules: {
|
|
2660
2624
|
"style/spaced-comment": OFF,
|
|
2661
2625
|
"yaml/block-mapping": ERROR,
|
|
2662
|
-
"yaml/block-mapping-question-indicator-newline": ERROR,
|
|
2663
2626
|
"yaml/block-sequence": ERROR,
|
|
2664
|
-
"yaml/block-sequence-hyphen-indicator-newline": ERROR,
|
|
2665
|
-
"yaml/flow-mapping-curly-newline": ERROR,
|
|
2666
|
-
"yaml/flow-mapping-curly-spacing": ERROR,
|
|
2667
|
-
"yaml/flow-sequence-bracket-newline": ERROR,
|
|
2668
|
-
"yaml/flow-sequence-bracket-spacing": ERROR,
|
|
2669
|
-
"yaml/indent": [ERROR, indent === "tab" ? 2 : indent],
|
|
2670
|
-
"yaml/key-spacing": ERROR,
|
|
2671
2627
|
"yaml/no-empty-key": ERROR,
|
|
2672
2628
|
"yaml/no-empty-sequence-entry": ERROR,
|
|
2673
2629
|
"yaml/no-irregular-whitespace": ERROR,
|
|
2674
|
-
"yaml/no-tab-indent": ERROR,
|
|
2675
2630
|
"yaml/plain-scalar": ERROR,
|
|
2676
|
-
"yaml/quotes": [ERROR, { avoidEscape: false, prefer: quotes }],
|
|
2677
|
-
"yaml/spaced-comment": ERROR,
|
|
2678
2631
|
"yaml/vue-custom-block/no-parsing-error": ERROR,
|
|
2632
|
+
...stylistic2 ? {
|
|
2633
|
+
"yaml/block-mapping-question-indicator-newline": ERROR,
|
|
2634
|
+
"yaml/block-sequence-hyphen-indicator-newline": ERROR,
|
|
2635
|
+
"yaml/flow-mapping-curly-newline": ERROR,
|
|
2636
|
+
"yaml/flow-mapping-curly-spacing": ERROR,
|
|
2637
|
+
"yaml/flow-sequence-bracket-newline": ERROR,
|
|
2638
|
+
"yaml/flow-sequence-bracket-spacing": ERROR,
|
|
2639
|
+
"yaml/indent": [ERROR, indent === "tab" ? 2 : indent],
|
|
2640
|
+
"yaml/key-spacing": ERROR,
|
|
2641
|
+
"yaml/no-tab-indent": ERROR,
|
|
2642
|
+
"yaml/quotes": [ERROR, { avoidEscape: false, prefer: quotes }],
|
|
2643
|
+
"yaml/spaced-comment": ERROR
|
|
2644
|
+
} : {},
|
|
2679
2645
|
...overrides
|
|
2680
2646
|
}
|
|
2681
2647
|
}
|
|
2682
2648
|
];
|
|
2683
2649
|
}
|
|
2684
2650
|
|
|
2651
|
+
// src/configs/formatters.ts
|
|
2652
|
+
async function formatters(options = {}, stylistic2 = {}) {
|
|
2653
|
+
if (options === true) {
|
|
2654
|
+
options = {
|
|
2655
|
+
css: true,
|
|
2656
|
+
graphql: true,
|
|
2657
|
+
html: true,
|
|
2658
|
+
markdown: true
|
|
2659
|
+
};
|
|
2660
|
+
}
|
|
2661
|
+
const {
|
|
2662
|
+
indent,
|
|
2663
|
+
quotes,
|
|
2664
|
+
semi
|
|
2665
|
+
} = {
|
|
2666
|
+
...STYLISTIC_CONFIG_DEFAULTS,
|
|
2667
|
+
...stylistic2
|
|
2668
|
+
};
|
|
2669
|
+
const prettierOptions = Object.assign(
|
|
2670
|
+
{
|
|
2671
|
+
endOfLine: "auto",
|
|
2672
|
+
semi,
|
|
2673
|
+
singleQuote: quotes === "single",
|
|
2674
|
+
tabWidth: typeof indent === "number" ? indent : 2,
|
|
2675
|
+
trailingComma: "all",
|
|
2676
|
+
useTabs: indent === "tab"
|
|
2677
|
+
},
|
|
2678
|
+
options.prettierOptions || {}
|
|
2679
|
+
);
|
|
2680
|
+
const dprintOptions = Object.assign(
|
|
2681
|
+
{
|
|
2682
|
+
indentWidth: typeof indent === "number" ? indent : 2,
|
|
2683
|
+
quoteStyle: quotes === "single" ? "preferSingle" : "preferDouble",
|
|
2684
|
+
useTabs: indent === "tab"
|
|
2685
|
+
},
|
|
2686
|
+
options.dprintOptions || {}
|
|
2687
|
+
);
|
|
2688
|
+
const pluginFormat = await interopDefault(import("eslint-plugin-format"));
|
|
2689
|
+
const configs = [
|
|
2690
|
+
{
|
|
2691
|
+
name: "vinicunca:formatters:setup",
|
|
2692
|
+
plugins: {
|
|
2693
|
+
format: pluginFormat
|
|
2694
|
+
}
|
|
2695
|
+
}
|
|
2696
|
+
];
|
|
2697
|
+
if (options.css) {
|
|
2698
|
+
configs.push(
|
|
2699
|
+
{
|
|
2700
|
+
files: [GLOB_CSS, GLOB_POSTCSS],
|
|
2701
|
+
languageOptions: {
|
|
2702
|
+
parser: parserPlain
|
|
2703
|
+
},
|
|
2704
|
+
name: "vinicunca:formatter:css",
|
|
2705
|
+
rules: {
|
|
2706
|
+
"format/prettier": [
|
|
2707
|
+
"error",
|
|
2708
|
+
{
|
|
2709
|
+
...prettierOptions,
|
|
2710
|
+
parser: "css"
|
|
2711
|
+
}
|
|
2712
|
+
]
|
|
2713
|
+
}
|
|
2714
|
+
},
|
|
2715
|
+
{
|
|
2716
|
+
files: [GLOB_SCSS],
|
|
2717
|
+
languageOptions: {
|
|
2718
|
+
parser: parserPlain
|
|
2719
|
+
},
|
|
2720
|
+
name: "vinicunca:formatter:scss",
|
|
2721
|
+
rules: {
|
|
2722
|
+
"format/prettier": [
|
|
2723
|
+
"error",
|
|
2724
|
+
{
|
|
2725
|
+
...prettierOptions,
|
|
2726
|
+
parser: "scss"
|
|
2727
|
+
}
|
|
2728
|
+
]
|
|
2729
|
+
}
|
|
2730
|
+
},
|
|
2731
|
+
{
|
|
2732
|
+
files: [GLOB_LESS],
|
|
2733
|
+
languageOptions: {
|
|
2734
|
+
parser: parserPlain
|
|
2735
|
+
},
|
|
2736
|
+
name: "vinicunca:formatter:less",
|
|
2737
|
+
rules: {
|
|
2738
|
+
"format/prettier": [
|
|
2739
|
+
"error",
|
|
2740
|
+
{
|
|
2741
|
+
...prettierOptions,
|
|
2742
|
+
parser: "less"
|
|
2743
|
+
}
|
|
2744
|
+
]
|
|
2745
|
+
}
|
|
2746
|
+
}
|
|
2747
|
+
);
|
|
2748
|
+
}
|
|
2749
|
+
if (options.html) {
|
|
2750
|
+
configs.push({
|
|
2751
|
+
files: ["**/*.html"],
|
|
2752
|
+
languageOptions: {
|
|
2753
|
+
parser: parserPlain
|
|
2754
|
+
},
|
|
2755
|
+
name: "vinicunca:formatter:html",
|
|
2756
|
+
rules: {
|
|
2757
|
+
"format/prettier": [
|
|
2758
|
+
"error",
|
|
2759
|
+
{
|
|
2760
|
+
...prettierOptions,
|
|
2761
|
+
parser: "html"
|
|
2762
|
+
}
|
|
2763
|
+
]
|
|
2764
|
+
}
|
|
2765
|
+
});
|
|
2766
|
+
}
|
|
2767
|
+
if (options.markdown) {
|
|
2768
|
+
const formater = options.markdown === true ? "prettier" : options.markdown;
|
|
2769
|
+
configs.push({
|
|
2770
|
+
files: [GLOB_MARKDOWN],
|
|
2771
|
+
languageOptions: {
|
|
2772
|
+
parser: parserPlain
|
|
2773
|
+
},
|
|
2774
|
+
name: "vinicunca:formatter:markdown",
|
|
2775
|
+
rules: {
|
|
2776
|
+
[`format/${formater}`]: [
|
|
2777
|
+
"error",
|
|
2778
|
+
formater === "prettier" ? {
|
|
2779
|
+
printWidth: 120,
|
|
2780
|
+
...prettierOptions,
|
|
2781
|
+
embeddedLanguageFormatting: "off",
|
|
2782
|
+
parser: "markdown"
|
|
2783
|
+
} : {
|
|
2784
|
+
...dprintOptions,
|
|
2785
|
+
language: "markdown"
|
|
2786
|
+
}
|
|
2787
|
+
]
|
|
2788
|
+
}
|
|
2789
|
+
});
|
|
2790
|
+
}
|
|
2791
|
+
if (options.graphql) {
|
|
2792
|
+
configs.push({
|
|
2793
|
+
files: ["**/*.graphql"],
|
|
2794
|
+
languageOptions: {
|
|
2795
|
+
parser: parserPlain
|
|
2796
|
+
},
|
|
2797
|
+
name: "vinicunca:formatter:graphql",
|
|
2798
|
+
rules: {
|
|
2799
|
+
"format/prettier": [
|
|
2800
|
+
"error",
|
|
2801
|
+
{
|
|
2802
|
+
...prettierOptions,
|
|
2803
|
+
parser: "graphql"
|
|
2804
|
+
}
|
|
2805
|
+
]
|
|
2806
|
+
}
|
|
2807
|
+
});
|
|
2808
|
+
}
|
|
2809
|
+
return configs;
|
|
2810
|
+
}
|
|
2811
|
+
|
|
2685
2812
|
// src/base.ts
|
|
2813
|
+
var flatConfigProps = [
|
|
2814
|
+
"files",
|
|
2815
|
+
"ignores",
|
|
2816
|
+
"languageOptions",
|
|
2817
|
+
"linterOptions",
|
|
2818
|
+
"processor",
|
|
2819
|
+
"plugins",
|
|
2820
|
+
"rules",
|
|
2821
|
+
"settings"
|
|
2822
|
+
];
|
|
2686
2823
|
var VuePackages = [
|
|
2687
2824
|
"vue",
|
|
2688
2825
|
"nuxt",
|
|
2689
2826
|
"vitepress",
|
|
2690
2827
|
"@slidev/cli"
|
|
2691
2828
|
];
|
|
2692
|
-
async function vinicuncaESLint(
|
|
2829
|
+
async function vinicuncaESLint(options = {}, ...userConfigs) {
|
|
2693
2830
|
const {
|
|
2694
2831
|
componentExts = [],
|
|
2695
|
-
isInEditor = !!((
|
|
2696
|
-
jsonc: enableJsonc = true,
|
|
2697
|
-
markdown: enableMarkdown = true,
|
|
2698
|
-
overrides = {},
|
|
2832
|
+
isInEditor = !!((import_node_process2.default.env.VSCODE_PID || import_node_process2.default.env.JETBRAINS_IDE || import_node_process2.default.env.VIM) && !import_node_process2.default.env.CI),
|
|
2699
2833
|
react: enableReact = false,
|
|
2700
|
-
|
|
2701
|
-
typescript: tsOptions = {},
|
|
2834
|
+
typescript: enableTypeScript = (0, import_local_pkg.isPackageExists)("typescript"),
|
|
2702
2835
|
unocss: enableUnoCSS = false,
|
|
2703
|
-
vue: enableVue = VuePackages.some((i) => (0, import_local_pkg.isPackageExists)(i))
|
|
2704
|
-
yaml: enableYaml = true
|
|
2836
|
+
vue: enableVue = VuePackages.some((i) => (0, import_local_pkg.isPackageExists)(i))
|
|
2705
2837
|
} = options;
|
|
2706
|
-
let stylisticOptions =
|
|
2838
|
+
let stylisticOptions = {};
|
|
2707
2839
|
if (options.stylistic === false) {
|
|
2708
2840
|
stylisticOptions = false;
|
|
2709
2841
|
} else if (isObject(options.stylistic)) {
|
|
@@ -2717,106 +2849,139 @@ async function vinicuncaESLint({ options = {}, userConfigs = [] } = {}) {
|
|
|
2717
2849
|
ignores(options.ignores),
|
|
2718
2850
|
javascript({
|
|
2719
2851
|
isInEditor,
|
|
2720
|
-
overrides:
|
|
2852
|
+
overrides: getOverrides(options, "javascript")
|
|
2721
2853
|
}),
|
|
2722
2854
|
comments(),
|
|
2723
2855
|
node(),
|
|
2724
|
-
jsdoc(
|
|
2856
|
+
jsdoc({
|
|
2857
|
+
stylistic: stylisticOptions
|
|
2858
|
+
}),
|
|
2725
2859
|
imports(),
|
|
2726
2860
|
unicorn()
|
|
2727
2861
|
);
|
|
2728
2862
|
if (enableVue) {
|
|
2729
2863
|
componentExts.push("vue");
|
|
2730
2864
|
}
|
|
2731
|
-
|
|
2732
|
-
enabled: tsEnabled = (0, import_local_pkg.isPackageExists)("typescript"),
|
|
2733
|
-
...tsParams
|
|
2734
|
-
} = tsOptions;
|
|
2735
|
-
if (tsEnabled) {
|
|
2865
|
+
if (enableTypeScript) {
|
|
2736
2866
|
configs.push(typescript({
|
|
2737
|
-
...
|
|
2738
|
-
componentExts
|
|
2739
|
-
overrides: overrides.typescript
|
|
2867
|
+
...resolveSubOptions(options, "typescript"),
|
|
2868
|
+
componentExts
|
|
2740
2869
|
}));
|
|
2741
2870
|
}
|
|
2742
2871
|
if (stylisticOptions) {
|
|
2743
|
-
configs.push(stylistic(
|
|
2872
|
+
configs.push(stylistic({
|
|
2873
|
+
...stylisticOptions,
|
|
2874
|
+
overrides: getOverrides(options, "stylistic")
|
|
2875
|
+
}));
|
|
2744
2876
|
}
|
|
2745
|
-
if (
|
|
2877
|
+
if (options.test ?? true) {
|
|
2746
2878
|
configs.push(test({
|
|
2747
2879
|
isInEditor,
|
|
2748
|
-
overrides:
|
|
2880
|
+
overrides: getOverrides(options, "test")
|
|
2749
2881
|
}));
|
|
2750
2882
|
}
|
|
2751
|
-
;
|
|
2752
2883
|
if (enableVue) {
|
|
2753
2884
|
configs.push(vue({
|
|
2754
|
-
|
|
2755
|
-
|
|
2756
|
-
|
|
2757
|
-
...tsParams
|
|
2758
|
-
}
|
|
2885
|
+
...resolveSubOptions(options, "vue"),
|
|
2886
|
+
stylistic: stylisticOptions,
|
|
2887
|
+
typescript: !!enableTypeScript
|
|
2759
2888
|
}));
|
|
2760
2889
|
}
|
|
2761
|
-
;
|
|
2762
2890
|
if (enableReact) {
|
|
2763
2891
|
configs.push(react({
|
|
2764
|
-
overrides:
|
|
2892
|
+
overrides: getOverrides(options, "react"),
|
|
2893
|
+
typescript: !!enableTypeScript
|
|
2765
2894
|
}));
|
|
2766
2895
|
}
|
|
2767
2896
|
if (enableUnoCSS) {
|
|
2768
|
-
configs.push(unocss(
|
|
2769
|
-
|
|
2770
|
-
|
|
2897
|
+
configs.push(unocss({
|
|
2898
|
+
...resolveSubOptions(options, "unocss"),
|
|
2899
|
+
overrides: getOverrides(options, "unocss")
|
|
2900
|
+
}));
|
|
2771
2901
|
}
|
|
2772
|
-
if (
|
|
2902
|
+
if (options.jsonc ?? true) {
|
|
2773
2903
|
configs.push(
|
|
2774
2904
|
jsonc({
|
|
2775
|
-
overrides:
|
|
2905
|
+
overrides: getOverrides(options, "jsonc"),
|
|
2776
2906
|
stylistic: stylisticOptions
|
|
2777
2907
|
}),
|
|
2778
2908
|
sortPackageJson(),
|
|
2779
2909
|
sortTsconfig()
|
|
2780
2910
|
);
|
|
2781
2911
|
}
|
|
2782
|
-
if (
|
|
2912
|
+
if (options.yaml ?? true) {
|
|
2783
2913
|
configs.push(yaml({
|
|
2784
|
-
overrides:
|
|
2914
|
+
overrides: getOverrides(options, "yaml"),
|
|
2785
2915
|
stylistic: stylisticOptions
|
|
2786
2916
|
}));
|
|
2787
2917
|
}
|
|
2788
|
-
|
|
2789
|
-
|
|
2790
|
-
|
|
2791
|
-
|
|
2792
|
-
|
|
2793
|
-
|
|
2918
|
+
if (options.markdown ?? true) {
|
|
2919
|
+
configs.push(
|
|
2920
|
+
markdown(
|
|
2921
|
+
{
|
|
2922
|
+
componentExts,
|
|
2923
|
+
overrides: getOverrides(options, "markdown")
|
|
2924
|
+
}
|
|
2925
|
+
)
|
|
2926
|
+
);
|
|
2927
|
+
}
|
|
2928
|
+
if (options.formatters) {
|
|
2929
|
+
configs.push(formatters(
|
|
2930
|
+
options.formatters,
|
|
2931
|
+
typeof stylisticOptions === "boolean" ? {} : stylisticOptions
|
|
2932
|
+
));
|
|
2933
|
+
}
|
|
2934
|
+
const fusedConfig = flatConfigProps.reduce((acc, key) => {
|
|
2935
|
+
if (key in options) {
|
|
2936
|
+
acc[key] = options[key];
|
|
2937
|
+
}
|
|
2938
|
+
;
|
|
2939
|
+
return acc;
|
|
2940
|
+
}, {});
|
|
2941
|
+
if (Object.keys(fusedConfig).length) {
|
|
2942
|
+
configs.push([fusedConfig]);
|
|
2794
2943
|
}
|
|
2795
2944
|
;
|
|
2796
|
-
configs.push(ignores(options.ignores));
|
|
2797
2945
|
return combineConfigs(
|
|
2798
2946
|
...configs,
|
|
2799
2947
|
...userConfigs
|
|
2800
2948
|
);
|
|
2801
2949
|
}
|
|
2950
|
+
function getOverrides(options, key) {
|
|
2951
|
+
const sub = resolveSubOptions(options, key);
|
|
2952
|
+
return {
|
|
2953
|
+
..."overrides" in sub ? sub.overrides : {}
|
|
2954
|
+
};
|
|
2955
|
+
}
|
|
2956
|
+
function resolveSubOptions(options, key) {
|
|
2957
|
+
return isBoolean(options[key]) ? {} : options[key] || {};
|
|
2958
|
+
}
|
|
2802
2959
|
// Annotate the CommonJS export names for ESM import in node:
|
|
2803
2960
|
0 && (module.exports = {
|
|
2961
|
+
GLOB_ALL_SRC,
|
|
2962
|
+
GLOB_CSS,
|
|
2804
2963
|
GLOB_EXCLUDE,
|
|
2964
|
+
GLOB_HTML,
|
|
2805
2965
|
GLOB_JS,
|
|
2806
2966
|
GLOB_JSON,
|
|
2807
2967
|
GLOB_JSON5,
|
|
2808
2968
|
GLOB_JSONC,
|
|
2809
2969
|
GLOB_JSX,
|
|
2970
|
+
GLOB_LESS,
|
|
2810
2971
|
GLOB_MARKDOWN,
|
|
2811
2972
|
GLOB_MARKDOWN_CODE,
|
|
2812
2973
|
GLOB_MARKDOWN_IN_MARKDOWN,
|
|
2974
|
+
GLOB_POSTCSS,
|
|
2975
|
+
GLOB_SCSS,
|
|
2813
2976
|
GLOB_SRC,
|
|
2814
2977
|
GLOB_SRC_EXT,
|
|
2978
|
+
GLOB_STYLE,
|
|
2815
2979
|
GLOB_TESTS,
|
|
2816
2980
|
GLOB_TS,
|
|
2817
2981
|
GLOB_TSX,
|
|
2818
2982
|
GLOB_VUE,
|
|
2819
2983
|
GLOB_YAML,
|
|
2984
|
+
STYLISTIC_CONFIG_DEFAULTS,
|
|
2820
2985
|
combineConfigs,
|
|
2821
2986
|
comments,
|
|
2822
2987
|
ignores,
|
|
@@ -2827,6 +2992,7 @@ async function vinicuncaESLint({ options = {}, userConfigs = [] } = {}) {
|
|
|
2827
2992
|
jsonc,
|
|
2828
2993
|
markdown,
|
|
2829
2994
|
node,
|
|
2995
|
+
parserPlain,
|
|
2830
2996
|
pluginComments,
|
|
2831
2997
|
pluginImport,
|
|
2832
2998
|
pluginNode,
|
|
@@ -2840,6 +3006,7 @@ async function vinicuncaESLint({ options = {}, userConfigs = [] } = {}) {
|
|
|
2840
3006
|
sortTsconfig,
|
|
2841
3007
|
stylistic,
|
|
2842
3008
|
test,
|
|
3009
|
+
toArray,
|
|
2843
3010
|
typescript,
|
|
2844
3011
|
unicorn,
|
|
2845
3012
|
unocss,
|