@dvukovic/style-guide 0.14.2 → 0.15.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.
@@ -0,0 +1,12 @@
1
+ /**
2
+ * TanStack Query configuration
3
+ *
4
+ * @param {import("@eslint/config-helpers").ConfigWithExtends & { additionalFiles?: string[] }} [config]
5
+ * - Additional config
6
+ *
7
+ * @returns {import("@eslint/config-helpers").ConfigWithExtends} ESLint config
8
+ */
9
+ export function tanstackQuery(config?: import("@eslint/config-helpers").ConfigWithExtends & {
10
+ additionalFiles?: string[];
11
+ }): import("@eslint/config-helpers").ConfigWithExtends;
12
+ export const tanstackQueryConfig: import("@eslint/config-helpers").Config[];
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Turbo monorepo configuration
3
+ *
4
+ * @param {import("@eslint/config-helpers").ConfigWithExtends & { additionalFiles?: string[] }} [config]
5
+ * - Additional config
6
+ *
7
+ * @returns {import("@eslint/config-helpers").ConfigWithExtends} ESLint config
8
+ */
9
+ export function turbo(config?: import("@eslint/config-helpers").ConfigWithExtends & {
10
+ additionalFiles?: string[];
11
+ }): import("@eslint/config-helpers").ConfigWithExtends;
12
+ export const turboConfig: import("@eslint/config-helpers").Config[];
@@ -0,0 +1,6 @@
1
+ export const TS_FILES: string[];
2
+ export const REACT_FILES: string[];
3
+ export const ALL_JS_TS_FILES: string[];
4
+ export const TEST_FILES: string[];
5
+ export const NODE_FILES: string[];
6
+ export const STORY_FILES: string[];
@@ -18,6 +18,8 @@ export { node } from "./configs/node.js";
18
18
  export { playwright } from "./configs/playwright.js";
19
19
  export { react } from "./configs/react.js";
20
20
  export { storybook } from "./configs/storybook.js";
21
+ export { tanstackQuery } from "./configs/tanstack-query.js";
22
+ export { turbo } from "./configs/turbo.js";
21
23
  export { typescript } from "./configs/typescript.js";
22
24
  export { typescriptStrict } from "./configs/typescript-strict.js";
23
25
  export { vitest } from "./configs/vitest.js";
@@ -0,0 +1,2 @@
1
+ /** @type {import("@eslint/config-helpers").Config} */
2
+ export const tanstackQuery: import("@eslint/config-helpers").Config;
@@ -0,0 +1,2 @@
1
+ /** @type {import("@eslint/config-helpers").Config} */
2
+ export const turbo: import("@eslint/config-helpers").Config;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dvukovic/style-guide",
3
- "version": "0.14.2",
3
+ "version": "0.15.0",
4
4
  "description": "My own style guide",
