Skip to content

Commit 2c8b8e2

Browse files
committed
feat: more work on the configs
Signed-off-by: prisis <[email protected]>
1 parent 0bd5d1c commit 2c8b8e2

File tree

12 files changed

+14644
-2072
lines changed

12 files changed

+14644
-2072
lines changed

.lintstagedrc.js

+5-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
11
import { defineConfig } from "./packages/lint-staged-config/dist/index.mjs";
22

3-
export default defineConfig();
3+
export default defineConfig({
4+
eslint: {
5+
config: "./eslint.config.js",
6+
}
7+
});

package.json

+1-29
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@
33
"private": true,
44
"description": "This project is a code style guide of all basic back- and front end project used at Anolilab.",
55
"keywords": [
6-
"babel",
76
"es2015",
87
"es2018",
98
"es6",
@@ -73,7 +72,7 @@
7372
"lint:text": "textlint ./.github/ ./packages/** ./README.md ./UPGRADE.md --parallel --experimental --cache --dry-run",
7473
"lint:text:fix": "textlint ./.github/ ./packages/** ./README.md ./UPGRADE.md --parallel --experimental --fix",
7574
"sort-package-json": "sort-package-json ./packages/**/package.json ./package.json",
76-
"test:all": "nx run-many --target=test:coverage --projects=browserslist-config-anolilab,stylelint-config,eslint-config && pnpm test:stylelint && pnpm test:babel",
75+
"test:all": "nx run-many --target=test:coverage --projects=browserslist-config-anolilab,stylelint-config,eslint-config && pnpm test:stylelint",
7776
"test:browserslist-config-anolilab": "pnpm --filter \"browserslist-config-anolilab\" run test",
7877
"test:coverage:browserslist-config-anolilab": "pnpm --filter \"browserslist-config-anolilab\" run test:coverage",
7978
"test:coverage:lint-staged-config": "pnpm --filter \"lint-staged-config\" run test:coverage",
@@ -86,9 +85,6 @@
8685
},
8786
"dependencies": {
8887
"@anolilab/multi-semantic-release": "^1.1.6",
89-
"@babel/cli": "^7.26.4",
90-
"@babel/core": "^7.26.0",
91-
"@babel/preset-env": "^7.26.0",
9288
"@commitlint/cli": "^19.6.1",
9389
"@commitlint/config-conventional": "^19.6.0",
9490
"@commitlint/core": "^19.6.1",
@@ -98,17 +94,11 @@
9894
"@types/node": "18.19.70",
9995
"@vitest/coverage-v8": "^2.1.8",
10096
"audit-ci": "^7.1.0",
101-
"babel-plugin-transform-es2015-modules-commonjs": "^6.26.2",
10297
"commitizen": "^4.3.1",
10398
"conventional-changelog-conventionalcommits": "8.0.0",
10499
"cross-env": "^7.0.3",
105100
"cz-conventional-changelog": "^3.3.0",
106101
"eslint": "^9.17.0",
107-
"eslint-plugin-deprecation": "^3.0.0",
108-
"eslint-plugin-editorconfig": "^4.0.3",
109-
"eslint-plugin-mdx": "^3.1.5",
110-
"eslint-plugin-vitest": "^0.5.4",
111-
"eslint-plugin-vitest-globals": "^1.5.0",
112102
"husky": "^9.1.7",
113103
"is-ci": "^4.1.0",
114104
"lint-staged": "^15.3.0",
@@ -137,23 +127,5 @@
137127
"nanoid@<3.3.8": ">=3.3.8",
138128
"chrono-node@<2.2.4": ">=2.2.4"
139129
}
140-
},
141-
"anolilab": {
142-
"lint-staged-config": {
143-
"eslint": {
144-
"config": "./.eslintrc.js"
145-
}
146-
},
147-
"eslint-config": {
148-
"plugin": {
149-
"tsdoc": false,
150-
"etc": false
151-
},
152-
"warn_on_unsupported_typescript_version": false,
153-
"info_on_disabling_jsx_react_rule": false,
154-
"info_on_disabling_prettier_conflict_rule": false,
155-
"info_on_disabling_jsonc_sort_keys_rule": false,
156-
"info_on_disabling_etc_no_deprecated": false
157-
}
158130
}
159131
}

