@bastidood/eslint-config 0.0.0-stage → 0.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/LICENSE +21 -0
- package/README.md +44 -2
- package/dist/compose/index.d.mts +52 -0
- package/dist/compose/index.mjs +106 -0
- package/dist/convert-CYKE8SNU.mjs +1561 -0
- package/dist/core.d.mts +6 -0
- package/dist/core.mjs +61 -0
- package/dist/jsdoc.d.mts +3 -0
- package/dist/jsdoc.mjs +42 -0
- package/dist/node.d.mts +3 -0
- package/dist/node.mjs +25 -0
- package/dist/promise.d.mts +3 -0
- package/dist/promise.mjs +30 -0
- package/dist/unicorn.d.mts +3 -0
- package/dist/unicorn.mjs +146 -0
- package/dist/vitest.d.mts +3 -0
- package/dist/vitest.mjs +100 -0
- package/package.json +50 -3
package/dist/core.d.mts
ADDED
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { Entry } from "./compose/index.mjs";
|
|
2
|
+
/**
|
|
3
|
+
* ESLint core, `import`, and type-aware `@typescript-eslint` rules, generated from the Oxlint `core` entry point. The
|
|
4
|
+
* TypeScript project service finds the `tsconfig.json` nearest each file, searching up to the working directory.
|
|
5
|
+
*/
|
|
6
|
+
export declare const CORE: Entry;
|
package/dist/core.mjs
ADDED
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { i as CORE$1, n as writeEslintRules, r as writeExtensionRules, t as writeCategoryRules } from "./convert-CYKE8SNU.mjs";
|
|
2
|
+
import { importX } from "eslint-plugin-import-x";
|
|
3
|
+
import tseslint from "typescript-eslint";
|
|
4
|
+
// src/core.ts
|
|
5
|
+
const { categories: CATEGORIES, overrides: OVERRIDES, plugins: PLUGINS, rules: OXLINT_RULES } = CORE$1.config;
|
|
6
|
+
const TYPESCRIPT_ESLINT = tseslint.plugin;
|
|
7
|
+
const RULES = {};
|
|
8
|
+
writeCategoryRules(RULES, CATEGORIES, ["eslint"]);
|
|
9
|
+
writeCategoryRules(RULES, CATEGORIES, PLUGINS);
|
|
10
|
+
writeEslintRules(RULES, OXLINT_RULES);
|
|
11
|
+
writeExtensionRules(RULES, OXLINT_RULES, TYPESCRIPT_ESLINT.rules);
|
|
12
|
+
const OVERRIDE_CONFIGS = [];
|
|
13
|
+
for (const { files, rules } of OVERRIDES) {
|
|
14
|
+
const overrideRules = {};
|
|
15
|
+
writeEslintRules(overrideRules, rules);
|
|
16
|
+
writeExtensionRules(overrideRules, rules, TYPESCRIPT_ESLINT.rules);
|
|
17
|
+
OVERRIDE_CONFIGS.push({
|
|
18
|
+
name: "@bastidood/eslint-config/core",
|
|
19
|
+
files,
|
|
20
|
+
rules: overrideRules
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
const PLUGIN_DEFINITIONS = {
|
|
24
|
+
"@typescript-eslint": TYPESCRIPT_ESLINT,
|
|
25
|
+
import: importX
|
|
26
|
+
};
|
|
27
|
+
const RESTRICTIONS = {
|
|
28
|
+
...CORE$1.restrictions,
|
|
29
|
+
syntax: [
|
|
30
|
+
...CORE$1.restrictions.syntax,
|
|
31
|
+
{
|
|
32
|
+
selector: "TSEnumDeclaration[const=true]",
|
|
33
|
+
message: "Do not declare a `const enum`: under `isolatedModules`, which `verbatimModuleSyntax` implies, it compiles to the same runtime object as a plain `enum` and is not inlined across files. Use a union of string literal types instead, or integer constants for bit flags."
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
selector: "ExpressionStatement > NewExpression[callee.name=/Error$/]",
|
|
37
|
+
message: "This error is constructed but never thrown. Add `throw` in front of `new`."
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
selector: "BinaryExpression[operator=\"*\"][left.type=\"Literal\"][left.value=0], BinaryExpression[operator=\"*\"][right.type=\"Literal\"][right.value=0], BinaryExpression[operator=\"&\"][right.type=\"Literal\"][right.value=0], BinaryExpression[operator=\"/\"][left.type=\"Literal\"][left.value=0]",
|
|
41
|
+
message: "This operation always evaluates to `0`. Write `0` directly, or fix the operand."
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
};
|
|
45
|
+
/**
|
|
46
|
+
* ESLint core, `import`, and type-aware `@typescript-eslint` rules, generated from the Oxlint `core` entry point. The
|
|
47
|
+
* TypeScript project service finds the `tsconfig.json` nearest each file, searching up to the working directory.
|
|
48
|
+
*/
|
|
49
|
+
const CORE = {
|
|
50
|
+
configs: [{
|
|
51
|
+
name: "@bastidood/eslint-config/core",
|
|
52
|
+
languageOptions: {
|
|
53
|
+
parser: tseslint.parser,
|
|
54
|
+
parserOptions: { projectService: true }
|
|
55
|
+
},
|
|
56
|
+
plugins: PLUGIN_DEFINITIONS,
|
|
57
|
+
rules: RULES
|
|
58
|
+
}, OVERRIDE_CONFIGS],
|
|
59
|
+
restrictions: RESTRICTIONS
|
|
60
|
+
};
|
|
61
|
+
export { CORE };
|
package/dist/jsdoc.d.mts
ADDED
package/dist/jsdoc.mjs
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { i as CORE, n as writeEslintRules, t as writeCategoryRules } from "./convert-CYKE8SNU.mjs";
|
|
2
|
+
import jsdocPlugin from "eslint-plugin-jsdoc";
|
|
3
|
+
// ../oxlint/src/jsdoc.ts
|
|
4
|
+
const JSDOC$1 = { config: {
|
|
5
|
+
plugins: ["jsdoc"],
|
|
6
|
+
rules: {
|
|
7
|
+
"jsdoc/check-access": "off",
|
|
8
|
+
"jsdoc/check-property-names": "off",
|
|
9
|
+
"jsdoc/check-tag-names": ["error", { typed: true }],
|
|
10
|
+
"jsdoc/empty-tags": "error",
|
|
11
|
+
"jsdoc/implements-on-classes": "off",
|
|
12
|
+
"jsdoc/no-blank-blocks": ["error", { enableFixer: true }],
|
|
13
|
+
"jsdoc/no-defaults": "off",
|
|
14
|
+
"jsdoc/require-param": "off",
|
|
15
|
+
"jsdoc/require-param-description": "error",
|
|
16
|
+
"jsdoc/require-param-name": "error",
|
|
17
|
+
"jsdoc/require-param-type": "off",
|
|
18
|
+
"jsdoc/require-property": "off",
|
|
19
|
+
"jsdoc/require-property-description": "off",
|
|
20
|
+
"jsdoc/require-property-name": "off",
|
|
21
|
+
"jsdoc/require-property-type": "off",
|
|
22
|
+
"jsdoc/require-returns": "off",
|
|
23
|
+
"jsdoc/require-returns-description": "error",
|
|
24
|
+
"jsdoc/require-returns-type": "off",
|
|
25
|
+
"jsdoc/require-throws-description": "error",
|
|
26
|
+
"jsdoc/require-throws-type": "off",
|
|
27
|
+
"jsdoc/require-yields": "off",
|
|
28
|
+
"jsdoc/require-yields-description": "error",
|
|
29
|
+
"jsdoc/require-yields-type": "off"
|
|
30
|
+
}
|
|
31
|
+
} };
|
|
32
|
+
// src/jsdoc.ts
|
|
33
|
+
const RULES = {};
|
|
34
|
+
writeCategoryRules(RULES, CORE.config.categories, JSDOC$1.config.plugins);
|
|
35
|
+
writeEslintRules(RULES, JSDOC$1.config.rules);
|
|
36
|
+
/** `eslint-plugin-jsdoc` rules, generated from the Oxlint `jsdoc` entry point. */
|
|
37
|
+
const JSDOC = { configs: [{
|
|
38
|
+
name: "@bastidood/eslint-config/jsdoc",
|
|
39
|
+
plugins: { jsdoc: jsdocPlugin },
|
|
40
|
+
rules: RULES
|
|
41
|
+
}] };
|
|
42
|
+
export { JSDOC };
|
package/dist/node.d.mts
ADDED
package/dist/node.mjs
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { i as CORE, n as writeEslintRules, t as writeCategoryRules } from "./convert-CYKE8SNU.mjs";
|
|
2
|
+
import nodePlugin from "eslint-plugin-n";
|
|
3
|
+
// ../oxlint/src/node.ts
|
|
4
|
+
/** Node.js rules for code that runs on Node.js. */
|
|
5
|
+
const NODE$1 = { config: {
|
|
6
|
+
plugins: ["node"],
|
|
7
|
+
rules: {
|
|
8
|
+
"node/callback-return": "off",
|
|
9
|
+
"node/handle-callback-err": "error",
|
|
10
|
+
"node/no-exports-assign": "error",
|
|
11
|
+
"node/no-path-concat": "error",
|
|
12
|
+
"node/no-sync": "error"
|
|
13
|
+
}
|
|
14
|
+
} };
|
|
15
|
+
// src/node.ts
|
|
16
|
+
const RULES = {};
|
|
17
|
+
writeCategoryRules(RULES, CORE.config.categories, NODE$1.config.plugins);
|
|
18
|
+
writeEslintRules(RULES, NODE$1.config.rules);
|
|
19
|
+
/** `eslint-plugin-n` rules, generated from the Oxlint `node` entry point. */
|
|
20
|
+
const NODE = { configs: [{
|
|
21
|
+
name: "@bastidood/eslint-config/node",
|
|
22
|
+
plugins: { n: nodePlugin },
|
|
23
|
+
rules: RULES
|
|
24
|
+
}] };
|
|
25
|
+
export { NODE };
|
package/dist/promise.mjs
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { i as CORE, n as writeEslintRules, t as writeCategoryRules } from "./convert-CYKE8SNU.mjs";
|
|
2
|
+
import promisePlugin from "eslint-plugin-promise";
|
|
3
|
+
// ../oxlint/src/promise.ts
|
|
4
|
+
const PROMISE$1 = { config: {
|
|
5
|
+
plugins: ["promise"],
|
|
6
|
+
rules: {
|
|
7
|
+
"promise/always-return": "off",
|
|
8
|
+
"promise/avoid-new": "error",
|
|
9
|
+
"promise/no-callback-in-promise": "off",
|
|
10
|
+
"promise/no-multiple-resolved": "error",
|
|
11
|
+
"promise/no-new-statics": "off",
|
|
12
|
+
"promise/no-promise-in-callback": "error",
|
|
13
|
+
"promise/param-names": "error",
|
|
14
|
+
"promise/prefer-await-to-callbacks": "error",
|
|
15
|
+
"promise/prefer-await-to-then": ["error", { strict: true }],
|
|
16
|
+
"promise/spec-only": "error",
|
|
17
|
+
"promise/valid-params": "off"
|
|
18
|
+
}
|
|
19
|
+
} };
|
|
20
|
+
// src/promise.ts
|
|
21
|
+
const RULES = {};
|
|
22
|
+
writeCategoryRules(RULES, CORE.config.categories, PROMISE$1.config.plugins);
|
|
23
|
+
writeEslintRules(RULES, PROMISE$1.config.rules);
|
|
24
|
+
/** `eslint-plugin-promise` rules, generated from the Oxlint `promise` entry point. */
|
|
25
|
+
const PROMISE = { configs: [{
|
|
26
|
+
name: "@bastidood/eslint-config/promise",
|
|
27
|
+
plugins: { promise: promisePlugin },
|
|
28
|
+
rules: RULES
|
|
29
|
+
}] };
|
|
30
|
+
export { PROMISE };
|
package/dist/unicorn.mjs
ADDED
|
@@ -0,0 +1,146 @@
|
|
|
1
|
+
import { i as CORE, n as writeEslintRules, t as writeCategoryRules } from "./convert-CYKE8SNU.mjs";
|
|
2
|
+
import unicornPlugin from "eslint-plugin-unicorn";
|
|
3
|
+
// ../oxlint/src/unicorn.ts
|
|
4
|
+
const UNICORN$1 = { config: {
|
|
5
|
+
plugins: ["unicorn"],
|
|
6
|
+
rules: {
|
|
7
|
+
"unicorn/catch-error-name": "error",
|
|
8
|
+
"unicorn/consistent-assert": "error",
|
|
9
|
+
"unicorn/consistent-date-clone": "error",
|
|
10
|
+
"unicorn/consistent-empty-array-spread": "error",
|
|
11
|
+
"unicorn/consistent-existence-index-check": "error",
|
|
12
|
+
"unicorn/consistent-function-scoping": "error",
|
|
13
|
+
"unicorn/consistent-template-literal-escape": "error",
|
|
14
|
+
"unicorn/custom-error-definition": "error",
|
|
15
|
+
"unicorn/error-message": "error",
|
|
16
|
+
"unicorn/escape-case": "error",
|
|
17
|
+
"unicorn/explicit-length-check": "error",
|
|
18
|
+
"unicorn/explicit-timer-delay": "error",
|
|
19
|
+
"unicorn/filename-case": ["error", { case: "kebabCase" }],
|
|
20
|
+
"unicorn/import-style": "off",
|
|
21
|
+
"unicorn/max-nested-calls": "error",
|
|
22
|
+
"unicorn/new-for-builtins": "error",
|
|
23
|
+
"unicorn/no-abusive-eslint-disable": "error",
|
|
24
|
+
"unicorn/no-accessor-recursion": "error",
|
|
25
|
+
"unicorn/no-array-callback-reference": "error",
|
|
26
|
+
"unicorn/no-array-fill-with-reference-type": "error",
|
|
27
|
+
"unicorn/no-array-for-each": "error",
|
|
28
|
+
"unicorn/no-array-method-this-argument": "error",
|
|
29
|
+
"unicorn/no-array-reverse": "off",
|
|
30
|
+
"unicorn/no-array-sort": "off",
|
|
31
|
+
"unicorn/no-await-expression-member": "error",
|
|
32
|
+
"unicorn/no-await-in-promise-methods": "error",
|
|
33
|
+
"unicorn/no-confusing-array-with": "off",
|
|
34
|
+
"unicorn/no-document-cookie": "error",
|
|
35
|
+
"unicorn/no-empty-file": "error",
|
|
36
|
+
"unicorn/no-hex-escape": "error",
|
|
37
|
+
"unicorn/no-immediate-mutation": "error",
|
|
38
|
+
"unicorn/no-instanceof-array": "error",
|
|
39
|
+
"unicorn/no-instanceof-builtins": ["error", { useErrorIsError: true }],
|
|
40
|
+
"unicorn/no-invalid-fetch-options": "error",
|
|
41
|
+
"unicorn/no-invalid-remove-event-listener": "off",
|
|
42
|
+
"unicorn/no-length-as-slice-end": "error",
|
|
43
|
+
"unicorn/no-lonely-if": "error",
|
|
44
|
+
"unicorn/no-magic-array-flat-depth": "error",
|
|
45
|
+
"unicorn/no-negation-in-equality-check": "error",
|
|
46
|
+
"unicorn/no-new-array": "error",
|
|
47
|
+
"unicorn/no-new-buffer": "error",
|
|
48
|
+
"unicorn/no-object-as-default-parameter": "error",
|
|
49
|
+
"unicorn/no-process-exit": "error",
|
|
50
|
+
"unicorn/no-single-promise-in-promise-methods": "error",
|
|
51
|
+
"unicorn/no-static-only-class": "error",
|
|
52
|
+
"unicorn/no-thenable": "error",
|
|
53
|
+
"unicorn/no-unnecessary-array-flat-depth": "error",
|
|
54
|
+
"unicorn/no-unnecessary-array-splice-count": "error",
|
|
55
|
+
"unicorn/no-unnecessary-await": "off",
|
|
56
|
+
"unicorn/no-unnecessary-slice-end": "error",
|
|
57
|
+
"unicorn/no-unreadable-array-destructuring": "error",
|
|
58
|
+
"unicorn/no-unreadable-iife": "error",
|
|
59
|
+
"unicorn/no-useless-collection-argument": "error",
|
|
60
|
+
"unicorn/no-useless-error-capture-stack-trace": "error",
|
|
61
|
+
"unicorn/no-useless-fallback-in-spread": "error",
|
|
62
|
+
"unicorn/no-useless-iterator-to-array": "error",
|
|
63
|
+
"unicorn/no-useless-length-check": "error",
|
|
64
|
+
"unicorn/no-useless-promise-resolve-reject": "error",
|
|
65
|
+
"unicorn/no-useless-spread": "error",
|
|
66
|
+
"unicorn/no-useless-switch-case": "error",
|
|
67
|
+
"unicorn/no-zero-fractions": "error",
|
|
68
|
+
"unicorn/number-literal-case": "off",
|
|
69
|
+
"unicorn/numeric-separators-style": "error",
|
|
70
|
+
"unicorn/prefer-add-event-listener": "error",
|
|
71
|
+
"unicorn/prefer-array-find": "off",
|
|
72
|
+
"unicorn/prefer-array-flat": "error",
|
|
73
|
+
"unicorn/prefer-array-flat-map": "error",
|
|
74
|
+
"unicorn/prefer-array-index-of": "error",
|
|
75
|
+
"unicorn/prefer-array-some": "error",
|
|
76
|
+
"unicorn/prefer-at": "error",
|
|
77
|
+
"unicorn/prefer-bigint-literals": "error",
|
|
78
|
+
"unicorn/prefer-blob-reading-methods": "error",
|
|
79
|
+
"unicorn/prefer-class-fields": "error",
|
|
80
|
+
"unicorn/prefer-classlist-toggle": "error",
|
|
81
|
+
"unicorn/prefer-code-point": "error",
|
|
82
|
+
"unicorn/prefer-date-now": "error",
|
|
83
|
+
"unicorn/prefer-default-parameters": "error",
|
|
84
|
+
"unicorn/prefer-dom-node-append": "error",
|
|
85
|
+
"unicorn/prefer-dom-node-dataset": "error",
|
|
86
|
+
"unicorn/prefer-dom-node-remove": "error",
|
|
87
|
+
"unicorn/prefer-dom-node-text-content": "error",
|
|
88
|
+
"unicorn/prefer-event-target": "error",
|
|
89
|
+
"unicorn/prefer-export-from": "error",
|
|
90
|
+
"unicorn/prefer-global-this": "error",
|
|
91
|
+
"unicorn/prefer-import-meta-properties": "error",
|
|
92
|
+
"unicorn/prefer-keyboard-event-key": "error",
|
|
93
|
+
"unicorn/prefer-logical-operator-over-ternary": "error",
|
|
94
|
+
"unicorn/prefer-math-min-max": "error",
|
|
95
|
+
"unicorn/prefer-math-trunc": "error",
|
|
96
|
+
"unicorn/prefer-modern-dom-apis": "error",
|
|
97
|
+
"unicorn/prefer-modern-math-apis": "error",
|
|
98
|
+
"unicorn/prefer-module": "error",
|
|
99
|
+
"unicorn/prefer-native-coercion-functions": "error",
|
|
100
|
+
"unicorn/prefer-negative-index": "error",
|
|
101
|
+
"unicorn/prefer-node-protocol": "error",
|
|
102
|
+
"unicorn/prefer-number-coercion": "error",
|
|
103
|
+
"unicorn/prefer-number-properties": ["error", { checkInfinity: true }],
|
|
104
|
+
"unicorn/prefer-object-from-entries": "error",
|
|
105
|
+
"unicorn/prefer-optional-catch-binding": "off",
|
|
106
|
+
"unicorn/prefer-prototype-methods": "error",
|
|
107
|
+
"unicorn/prefer-query-selector": "error",
|
|
108
|
+
"unicorn/prefer-reflect-apply": "error",
|
|
109
|
+
"unicorn/prefer-regexp-test": "error",
|
|
110
|
+
"unicorn/prefer-response-static-json": "error",
|
|
111
|
+
"unicorn/prefer-set-has": "error",
|
|
112
|
+
"unicorn/prefer-set-size": "error",
|
|
113
|
+
"unicorn/prefer-single-call": "error",
|
|
114
|
+
"unicorn/prefer-spread": "error",
|
|
115
|
+
"unicorn/prefer-string-raw": "error",
|
|
116
|
+
"unicorn/prefer-string-replace-all": "error",
|
|
117
|
+
"unicorn/prefer-string-slice": "error",
|
|
118
|
+
"unicorn/prefer-string-starts-ends-with": "off",
|
|
119
|
+
"unicorn/prefer-string-trim-start-end": "error",
|
|
120
|
+
"unicorn/prefer-structured-clone": "error",
|
|
121
|
+
"unicorn/prefer-ternary": "error",
|
|
122
|
+
"unicorn/prefer-top-level-await": "error",
|
|
123
|
+
"unicorn/prefer-type-error": "error",
|
|
124
|
+
"unicorn/relative-url-style": "error",
|
|
125
|
+
"unicorn/require-array-join-separator": "error",
|
|
126
|
+
"unicorn/require-module-attributes": "error",
|
|
127
|
+
"unicorn/require-module-specifiers": "off",
|
|
128
|
+
"unicorn/require-number-to-fixed-digits-argument": "error",
|
|
129
|
+
"unicorn/require-post-message-target-origin": "error",
|
|
130
|
+
"unicorn/switch-case-braces": ["error", "avoid"],
|
|
131
|
+
"unicorn/switch-case-break-position": "error",
|
|
132
|
+
"unicorn/text-encoding-identifier-case": "error",
|
|
133
|
+
"unicorn/throw-new-error": "error"
|
|
134
|
+
}
|
|
135
|
+
} };
|
|
136
|
+
// src/unicorn.ts
|
|
137
|
+
const RULES = {};
|
|
138
|
+
writeCategoryRules(RULES, CORE.config.categories, UNICORN$1.config.plugins);
|
|
139
|
+
writeEslintRules(RULES, UNICORN$1.config.rules);
|
|
140
|
+
/** `eslint-plugin-unicorn` rules, generated from the Oxlint `unicorn` entry point. */
|
|
141
|
+
const UNICORN = { configs: [{
|
|
142
|
+
name: "@bastidood/eslint-config/unicorn",
|
|
143
|
+
plugins: { unicorn: unicornPlugin },
|
|
144
|
+
rules: RULES
|
|
145
|
+
}] };
|
|
146
|
+
export { UNICORN };
|
package/dist/vitest.mjs
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
import { i as CORE, n as writeEslintRules, t as writeCategoryRules } from "./convert-CYKE8SNU.mjs";
|
|
2
|
+
import vitestPlugin from "@vitest/eslint-plugin";
|
|
3
|
+
// ../oxlint/src/vitest.ts
|
|
4
|
+
const VITEST$1 = { config: {
|
|
5
|
+
plugins: ["vitest"],
|
|
6
|
+
rules: {
|
|
7
|
+
"vitest/consistent-each-for": ["error", {
|
|
8
|
+
describe: "for",
|
|
9
|
+
it: "for",
|
|
10
|
+
suite: "for",
|
|
11
|
+
test: "for"
|
|
12
|
+
}],
|
|
13
|
+
"vitest/consistent-test-filename": "off",
|
|
14
|
+
"vitest/consistent-test-it": ["error", {
|
|
15
|
+
fn: "test",
|
|
16
|
+
withinDescribe: "test"
|
|
17
|
+
}],
|
|
18
|
+
"vitest/consistent-vitest-vi": "error",
|
|
19
|
+
"vitest/expect-expect": "error",
|
|
20
|
+
"vitest/hoisted-apis-on-top": "error",
|
|
21
|
+
"vitest/max-expects": "off",
|
|
22
|
+
"vitest/max-nested-describe": "off",
|
|
23
|
+
"vitest/no-alias-methods": "error",
|
|
24
|
+
"vitest/no-commented-out-tests": "error",
|
|
25
|
+
"vitest/no-conditional-expect": "error",
|
|
26
|
+
"vitest/no-conditional-in-test": "error",
|
|
27
|
+
"vitest/no-conditional-tests": "error",
|
|
28
|
+
"vitest/no-disabled-tests": "error",
|
|
29
|
+
"vitest/no-duplicate-hooks": "error",
|
|
30
|
+
"vitest/no-focused-tests": "error",
|
|
31
|
+
"vitest/no-hooks": "error",
|
|
32
|
+
"vitest/no-identical-title": "error",
|
|
33
|
+
"vitest/no-import-node-test": "error",
|
|
34
|
+
"vitest/no-importing-vitest-globals": "off",
|
|
35
|
+
"vitest/no-interpolation-in-snapshots": "error",
|
|
36
|
+
"vitest/no-large-snapshots": "error",
|
|
37
|
+
"vitest/no-mocks-import": "error",
|
|
38
|
+
"vitest/no-restricted-matchers": "off",
|
|
39
|
+
"vitest/no-restricted-vi-methods": "off",
|
|
40
|
+
"vitest/no-standalone-expect": "error",
|
|
41
|
+
"vitest/no-test-prefixes": "error",
|
|
42
|
+
"vitest/no-test-return-statement": "error",
|
|
43
|
+
"vitest/no-unneeded-async-expect-function": "error",
|
|
44
|
+
"vitest/padding-around-after-all-blocks": "error",
|
|
45
|
+
"vitest/padding-around-test-blocks": "error",
|
|
46
|
+
"vitest/prefer-called-exactly-once-with": "error",
|
|
47
|
+
"vitest/prefer-called-once": "error",
|
|
48
|
+
"vitest/prefer-called-times": "off",
|
|
49
|
+
"vitest/prefer-called-with": "error",
|
|
50
|
+
"vitest/prefer-comparison-matcher": "error",
|
|
51
|
+
"vitest/prefer-describe-function-title": "error",
|
|
52
|
+
"vitest/prefer-each": "error",
|
|
53
|
+
"vitest/prefer-equality-matcher": "error",
|
|
54
|
+
"vitest/prefer-expect-assertions": "error",
|
|
55
|
+
"vitest/prefer-expect-resolves": "error",
|
|
56
|
+
"vitest/prefer-expect-type-of": "error",
|
|
57
|
+
"vitest/prefer-hooks-in-order": "error",
|
|
58
|
+
"vitest/prefer-hooks-on-top": "error",
|
|
59
|
+
"vitest/prefer-import-in-mock": "error",
|
|
60
|
+
"vitest/prefer-importing-vitest-globals": "error",
|
|
61
|
+
"vitest/prefer-lowercase-title": "error",
|
|
62
|
+
"vitest/prefer-mock-promise-shorthand": "error",
|
|
63
|
+
"vitest/prefer-mock-return-shorthand": "error",
|
|
64
|
+
"vitest/prefer-snapshot-hint": "error",
|
|
65
|
+
"vitest/prefer-spy-on": "error",
|
|
66
|
+
"vitest/prefer-strict-boolean-matchers": "error",
|
|
67
|
+
"vitest/prefer-strict-equal": "error",
|
|
68
|
+
"vitest/prefer-to-be": "error",
|
|
69
|
+
"vitest/prefer-to-be-falsy": "off",
|
|
70
|
+
"vitest/prefer-to-be-object": "error",
|
|
71
|
+
"vitest/prefer-to-be-truthy": "off",
|
|
72
|
+
"vitest/prefer-to-contain": "error",
|
|
73
|
+
"vitest/prefer-to-have-been-called-times": "error",
|
|
74
|
+
"vitest/prefer-to-have-length": "error",
|
|
75
|
+
"vitest/prefer-todo": "error",
|
|
76
|
+
"vitest/require-awaited-expect-poll": "error",
|
|
77
|
+
"vitest/require-hook": "off",
|
|
78
|
+
"vitest/require-local-test-context-for-concurrent-snapshots": "error",
|
|
79
|
+
"vitest/require-mock-type-parameters": "error",
|
|
80
|
+
"vitest/require-test-timeout": "off",
|
|
81
|
+
"vitest/require-to-throw-message": "error",
|
|
82
|
+
"vitest/require-top-level-describe": "off",
|
|
83
|
+
"vitest/valid-describe-callback": "error",
|
|
84
|
+
"vitest/valid-expect": "error",
|
|
85
|
+
"vitest/valid-expect-in-promise": "error",
|
|
86
|
+
"vitest/valid-title": "error",
|
|
87
|
+
"vitest/warn-todo": "error"
|
|
88
|
+
}
|
|
89
|
+
} };
|
|
90
|
+
// src/vitest.ts
|
|
91
|
+
const RULES = {};
|
|
92
|
+
writeCategoryRules(RULES, CORE.config.categories, VITEST$1.config.plugins);
|
|
93
|
+
writeEslintRules(RULES, VITEST$1.config.rules);
|
|
94
|
+
/** `@vitest/eslint-plugin` rules, generated from the Oxlint `vitest` entry point. */
|
|
95
|
+
const VITEST = { configs: [{
|
|
96
|
+
name: "@bastidood/eslint-config/vitest",
|
|
97
|
+
plugins: { vitest: vitestPlugin },
|
|
98
|
+
rules: RULES
|
|
99
|
+
}] };
|
|
100
|
+
export { VITEST };
|
package/package.json
CHANGED
|
@@ -1,6 +1,53 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bastidood/eslint-config",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Strict baseline ESLint configuration generated from @bastidood/oxlint-config.",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"homepage": "https://github.com/BastiDood/slopstopper",
|
|
7
|
+
"repository": {
|
|
8
|
+
"type": "git",
|
|
9
|
+
"url": "git+https://github.com/BastiDood/slopstopper.git",
|
|
10
|
+
"directory": "configs/eslint"
|
|
11
|
+
},
|
|
12
|
+
"type": "module",
|
|
13
|
+
"exports": {
|
|
14
|
+
".": "./dist/compose/index.mjs",
|
|
15
|
+
"./core": "./dist/core.mjs",
|
|
16
|
+
"./unicorn": "./dist/unicorn.mjs",
|
|
17
|
+
"./promise": "./dist/promise.mjs",
|
|
18
|
+
"./node": "./dist/node.mjs",
|
|
19
|
+
"./vitest": "./dist/vitest.mjs",
|
|
20
|
+
"./jsdoc": "./dist/jsdoc.mjs"
|
|
21
|
+
},
|
|
22
|
+
"files": [
|
|
23
|
+
"dist"
|
|
24
|
+
],
|
|
25
|
+
"publishConfig": {
|
|
26
|
+
"access": "public"
|
|
27
|
+
},
|
|
28
|
+
"dependencies": {
|
|
29
|
+
"@vitest/eslint-plugin": "^1.6.28",
|
|
30
|
+
"eslint-plugin-import-x": "^4.17.1",
|
|
31
|
+
"eslint-plugin-jsdoc": "^65.4.2",
|
|
32
|
+
"eslint-plugin-n": "^18.5.0",
|
|
33
|
+
"eslint-plugin-promise": "^7.3.0",
|
|
34
|
+
"eslint-plugin-unicorn": "^79.0.0",
|
|
35
|
+
"typescript-eslint": "^8.72.1"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@bastidood/oxlint-config": "0.1.0",
|
|
39
|
+
"@bastidood/tsconfig": "0.1.0",
|
|
40
|
+
"@typescript/native": "npm:typescript@^7.0.2",
|
|
41
|
+
"eslint": "^10.13.0",
|
|
42
|
+
"eslint-plugin-oxlint": "^1.90.0",
|
|
43
|
+
"tsdown": "^0.23.2",
|
|
44
|
+
"typescript": "npm:@typescript/typescript6@^6.0.2"
|
|
45
|
+
},
|
|
46
|
+
"peerDependencies": {
|
|
47
|
+
"eslint": "^10.0.0",
|
|
48
|
+
"typescript": ">=4.8.4 <6.1.0"
|
|
49
|
+
},
|
|
50
|
+
"scripts": {
|
|
51
|
+
"check": "tsc"
|
|
52
|
+
}
|
|
6
53
|
}
|