@curev/eslint-config 0.2.1 → 0.3.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.
Files changed (103) hide show
  1. package/.eslintignore +1 -0
  2. package/.github/workflows/release.yml +37 -0
  3. package/.vscode/settings.json +36 -0
  4. package/CHANGELOG.md +740 -0
  5. package/README.md +70 -0
  6. package/eslint.config.ts +3 -0
  7. package/fixtures/input/css.css +10 -0
  8. package/fixtures/input/html.html +17 -0
  9. package/fixtures/input/javascript.js +69 -0
  10. package/fixtures/input/jsx.jsx +27 -0
  11. package/fixtures/input/markdown.md +34 -0
  12. package/fixtures/input/svelte.svelte +8 -0
  13. package/fixtures/input/toml.toml +23 -0
  14. package/fixtures/input/tsx.tsx +32 -0
  15. package/fixtures/input/typescript.ts +84 -0
  16. package/fixtures/input/vue-ts.vue +35 -0
  17. package/fixtures/input/vue.vue +27 -0
  18. package/fixtures/output/all/javascript.js +72 -0
  19. package/fixtures/output/all/jsx.jsx +26 -0
  20. package/fixtures/output/all/markdown.md +33 -0
  21. package/fixtures/output/all/svelte.svelte +8 -0
  22. package/fixtures/output/all/toml.toml +23 -0
  23. package/fixtures/output/all/tsx.tsx +32 -0
  24. package/fixtures/output/all/typescript.ts +83 -0
  25. package/fixtures/output/all/vue-ts.vue +35 -0
  26. package/fixtures/output/all/vue.vue +24 -0
  27. package/fixtures/output/js/javascript.js +72 -0
  28. package/fixtures/output/js/markdown.md +33 -0
  29. package/fixtures/output/js/toml.toml +23 -0
  30. package/fixtures/output/no-markdown-with-formatters/javascript.js +72 -0
  31. package/fixtures/output/no-markdown-with-formatters/jsx.jsx +24 -0
  32. package/fixtures/output/no-markdown-with-formatters/markdown.md +33 -0
  33. package/fixtures/output/no-markdown-with-formatters/toml.toml +23 -0
  34. package/fixtures/output/no-markdown-with-formatters/tsx.tsx +23 -0
  35. package/fixtures/output/no-markdown-with-formatters/typescript.ts +83 -0
  36. package/fixtures/output/no-style/javascript.js +72 -0
  37. package/fixtures/output/no-style/jsx.jsx +21 -0
  38. package/fixtures/output/no-style/toml.toml +23 -0
  39. package/fixtures/output/no-style/typescript.ts +80 -0
  40. package/fixtures/output/no-style/vue-ts.vue +35 -0
  41. package/fixtures/output/no-style/vue.vue +24 -0
  42. package/fixtures/output/tab-double-quotes/javascript.js +72 -0
  43. package/fixtures/output/tab-double-quotes/jsx.jsx +26 -0
  44. package/fixtures/output/tab-double-quotes/markdown.md +33 -0
  45. package/fixtures/output/tab-double-quotes/toml.toml +23 -0
  46. package/fixtures/output/tab-double-quotes/tsx.tsx +32 -0
  47. package/fixtures/output/tab-double-quotes/typescript.ts +83 -0
  48. package/fixtures/output/tab-double-quotes/vue-ts.vue +35 -0
  49. package/fixtures/output/tab-double-quotes/vue.vue +24 -0
  50. package/fixtures/output/ts-override/javascript.js +72 -0
  51. package/fixtures/output/ts-override/jsx.jsx +26 -0
  52. package/fixtures/output/ts-override/markdown.md +33 -0
  53. package/fixtures/output/ts-override/toml.toml +23 -0
  54. package/fixtures/output/ts-override/tsx.tsx +32 -0
  55. package/fixtures/output/ts-override/typescript.ts +83 -0
  56. package/fixtures/output/ts-override/vue-ts.vue +35 -0
  57. package/fixtures/output/ts-override/vue.vue +24 -0
  58. package/fixtures/output/with-formatters/css.css +11 -0
  59. package/fixtures/output/with-formatters/html.html +28 -0
  60. package/fixtures/output/with-formatters/javascript.js +72 -0
  61. package/fixtures/output/with-formatters/jsx.jsx +26 -0
  62. package/fixtures/output/with-formatters/markdown.md +34 -0
  63. package/fixtures/output/with-formatters/toml.toml +23 -0
  64. package/fixtures/output/with-formatters/tsx.tsx +32 -0
  65. package/fixtures/output/with-formatters/typescript.ts +83 -0
  66. package/fixtures/output/with-formatters/vue-ts.vue +38 -0
  67. package/fixtures/output/with-formatters/vue.vue +24 -0
  68. package/package.json +130 -12
  69. package/src/configs/comments.ts +19 -0
  70. package/src/configs/formatters.ts +187 -0
  71. package/src/configs/ignores.ts +10 -0
  72. package/src/configs/imports.ts +46 -0
  73. package/src/configs/index.ts +21 -0
  74. package/src/configs/javascript.ts +277 -0
  75. package/src/configs/jsdoc.ts +41 -0
  76. package/src/configs/jsonc.ts +86 -0
  77. package/src/configs/markdown.ts +110 -0
  78. package/src/configs/node.ts +24 -0
  79. package/src/configs/perfectionist.ts +18 -0
  80. package/src/configs/react.ts +111 -0
  81. package/src/configs/sort.ts +223 -0
  82. package/src/configs/stylistic.ts +52 -0
  83. package/src/configs/svelte.ts +107 -0
  84. package/src/configs/test.ts +54 -0
  85. package/src/configs/toml.ts +72 -0
  86. package/src/configs/typescript.ts +171 -0
  87. package/src/configs/unicorn.ts +41 -0
  88. package/src/configs/unocss.ts +43 -0
  89. package/src/configs/vue.ts +170 -0
  90. package/src/configs/yaml.ts +72 -0
  91. package/src/factory.ts +255 -0
  92. package/src/globs.ts +81 -0
  93. package/src/index.ts +9 -0
  94. package/src/plugins.ts +10 -0
  95. package/src/stub.d.ts +3 -0
  96. package/src/types.ts +364 -0
  97. package/src/utils.ts +76 -0
  98. package/src/vender/prettier-types.ts +136 -0
  99. package/test/cli.spec.ts +90 -0
  100. package/test/fixtures.test.ts +127 -0
  101. package/tsconfig.json +17 -0
  102. package/tsup.config.ts +8 -0
  103. package/index.js +0 -5