5
5
  "repository": {
6
6
  "type": "git",
@@ -66,6 +66,7 @@
66
66
  "@next/eslint-plugin-next": "16.1.4",
67
67
  "@rimac-technology/eslint-plugin": "1.5.0",
68
68
  "@stylistic/eslint-plugin": "5.7.1",
69
+ "@tanstack/eslint-plugin-query": "5.91.4",
69
70
  "@typescript-eslint/parser": "8.53.1",
70
71
  "@vitest/eslint-plugin": "1.6.6",
71
72
  "eslint-plugin-baseline-js": "0.4.2",
@@ -84,6 +85,7 @@
84
85
  "eslint-plugin-sort-destructure-keys": "2.0.0",
85
86
  "eslint-plugin-sort-keys-fix": "1.1.2",
86
87
  "eslint-plugin-storybook": "10.2.0",
88
+ "eslint-plugin-turbo": "2.8.1",
87
89
  "eslint-plugin-typescript-sort-keys": "3.3.0",
88
90
  "eslint-plugin-unicorn": "62.0.0",
89
91
  "eslint-plugin-unused-imports": "4.3.0",
@@ -1,3 +1,4 @@
1
+ import { NODE_FILES } from "../file-patterns.js"
1
2
  import { sonarjsAws } from "../plugins/sonarjs-aws.js"
2
3
 
3
4
  export const awsConfig = [sonarjsAws]
@@ -15,15 +16,7 @@ export function aws(config) {
15
16
 
16
17
  return {
17
18
  extends: [...awsConfig, ...(extendsConfig ?? [])],
18
- files: files ?? [
19
- "**/*.js",
20
- "**/*.cjs",
21
- "**/*.mjs",
22
- "**/*.ts",
23
- "**/*.cts",
24
- "**/*.mts",
25
- ...(additionalFiles ?? []),
26
- ],
19
+ files: files ?? [...NODE_FILES, ...(additionalFiles ?? [])],
27
20
  ...rest,
28
21
  }
29
22
  }
@@ -1,3 +1,4 @@
1
+ import { ALL_JS_TS_FILES } from "../file-patterns.js"
1
2
  import { baseline } from "../plugins/baseline.js"
2
3
  import { dvukovic } from "../plugins/dvukovic.js"
3
4
  import { eslint } from "../plugins/eslint.js"
@@ -43,15 +44,7 @@ export function core(config) {
43
44
 
44
45
  return {
45
46
  extends: [...coreConfig, ...(extendsConfig ?? [])],
46
- files: files ?? [
47
- "**/*.js",
48
- ".*.js",
49
- "**/*.cjs",
50
- "**/*.mjs",
51
- "**/*.ts",
52
- "**/*.tsx",
53
- ...(additionalFiles ?? []),
54
- ],
47
+ files: files ?? [".*.js", ...ALL_JS_TS_FILES, ...(additionalFiles ?? [])],
55
48
  ...rest,
56
49
  }
57
50
  }
@@ -1,3 +1,4 @@
1
+ import { TEST_FILES } from "../file-patterns.js"
1
2
  import { jest as jestPlugin } from "../plugins/jest.js"
2
3
 
3
4
  /**
@@ -14,19 +15,7 @@ export function jest(config) {
14
15
 
15
16
  return {
16
17
  extends: [...jestConfig, ...(extendsConfig ?? [])],
17
- files: files ?? [
18
- "**/*.test.js",
19
- "**/*.test.ts",
20
- "**/*.spec.js",
21
- "**/*.spec.ts",
22
- "**/*.unit.test.js",
23
- "**/*.unit.test.ts",
24
- "**/*.int.test.js",
25
- "**/*.int.test.ts",
26
- "**/*.integration.test.js",
27
- "**/*.integration.test.ts",
28
- ...(additionalFiles ?? []),
29
- ],
18
+ files: files ?? [...TEST_FILES, ...(additionalFiles ?? [])],
30
19
  ...rest,
31
20
  }
32
21
  }
@@ -1,3 +1,4 @@
1
+ import { ALL_JS_TS_FILES } from "../file-patterns.js"
1
2
  import { mobx as mobxPlugin } from "../plugins/mobx.js"
2
3
 
3
4
  export const mobxConfig = [mobxPlugin]
@@ -15,7 +16,7 @@ export function mobx(config) {
15
16
 
16
17
  return {
17
18
  extends: [...mobxConfig, ...(extendsConfig ?? [])],
18
- files: files ?? ["**/*.js", "**/*.ts", "**/*.jsx", "**/*.tsx", ...(additionalFiles ?? [])],
19
+ files: files ?? [...ALL_JS_TS_FILES, "**/*.jsx", ...(additionalFiles ?? [])],
19
20
  ...rest,
20
21
  }
21
22
  }
@@ -1,3 +1,4 @@
1
+ import { ALL_JS_TS_FILES } from "../file-patterns.js"
1
2
  import { next as nextPlugin } from "../plugins/next.js"
2
3
 
3
4
  export const nextConfig = [nextPlugin]
@@ -15,7 +16,7 @@ export function next(config) {
15
16
 
16
17
  return {
17
18
  extends: [...nextConfig, ...(extendsConfig ?? [])],
18
- files: files ?? ["**/*.js", "**/*.ts", "**/*.jsx", "**/*.tsx", ...(additionalFiles ?? [])],
19
+ files: files ?? [...ALL_JS_TS_FILES, "**/*.jsx", ...(additionalFiles ?? [])],
19
20
  ...rest,
20
21
  }
21
22
  }