packages/eslint-config/package.json

-1
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,6 @@
128128
"@html-eslint/eslint-plugin": "^0.31.1",
129129
"@html-eslint/parser": "^0.31.0",
130130
"eslint-plugin-no-only-tests": "^3.3.0",
131-
"@jsenv/eslint-import-resolver": "^8.2.0",
132131
"@stylistic/eslint-plugin": "^2.12.1",
133132
"@stylistic/eslint-plugin-ts": "^2.12.1",
134133
"typescript-eslint": "^8.18.2",

packages/eslint-config/scripts/typegen.ts

+94-49
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,47 @@ import { flatConfigsToRulesDTS } from "eslint-typegen/core";
44
import { builtinRules } from "eslint/use-at-your-own-risk";
55
import combine from "../src/utils/combine";
66

7-
// import {
8-
// astro,
9-
// combine,
10-
// comments,
11-
// formatters,
12-
// imports,
13-
// javascript,
14-
// jsdoc,
15-
// jsonc,
16-
// jsx,
17-
// markdown,
18-
// node,
19-
// perfectionist,
20-
// react,
21-
// regexp,
22-
// solid,
23-
// sortPackageJson,
24-
// stylistic,
25-
// svelte,
26-
// test,
27-
// toml,
28-
// typescript,
29-
// unicorn,
30-
// unocss,
31-
// vue,
32-
// yaml,
33-
// } from "../src";
347
import yaml from "../src/config/plugins/yml";
8+
import comments from "../src/config/plugins/comments";
9+
import imports from "../src/config/plugins/imports";
10+
import jsxA11y from "../src/config/plugins/jsx-a11y";
11+
import jsdoc from "../src/config/plugins/jsdoc";
12+
import jsonc from "../src/config/plugins/jsonc";
13+
import markdown from "../src/config/plugins/markdown";
14+
import perfectionist from "../src/config/plugins/perfectionist";
15+
import react from "../src/config/plugins/react";
16+
import { sortPackageJson } from "sort-package-json";
17+
import stylistic from "../src/config/plugins/stylistic";
18+
import toml from "../src/config/plugins/toml";
19+
import regexp from "../src/config/plugins/regexp";
20+
import unicorn from "../src/config/plugins/unicorn";
21+
import node from "../src/config/plugins/node";
22+
import vitest from "../src/config/plugins/vitest";
23+
import antfu from "../src/config/plugins/antfu";
24+
import compat from "../src/config/plugins/compat";
25+
import html from "../src/config/plugins/html";
26+
import noSecrets from "../src/config/plugins/no-secrets";
27+
import noUnsanitized from "../src/config/plugins/no-unsanitized";
28+
import playwright from "../src/config/plugins/playwright";
29+
import promise from "../src/config/plugins/promise";
30+
import simpleImportSort from "../src/config/plugins/simple-import-sort";
31+
import sonarjs from "../src/config/plugins/sonarjs";
32+
import storybook from "../src/config/plugins/storybook";
33+
import tailwindcss from "../src/config/plugins/tailwindcss";
34+
import tanstackQuery from "../src/config/plugins/tanstack-query";
35+
import tsdoc from "../src/config/plugins/tsdoc";
36+
import validateJsxNesting from "../src/config/plugins/validate-jsx-nesting";
37+
import bestPractices from "../src/config/best-practices";
38+
import variables from "../src/config/variables";
39+
import style from "../src/config/style";
40+
import errors from "../src/config/errors";
41+
import typescript from "../src/config/plugins/typescript";
42+
import javascript from "../src/config/plugins/javascript";
43+
44+
45+
import type { NormalizedPackageJson } from "@visulima/package";
46+
47+
const fakePackageJson = {} as NormalizedPackageJson;
3548