@@ -0,0 +1,127 @@
1
+ import { join, resolve } from "node:path";
2
+ import { afterAll, beforeAll, it } from "vitest";
3
+ import fs from "fs-extra";
4
+ import { execa } from "execa";
5
+ import fg from "fast-glob";
6
+ import type { FlatConfigItem, OptionsConfig } from "../src/types";
7
+
8
+ beforeAll(async () => {
9
+ await fs.rm("_fixtures", { recursive: true, force: true });
10
+ });
11
+ afterAll(async () => {
12
+ await fs.rm("_fixtures", { recursive: true, force: true });
13
+ });
14
+
15
+ runWithConfig("js", {
16
+ typescript: false,
17
+ vue: false
18
+ });
19
+ runWithConfig("all", {
20
+ typescript: true,
21
+ vue: true,
22
+ svelte: true
23
+ });
24
+ runWithConfig("no-style", {
25
+ typescript: true,
26
+ vue: true,
27
+ stylistic: false
28
+ });
29
+ runWithConfig(
30
+ "tab-double-quotes",
31
+ {
32
+ typescript: true,
33
+ vue: true,
34
+ stylistic: {
35
+ indent: "tab",
36
+ quotes: "double"
37
+ }
38
+ },
39
+ {
40
+ rules: {
41
+ "style/no-mixed-spaces-and-tabs": "off"
42
+ }
43
+ }
44
+ );
45
+
46
+ // https://github.com/antfu/eslint-config/issues/255
47
+ runWithConfig(
48
+ "ts-override",
49
+ {
50
+ typescript: true
51
+ },
52
+ {
53
+ rules: {
54
+ "ts/consistent-type-definitions": ["error", "type"]
55
+ }
56
+ }
57
+ );
58
+
59
+ runWithConfig(
60
+ "with-formatters",
61
+ {
62
+ typescript: true,
63
+ vue: true,
64
+ formatters: true
65
+ }
66
+ );
67
+
68
+ runWithConfig(
69
+ "no-markdown-with-formatters",
70
+ {
71
+ jsx: false,
72
+ vue: false,
73
+ markdown: false,
74
+ formatters: {
75
+ markdown: true
76
+ }
77
+ }
78
+ );
79
+
80
+ function runWithConfig(name: string, configs: OptionsConfig, ...items: FlatConfigItem[]) {
81
+ it.concurrent(name, async ({ expect }) => {
82
+ const from = resolve("fixtures/input");
83
+ const output = resolve("fixtures/output", name);
84
+ const target = resolve("_fixtures", name);
85
+
86
+ await fs.copy(from, target, {
87
+ filter: (src) => {
88
+ return !src.includes("node_modules");
89
+ }
90
+ });
91
+ await fs.writeFile(join(target, "eslint.config.js"), `
92
+ // @eslint-disable
93
+ import antfu from '@antfu/eslint-config'
94
+
95
+ export default antfu(
96
+ ${JSON.stringify(configs)},
97
+ ...${JSON.stringify(items) ?? []},
98
+ )
99
+ `);
100
+
101
+ await execa("npx", ["eslint", ".", "--fix"], {
102
+ cwd: target,
103
+ stdio: "pipe"
104
+ });
105
+
106
+ const files = await fg("**/*", {
107
+ ignore: [
108
+ "node_modules",
109
+ "eslint.config.js"
110
+ ],
111
+ cwd: target
112
+ });
113
+
114
+ await Promise.all(files.map(async (file) => {
115
+ const content = await fs.readFile(join(target, file), "utf-8");
116
+ const source = await fs.readFile(join(from, file), "utf-8");
117
+ const outputPath = join(output, file);
118
+ if (content === source) {
119
+ if (fs.existsSync(outputPath)) {
120
+ fs.remove(outputPath);
121
+ }
122
+ return;
123
+ }
124
+ await expect.soft(content).toMatchFileSnapshot(join(output, file));
125
+ }));
126
+ }, 30_000);
127
+ }
package/tsconfig.json ADDED
@@ -0,0 +1,17 @@
1
+ {
2
+ "compilerOptions": {
3
+ "target": "es2020",
4
+ "baseUrl": ".",
5
+ "module": "es2020",
6
+ "moduleResolution": "Bundler",
7
+ "strict": true,
8
+ "esModuleInterop": true,
9
+ "skipLibCheck": true
10
+ },
11
+ "include": [
12
+ "**/*.ts"
13
+ ],
14
+ "exclude": [
15
+ "./fixtures/**/*.*"
16
+ ]
17
+ }
package/tsup.config.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { defineConfig } from "tsup";
2
+
3
+ export default defineConfig({
4
+ entry: [
5
+ "src/index.ts"
6
+ ],
7
+ shims: true
8
+ });
package/index.js DELETED
@@ -1,5 +0,0 @@
1
- module.exports = {
2
- extends: [
3
- "@curev/eslint-config-vue"
4
- ]
5
- };