@@ -1,3 +1,4 @@
1
+ import { NODE_FILES } from "../file-patterns.js"
1
2
  import { nodeN } from "../plugins/n.js"
2
3
  import { securityNode } from "../plugins/security-node.js"
3
4
 
@@ -16,15 +17,7 @@ export function node(config) {
16
17
 
17
18
  return {
18
19
  extends: [...nodeConfig, ...(extendsConfig ?? [])],
19
- files: files ?? [
20
- "**/*.js",
21
- "**/*.cjs",
22
- "**/*.mjs",
23
- "**/*.ts",
24
- "**/*.cts",
25
- "**/*.mts",
26
- ...(additionalFiles ?? []),
27
- ],
20
+ files: files ?? [...NODE_FILES, ...(additionalFiles ?? [])],
28
21
  ...rest,
29
22
  }
30
23
  }
@@ -1,3 +1,4 @@
1
+ import { TEST_FILES } from "../file-patterns.js"
1
2
  import { playwright as playwrightPlugin } from "../plugins/playwright.js"
2
3
 
3
4
  export const playwrightConfig = [playwrightPlugin]
@@ -15,19 +16,7 @@ export function playwright(config) {
15
16
 
16
17
  return {
17
18
  extends: [...playwrightConfig, ...(extendsConfig ?? [])],
18
- files: files ?? [
19
- "**/*.test.js",
20
- "**/*.test.ts",
21
- "**/*.spec.js",
22
- "**/*.spec.ts",
23
- "**/*.unit.test.js",
24
- "**/*.unit.test.ts",
25
- "**/*.int.test.js",
26
- "**/*.int.test.ts",
27
- "**/*.integration.test.js",
28
- "**/*.integration.test.ts",
29
- ...(additionalFiles ?? []),
30
- ],
19
+ files: files ?? [...TEST_FILES, ...(additionalFiles ?? [])],
31
20
  ...rest,
32
21
  }
33
22
  }
@@ -1,3 +1,4 @@
1
+ import { REACT_FILES } from "../file-patterns.js"
1
2
  import { react as reactPlugin } from "../plugins/react.js"
2
3
  import { reactHooks as reactHooksPlugin } from "../plugins/react-hooks.js"
3
4
 
@@ -16,7 +17,7 @@ export function react(config) {
16
17
 
17
18
  return {
18
19
  extends: [...reactConfig, ...(extendsConfig ?? [])],
19
- files: files ?? ["**/*.jsx", "**/*.tsx", ...(additionalFiles ?? [])],
20
+ files: files ?? [...REACT_FILES, ...(additionalFiles ?? [])],
20
21
  ...rest,
21
22
  }
22
23
  }
@@ -1,3 +1,4 @@
1
+ import { STORY_FILES } from "../file-patterns.js"
1
2
  import { storybook as storybookPlugin } from "../plugins/storybook.js"
2
3
 
3
4
  /**
@@ -25,13 +26,7 @@ export function storybook(config) {
25
26
 
26
27
  return {
27
28
  extends: [...storybookConfig, ...(extendsConfig ?? [])],
28
- files: files ?? [
29
- "**/*.stories.js",
30
- "**/*.stories.ts",
31
- "**/*.stories.jsx",
32
- "**/*.stories.tsx",
33
- ...(additionalFiles ?? []),
34
- ],
29
+ files: files ?? [...STORY_FILES, ...(additionalFiles ?? [])],
35
30
  ...rest,
36
31
  }
37
32
  }