3649
const configs = await combine(
3750
{
@@ -41,29 +54,61 @@ const configs = await combine(
4154
},
4255
},
4356
},
44-
// astro(),
45-
// comments(),
57+
antfu({
58+
packageJson: fakePackageJson,
59+
}),
60+
bestPractices({}),
61+
compat({}),
62+
errors({}),
63+
html({}),
64+
noSecrets({}),
65+
noUnsanitized({}),
66+
playwright({}),
67+
promise({}),
68+
simpleImportSort({}),
69+
sonarjs({}),
70+
storybook({}),
71+
tailwindcss({}),
72+
tanstackQuery({}),
73+
tsdoc({}),
74+
validateJsxNesting({}),
75+
variables({}),
76+
style({}),
77+
comments({}),
4678
// formatters(),
47-
// imports(),
48-
// javascript(),
49-
// jsx(),
50-
// jsdoc(),
51-
// jsonc(),
52-
// markdown(),
53-
// node(),
54-
// perfectionist(),
55-
// react(),
56-
// solid(),
57-
// sortPackageJson(),
58-
// stylistic(),
59-
// svelte(),
60-
// test(),
61-
// toml(),
62-
// regexp(),
63-
// typescript(),
64-
// unicorn(),
65-
// unocss(),
66-
// vue(),
79+
imports({
80+
packageJson: fakePackageJson,
81+
}),
82+
javascript({}),
83+
jsxA11y({}),
84+
jsdoc({
85+
packageJson: fakePackageJson,
86+
}),
87+
jsonc({
88+
packageJson: fakePackageJson,
89+
}),
90+
markdown({}),
91+
perfectionist({
92+
packageJson: fakePackageJson,
93+
}),
94+
react({
95+
packageJson: fakePackageJson,
96+
}),
97+
node({
98+
packageJson: fakePackageJson,
99+
}),
100+
// solid({),
101+
sortPackageJson({}),
102+
stylistic({}),
103+
// svelte({),
104+
vitest({}),
105+
toml({}),
106+
regexp({}),
107+
typescript({}),
108+
unicorn({
109+
packageJson: fakePackageJson,
110+
}),
111+
// unocss({),
67112
yaml({}),
68113
);
69114