@@ -0,0 +1,22 @@
1
+ import { ALL_JS_TS_FILES } from "../file-patterns.js"
2
+ import { tanstackQuery as tanstackQueryPlugin } from "../plugins/tanstack-query.js"
3
+
4
+ export const tanstackQueryConfig = [tanstackQueryPlugin]
5
+
6
+ /**
7
+ * TanStack Query configuration
8
+ *
9
+ * @param {import("@eslint/config-helpers").ConfigWithExtends & { additionalFiles?: string[] }} [config]
10
+ * - Additional config
11
+ *
12
+ * @returns {import("@eslint/config-helpers").ConfigWithExtends} ESLint config
13
+ */
14
+ export function tanstackQuery(config) {
15
+ const { additionalFiles, extends: extendsConfig, files, ...rest } = config ?? {}
16
+
17
+ return {
18
+ extends: [...tanstackQueryConfig, ...(extendsConfig ?? [])],
19
+ files: files ?? [...ALL_JS_TS_FILES, "**/*.jsx", ...(additionalFiles ?? [])],
20
+ ...rest,
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ import { ALL_JS_TS_FILES } from "../file-patterns.js"
2
+ import { turbo as turboPlugin } from "../plugins/turbo.js"
3
+
4
+ export const turboConfig = [turboPlugin]
5
+
6
+ /**
7
+ * Turbo monorepo configuration
8
+ *
9
+ * @param {import("@eslint/config-helpers").ConfigWithExtends & { additionalFiles?: string[] }} [config]
10
+ * - Additional config
11
+ *
12
+ * @returns {import("@eslint/config-helpers").ConfigWithExtends} ESLint config
13
+ */
14
+ export function turbo(config) {
15
+ const { additionalFiles, extends: extendsConfig, files, ...rest } = config ?? {}
16
+
17
+ return {
18
+ extends: [...turboConfig, ...(extendsConfig ?? [])],
19
+ files: files ?? [...ALL_JS_TS_FILES, "**/*.jsx", ...(additionalFiles ?? [])],
20
+ ...rest,
21
+ }
22
+ }
@@ -1,5 +1,7 @@
1
1
  import typescriptEslint from "typescript-eslint"
2
2
 
3
+ import { TS_FILES } from "../file-patterns.js"
4
+
3
5
  /** @type {import("@eslint/config-helpers").Config[]} */
4
6
  export const typescriptStrictConfig = [
5
7
  {
@@ -43,7 +45,7 @@ export function typescriptStrict(config) {
43
45
 
44
46
  return {
45
47
  extends: [...typescriptStrictConfig, ...(extendsConfig ?? [])],
46
- files: files ?? ["**/*.ts", "**/*.tsx", "**/*.cts", "**/*.mts", ...(additionalFiles ?? [])],
48
+ files: files ?? [...TS_FILES, "**/*.tsx", ...(additionalFiles ?? [])],
47
49
  ...rest,
48
50
  }
49
51
  }
@@ -1,5 +1,6 @@
1
1
  import tseslint from "typescript-eslint"
2
2
 
3
+ import { ALL_JS_TS_FILES, TS_FILES } from "../file-patterns.js"
3
4
  import { typescriptEslint } from "../plugins/typescript-eslint.js"
4
5
  import { typescriptSortKeys } from "../plugins/typescript-sort-keys.js"
5
6
 
@@ -16,11 +17,11 @@ export const typescriptConfig = [
16
17
  },
17
18
  },
18
19
  {
19
- files: ["**/*.ts", "**/*.tsx"],
20
+ files: [...TS_FILES, "**/*.tsx"],
20
21
  ...typescriptEslint,
21
22
  },
22
23
  {
23
- files: ["**/*.ts", "**/*.tsx"],
24
+ files: [...TS_FILES, "**/*.tsx"],
24
25
  ...typescriptSortKeys,
25
26
  },
26
27
  ]
@@ -38,15 +39,7 @@ export function typescript(config) {
38
39
 
39
40
  return {
40
41
  extends: [...typescriptConfig, ...(extendsConfig ?? [])],
41
- files: files ?? [
42
- "**/*.js",
43
- "**/*.ts",
44
- "**/*.tsx",
45
- "**/*.cjs",
46
- "**/*.cts",
47
- "**/*.mts",
48
- ...(additionalFiles ?? []),
49
- ],
42
+ files: files ?? [...ALL_JS_TS_FILES, ...(additionalFiles ?? [])],
50
43
  ...rest,
51
44
  }
52
45
  }
@@ -1,3 +1,4 @@
1
+ import { TEST_FILES } from "../file-patterns.js"
1
2
  import { vitest as vitestPlugin } from "../plugins/vitest.js"
2
3
 
3
4
  export const vitestConfig = [vitestPlugin]
@@ -15,19 +16,7 @@ export function vitest(config) {
15
16
 
16
17
  return {
17
18
  extends: [...vitestConfig, ...(extendsConfig ?? [])],
18
- files: files ?? [
19
- "**/*.test.js",
20
- "**/*.test.ts",
21
- "**/*.spec.js",
22
- "**/*.spec.ts",
23
- "**/*.unit.test.js",
24
- "**/*.unit.test.ts",
25
- "**/*.int.test.js",
26
- "**/*.int.test.ts",
27
- "**/*.integration.test.js",
28
- "**/*.integration.test.ts",
29
- ...(additionalFiles ?? []),
30
- ],
19
+ files: files ?? [...TEST_FILES, ...(additionalFiles ?? [])],
31
20
  ...rest,
32
21
  }
33
22
  }
@@ -0,0 +1,29 @@
1
+ const JS_FILES = ["**/*.js", "**/*.cjs", "**/*.mjs"]
2
+
3
+ export const TS_FILES = ["**/*.ts", "**/*.cts", "**/*.mts"]
4
+
5
+ export const REACT_FILES = ["**/*.jsx", "**/*.tsx"]
6
+
7
+ export const ALL_JS_TS_FILES = [...JS_FILES, ...TS_FILES, ...REACT_FILES]
8
+
9
+ export const TEST_FILES = [
10
+ "**/*.test.js",
11
+ "**/*.test.ts",
12
+ "**/*.spec.js",
13
+ "**/*.spec.ts",
14
+ "**/*.unit.test.js",
15
+ "**/*.unit.test.ts",
16
+ "**/*.int.test.js",
17
+ "**/*.int.test.ts",
18
+ "**/*.integration.test.js",
19
+ "**/*.integration.test.ts",
20
+ ]
21
+
22
+ export const NODE_FILES = [...JS_FILES, ...TS_FILES]
23
+
24
+ export const STORY_FILES = [
25
+ "**/*.stories.js",
26
+ "**/*.stories.ts",
27
+ "**/*.stories.jsx",
28
+ "**/*.stories.tsx",
29
+ ]
@@ -37,6 +37,8 @@ export { packageJson, packageJsonWorkspace } from "./configs/package-json.js"
37
37
  export { playwright } from "./configs/playwright.js"
38
38
  export { react } from "./configs/react.js"
39
39
  export { storybook } from "./configs/storybook.js"
40
+ export { tanstackQuery } from "./configs/tanstack-query.js"
41
+ export { turbo } from "./configs/turbo.js"
40
42
  export { typescript } from "./configs/typescript.js"
41
43
  export { typescriptStrict } from "./configs/typescript-strict.js"
42
44
  export { vitest } from "./configs/vitest.js"
@@ -0,0 +1,13 @@
1
+ import tanstackQueryPlugin from "@tanstack/eslint-plugin-query"
2
+
3
+ /** @type {import("@eslint/config-helpers").Config} */
4
+ export const tanstackQuery = {
5
+ plugins: {
6
+ "@tanstack/query": tanstackQueryPlugin,
7
+ },
8
+ rules: {
9
+ "@tanstack/query/exhaustive-deps": "error",
10
+ "@tanstack/query/no-rest-destructuring": "error",
11
+ "@tanstack/query/stable-query-client": "error",
12
+ },
13
+ }
@@ -0,0 +1,11 @@
1
+ import plugin from "eslint-plugin-turbo"
2
+
3
+ /** @type {import("@eslint/config-helpers").Config} */
4
+ export const turbo = {
5
+ plugins: {
6
+ turbo: plugin,
7
+ },
8
+ rules: {
9
+ "turbo/no-undeclared-env-vars": "error",
10
+ },
11
+ }