packages/eslint-config/src/config/best-practices.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -369,7 +369,7 @@ export default createConfig<OptionsFiles>("all", async (config, oFiles) => {
369369
property: "parseInt",
370370
},
371371
{
372-
message: "Use `Object.getPrototypeOf` instead.",
372+
message: "Use `Object.getPrototypeOf` or `Object.setPrototypeOf` instead.",
373373
property: "__proto__",
374374
},
375375
{
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import type { TypedFlatConfigItem } from "../types";
2+
3+
const ignores = async (userIgnores: string[] = []): Promise<TypedFlatConfigItem[]> => {
4+
return [
5+
{
6+
ignores: [
7+
"**/node_modules",
8+
"**/dist",
9+
"**/package-lock.json",
10+
"**/yarn.lock",
11+
"**/pnpm-lock.yaml",
12+
"**/bun.lockb",
13+
14+
"**/output",
15+
"**/coverage",
16+
"**/temp",
17+
"**/.temp",
18+
"**/tmp",
19+
"**/.tmp",
20+
"**/.history",
21+
"**/.vitepress/cache",
22+
"**/.nuxt",
23+
"**/.next",
24+
"**/.svelte-kit",
25+
"**/.vercel",
26+
"**/.changeset",
27+
"**/.idea",
28+
"**/.cache",
29+
"**/.output",
30+
"**/.vite-inspect",
31+
"**/.yarn",
32+
"**/vite.config.*.timestamp-*",
33+
34+
"**/CHANGELOG*.md",
35+
"**/*.min.*",
36+
"**/LICENSE*",
37+
"**/__snapshots__",
38+
"**/auto-import?(s).d.ts",
39+
"**/components.d.ts",
40+
41+
...userIgnores,
42+
],
43+
name: "anolilab/ignores",
44+
},
45+
];
46+
}
47+
48+
export default ignores;

packages/eslint-config/src/config/plugins/imports.ts

+5-24
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,15 @@ import { hasPackageJsonAnyDependency } from "@visulima/package";
55
import tsParser from "@typescript-eslint/parser";
66

77
export default createConfig<
8-
OptionsFiles & OptionsOverrides & OptionsStylistic & OptionsPackageJson & OptionsCwd & OptionsTypeScriptWithTypes & { importNoUnusedModules?: string[] }
8+
OptionsFiles & OptionsOverrides & OptionsStylistic & OptionsPackageJson & OptionsTypeScriptWithTypes & { importNoUnusedModules?: string[] }
99
>("all", async (config, oFiles) => {
10-
const { files = oFiles, overrides, stylistic, packageJson, importNoUnusedModules = [], cwd, tsconfigPath } = config;
10+
const { files = oFiles, overrides, stylistic, packageJson, importNoUnusedModules = [], tsconfigPath } = config;
1111

1212
const importPlugin = await interopDefault(import("eslint-plugin-import-x"));
1313

1414
const options = [
1515
{
16-
name: "anolilab/import/rules",
16+
name: "anolilab/imports/rules",
1717
plugins: {
1818
import: importPlugin,
1919
},
@@ -311,28 +311,9 @@ export default createConfig<
311311

312312
...overrides,
313313
},
314-
settings: {
315-
"import/core-modules": [],
316-
// https://github.com/un-es/eslint-plugin-i/blob/main/docs/rules/extensions.md
317-
"import/extensions": [".js", ".cjs", ".mjs", ".jsx"],
318-
// Ensure consistent use of file extension within the import path
319-
"import/ignore": ["\\.(coffee|scss|css|less|hbs|svg|json)$"],
320-
},
321-
},
322-
{
323-
name: "anolilab/import/js-rules",
324-
files: getFilesGlobs("js"),
325-
settings: {
326-
"import/resolver": {
327-
"@jsenv/eslint-import-resolver": {
328-
rootDirectoryUrl: cwd,
329-
packageConditions: ["node", "import"],
330-
},
331-
},
332-
},
333314
},
334315
{
335-
name: "anolilab/import/d.ts-rules",
316+
name: "anolilab/imports/d.ts-rules",
336317
files: getFilesGlobs("d.ts"),
337318
rules: {
338319
"import/no-duplicates": "off",
@@ -374,7 +355,7 @@ export default createConfig<
374355
"import/named": "off",
375356

376357
// ensure imports point to files/modules that can be resolved
377-
"import/no-unresolved": "off",
358+
// "import/no-unresolved": "off",
378359
},
379360
settings: {
380361
// Append 'ts' extensions to 'import/extensions' setting
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
import { createConfig } from "../../utils/create-config";
2+
3+
import globals from "globals";
4+
import interopDefault from "../../utils/interop-default";
5+
6+
export default createConfig("js", async () => {
7+
const eslintJs = await interopDefault(import("@eslint/js"));
8+
9+
return [
10+
{
11+
languageOptions: {
12+
ecmaVersion: 2022,
13+
globals: {
14+
...globals.browser,
15+
...globals.es2021,
16+
...globals.node,
17+
document: "readonly",
18+
navigator: "readonly",
19+
window: "readonly",
20+
},
21+
parserOptions: {
22+
ecmaFeatures: {
23+
jsx: true,
24+
},
25+
ecmaVersion: 2022,
26+
sourceType: "module",
27+
},
28+
sourceType: "module",
29+
},
30+
linterOptions: {
31+
reportUnusedDisableDirectives: true,
32+
},
33+
name: "anolilab/javascript/setup",
34+
},
35+
eslintJs.configs.recommended,
36+
];
37+
});

0 commit comments

Comments
 (0)