js-style-kit 0.2.11 → 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 (118) hide show
  1. package/README.md +74 -11
  2. package/dist/bin/index.js +12 -16
  3. package/dist/bin/index.js.map +1 -1
  4. package/dist/index.d.ts +130 -9
  5. package/dist/index.js +301 -83
  6. package/dist/index.js.map +1 -1
  7. package/package.json +19 -14
  8. package/dist/eslint/base/config.d.ts +0 -17
  9. package/dist/eslint/base/config.js +0 -457
  10. package/dist/eslint/base/config.js.map +0 -1
  11. package/dist/eslint/base/rules.d.ts +0 -18
  12. package/dist/eslint/base/rules.js +0 -425
  13. package/dist/eslint/base/rules.js.map +0 -1
  14. package/dist/eslint/base/types.d.ts +0 -21
  15. package/dist/eslint/base/types.js +0 -1
  16. package/dist/eslint/base/types.js.map +0 -1
  17. package/dist/eslint/constants.d.ts +0 -28
  18. package/dist/eslint/constants.js +0 -25
  19. package/dist/eslint/constants.js.map +0 -1
  20. package/dist/eslint/ignores.d.ts +0 -19
  21. package/dist/eslint/ignores.js +0 -42
  22. package/dist/eslint/ignores.js.map +0 -1
  23. package/dist/eslint/index.d.ts +0 -55
  24. package/dist/eslint/index.js +0 -1410
  25. package/dist/eslint/index.js.map +0 -1
  26. package/dist/eslint/jsdoc/config.d.ts +0 -14
  27. package/dist/eslint/jsdoc/config.js +0 -109
  28. package/dist/eslint/jsdoc/config.js.map +0 -1
  29. package/dist/eslint/jsdoc/rules.d.ts +0 -15
  30. package/dist/eslint/jsdoc/rules.js +0 -73
  31. package/dist/eslint/jsdoc/rules.js.map +0 -1
  32. package/dist/eslint/jsdoc/types.d.ts +0 -52
  33. package/dist/eslint/jsdoc/types.js +0 -1
  34. package/dist/eslint/jsdoc/types.js.map +0 -1
  35. package/dist/eslint/nextjs/config.d.ts +0 -12
  36. package/dist/eslint/nextjs/config.js +0 -62
  37. package/dist/eslint/nextjs/config.js.map +0 -1
  38. package/dist/eslint/nextjs/rules.d.ts +0 -8
  39. package/dist/eslint/nextjs/rules.js +0 -28
  40. package/dist/eslint/nextjs/rules.js.map +0 -1
  41. package/dist/eslint/nextjs/types.d.ts +0 -29
  42. package/dist/eslint/nextjs/types.js +0 -1
  43. package/dist/eslint/nextjs/types.js.map +0 -1
  44. package/dist/eslint/perfectionist/config.d.ts +0 -7
  45. package/dist/eslint/perfectionist/config.js +0 -65
  46. package/dist/eslint/perfectionist/config.js.map +0 -1
  47. package/dist/eslint/perfectionist/rules.d.ts +0 -12
  48. package/dist/eslint/perfectionist/rules.js +0 -31
  49. package/dist/eslint/perfectionist/rules.js.map +0 -1
  50. package/dist/eslint/prefer-arrow-function/config.d.ts +0 -12
  51. package/dist/eslint/prefer-arrow-function/config.js +0 -45
  52. package/dist/eslint/prefer-arrow-function/config.js.map +0 -1
  53. package/dist/eslint/prefer-arrow-function/types.d.ts +0 -17
  54. package/dist/eslint/prefer-arrow-function/types.js +0 -1
  55. package/dist/eslint/prefer-arrow-function/types.js.map +0 -1
  56. package/dist/eslint/react/config.d.ts +0 -18
  57. package/dist/eslint/react/config.js +0 -186
  58. package/dist/eslint/react/config.js.map +0 -1
  59. package/dist/eslint/react/rules.d.ts +0 -26
  60. package/dist/eslint/react/rules.js +0 -132
  61. package/dist/eslint/react/rules.js.map +0 -1
  62. package/dist/eslint/react-compiler/config.d.ts +0 -12
  63. package/dist/eslint/react-compiler/config.js +0 -39
  64. package/dist/eslint/react-compiler/config.js.map +0 -1
  65. package/dist/eslint/react-refresh/config.d.ts +0 -16
  66. package/dist/eslint/react-refresh/config.js +0 -55
  67. package/dist/eslint/react-refresh/config.js.map +0 -1
  68. package/dist/eslint/react-refresh/rules.d.ts +0 -38
  69. package/dist/eslint/react-refresh/rules.js +0 -19
  70. package/dist/eslint/react-refresh/rules.js.map +0 -1
  71. package/dist/eslint/storybook/config.d.ts +0 -13
  72. package/dist/eslint/storybook/config.js +0 -67
  73. package/dist/eslint/storybook/config.js.map +0 -1
  74. package/dist/eslint/testing/config.d.ts +0 -25
  75. package/dist/eslint/testing/config.js +0 -169
  76. package/dist/eslint/testing/config.js.map +0 -1
  77. package/dist/eslint/testing/jest-rules.d.ts +0 -14
  78. package/dist/eslint/testing/jest-rules.js +0 -44
  79. package/dist/eslint/testing/jest-rules.js.map +0 -1
  80. package/dist/eslint/testing/vitest-rules.d.ts +0 -14
  81. package/dist/eslint/testing/vitest-rules.js +0 -50
  82. package/dist/eslint/testing/vitest-rules.js.map +0 -1
  83. package/dist/eslint/turbo/config.d.ts +0 -12
  84. package/dist/eslint/turbo/config.js +0 -39
  85. package/dist/eslint/turbo/config.js.map +0 -1
  86. package/dist/eslint/turbo/types.d.ts +0 -11
  87. package/dist/eslint/turbo/types.js +0 -1
  88. package/dist/eslint/turbo/types.js.map +0 -1
  89. package/dist/eslint/types.d.ts +0 -11
  90. package/dist/eslint/types.js +0 -1
  91. package/dist/eslint/types.js.map +0 -1
  92. package/dist/eslint/typescript/config.d.ts +0 -11
  93. package/dist/eslint/typescript/config.js +0 -186
  94. package/dist/eslint/typescript/config.js.map +0 -1
  95. package/dist/eslint/typescript/rules.d.ts +0 -8
  96. package/dist/eslint/typescript/rules.js +0 -135
  97. package/dist/eslint/typescript/rules.js.map +0 -1
  98. package/dist/eslint/typescript/types.d.ts +0 -7
  99. package/dist/eslint/typescript/types.js +0 -1
  100. package/dist/eslint/typescript/types.js.map +0 -1
  101. package/dist/eslint/unicorn/config.d.ts +0 -11
  102. package/dist/eslint/unicorn/config.js +0 -113
  103. package/dist/eslint/unicorn/config.js.map +0 -1
  104. package/dist/eslint/unicorn/rules.d.ts +0 -8
  105. package/dist/eslint/unicorn/rules.js +0 -79
  106. package/dist/eslint/unicorn/rules.js.map +0 -1
  107. package/dist/modules.d.d.ts +0 -3
  108. package/dist/modules.d.js +0 -1
  109. package/dist/modules.d.js.map +0 -1
  110. package/dist/prettier/index.d.ts +0 -34
  111. package/dist/prettier/index.js +0 -132
  112. package/dist/prettier/index.js.map +0 -1
  113. package/dist/prettier/patch-tailwind-plugin.d.ts +0 -9
  114. package/dist/prettier/patch-tailwind-plugin.js +0 -72
  115. package/dist/prettier/patch-tailwind-plugin.js.map +0 -1
  116. package/dist/utils/is-type.d.ts +0 -44
  117. package/dist/utils/is-type.js +0 -28
  118. package/dist/utils/is-type.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/eslint/testing/config.ts","../../../src/eslint/constants.ts","../../../src/eslint/testing/jest-rules.ts","../../../src/eslint/testing/vitest-rules.ts"],"sourcesContent":["import jest from \"eslint-plugin-jest\";\nimport vitest from \"eslint-plugin-vitest\";\n\nimport type { EslintConfigObject } from \"../types.js\";\n\nimport { configNames } from \"../constants.js\";\nimport { jestRules } from \"./jest-rules.js\";\nimport { vitestRules } from \"./vitest-rules.js\";\n\nexport interface TestingConfig {\n filenamePattern?: \"spec\" | \"test\";\n files?: string[];\n formattingRules?: boolean;\n framework?: \"bun\" | \"jest\" | \"node\" | \"vitest\";\n itOrTest?: \"it\" | \"test\";\n}\n\n/**\n * Creates an ESLint configuration object for testing.\n *\n * @param options - Configuration options\n * @param options.files - Files to include in the configuration\n * @param options.filenamePattern - \".test\" or \".spec\" filename pattern\n * @param options.itOrTest - \"it\" or \"test\"\n * @param options.framework - \"jest\" or \"vitest\"\n * @param options.formattingRules - Whether to include formatting rules like padding around blocks\n * @returns ESLint configuration object\n */\nexport const testingConfig = (\n {\n filenamePattern,\n files,\n formattingRules,\n framework,\n itOrTest,\n }: TestingConfig = {\n filenamePattern: \"test\",\n formattingRules: true,\n framework: \"vitest\",\n itOrTest: \"test\",\n },\n): EslintConfigObject => ({\n files: files ?? [\"**/*.{test,spec}.{ts,tsx,js,jsx}\"],\n languageOptions: {\n globals:\n framework === \"vitest\" ?\n { ...vitest.environments.env.globals }\n : jest.environments.globals.globals,\n },\n name: configNames.testing,\n plugins: {\n jest,\n vitest,\n },\n rules: {\n // jest doesn't have a file name rule, so we'll use this one for both\n \"@typescript-eslint/unbound-method\": \"off\",\n \"vitest/consistent-test-filename\": [\n \"warn\",\n {\n allTestPattern: \".*\\\\.(test|spec)\\\\.[tj]sx?$\",\n pattern: `.*\\\\.${filenamePattern}\\\\.[tj]sx?$`,\n },\n ],\n ...(framework === \"vitest\" ? vitestRules(itOrTest) : jestRules(itOrTest)),\n ...(formattingRules ?\n {\n \"jest/padding-around-after-all-blocks\": \"warn\",\n \"jest/padding-around-after-each-blocks\": \"warn\",\n \"jest/padding-around-before-all-blocks\": \"warn\",\n \"jest/padding-around-before-each-blocks\": \"warn\",\n \"jest/padding-around-describe-blocks\": \"warn\",\n \"jest/padding-around-expect-groups\": \"warn\",\n \"jest/padding-around-test-blocks\": \"warn\",\n }\n : {}),\n },\n ...(framework !== \"jest\" && framework !== \"vitest\" ?\n {\n settings: {\n jest: {\n globalPackage: framework === \"node\" ? \"node:test\" : \"bun:test\",\n },\n },\n }\n : {}),\n});\n","/**\n * Debug names for ESLint configuration objects.\n * These names help identify different configuration sections in ESLint's debug output\n * and error messages, making it easier to track which rules come from which config.\n */\nexport const configNames = {\n base: \"base\",\n disableTypeChecked: \"typescript-eslint/disable-type-checked\",\n ignores: \"ignores\",\n jsdoc: \"jsdoc\",\n markdown: \"markdown\",\n nextjs: \"nextjs\",\n perfectionist: \"perfectionist\",\n preferArrowFunction: \"prefer-arrow-function\",\n react: \"react\",\n reactCompiler: \"react-compiler\",\n reactRefresh: \"react-refresh\",\n storybook: \"storybook:stories\",\n storybookConfig: \"storybook:config\",\n testing: \"testing\",\n turbo: \"turbo\",\n typescript: \"tseslint\",\n typescriptTesting: \"tseslint-testing\",\n unicorn: \"unicorn\",\n} as const;\n\nexport type ConfigName = (typeof configNames)[keyof typeof configNames];\n","import type { EslintRuleConfig } from \"../types.js\";\n\ntype JestRules = Record<`jest/${string}`, EslintRuleConfig>;\n\n/**\n * Creates an object containing the ESLint rules for jest.\n *\n * @param itOrTest - \"it\" or \"test\"\n * @returns An object containing the ESLint rules for jest.\n */\nexport const jestRules = (itOrTest: \"it\" | \"test\" = \"test\"): JestRules => ({\n \"jest/consistent-test-it\": [\n \"warn\",\n { fn: itOrTest, withinDescribe: itOrTest },\n ],\n \"jest/expect-expect\": \"warn\",\n \"jest/no-commented-out-tests\": \"warn\",\n \"jest/no-conditional-expect\": \"warn\",\n \"jest/no-conditional-in-test\": \"warn\",\n \"jest/no-disabled-tests\": \"warn\",\n \"jest/no-duplicate-hooks\": \"warn\",\n \"jest/no-focused-tests\": \"warn\",\n \"jest/no-identical-title\": \"warn\",\n \"jest/no-interpolation-in-snapshots\": \"warn\",\n \"jest/no-large-snapshots\": [\"warn\", { inlineMaxSize: 50, maxSize: 100 }],\n \"jest/no-mocks-import\": \"warn\", // Discourage manually importing from __mocks__\n \"jest/no-standalone-expect\": \"warn\",\n \"jest/no-test-prefixes\": \"warn\", // Prefer .only and .skip over f and x\n \"jest/no-test-return-statement\": \"warn\",\n \"jest/prefer-comparison-matcher\": \"warn\",\n \"jest/prefer-equality-matcher\": \"warn\",\n \"jest/prefer-expect-resolves\": \"warn\",\n \"jest/prefer-hooks-in-order\": \"warn\",\n \"jest/prefer-hooks-on-top\": \"warn\",\n \"jest/prefer-lowercase-title\": [\"warn\", { ignoreTopLevelDescribe: true }],\n \"jest/prefer-snapshot-hint\": \"warn\",\n \"jest/prefer-spy-on\": \"warn\",\n \"jest/prefer-strict-equal\": \"warn\",\n \"jest/prefer-to-be\": \"warn\",\n \"jest/prefer-to-contain\": \"warn\",\n \"jest/prefer-to-have-length\": \"warn\",\n \"jest/require-top-level-describe\": \"warn\",\n \"jest/valid-describe-callback\": \"warn\",\n \"jest/valid-expect\": \"warn\",\n \"jest/valid-expect-in-promise\": \"warn\",\n \"jest/valid-title\": \"warn\",\n});\n","import type { EslintRuleConfig } from \"../types.js\";\n\ntype VitestRules = Record<`vitest/${string}`, EslintRuleConfig>;\n\n/**\n * Creates an object containing the ESLint rules for vitest.\n *\n * @param itOrTest - \"it\" or \"test\"\n * @returns An object containing the ESLint rules for vitest.\n */\nexport const vitestRules = (itOrTest: \"it\" | \"test\" = \"test\"): VitestRules => ({\n \"vitest/consistent-test-it\": [\n \"warn\",\n { fn: itOrTest, withinDescribe: itOrTest },\n ],\n \"vitest/expect-expect\": \"warn\",\n \"vitest/no-commented-out-tests\": \"warn\",\n \"vitest/no-conditional-in-test\": \"warn\",\n \"vitest/no-disabled-tests\": \"warn\",\n \"vitest/no-duplicate-hooks\": \"warn\",\n \"vitest/no-focused-tests\": \"warn\",\n \"vitest/no-identical-title\": \"warn\",\n \"vitest/no-import-node-test\": \"warn\",\n \"vitest/no-interpolation-in-snapshots\": \"warn\", // Avoid dynamic snapshots\n \"vitest/no-large-snapshots\": [\"warn\", { inlineMaxSize: 50, maxSize: 100 }], // Keep snapshots manageable\n \"vitest/no-standalone-expect\": \"warn\",\n \"vitest/no-test-return-statement\": \"warn\", // Tests shouldn't return values\n \"vitest/prefer-comparison-matcher\": \"warn\", // Use comparison matchers\n \"vitest/prefer-equality-matcher\": \"warn\", // Use equality matchers\n \"vitest/prefer-hooks-in-order\": \"warn\", // Keep hooks in a predictable order\n \"vitest/prefer-hooks-on-top\": \"warn\", // Keep hooks organized\n \"vitest/prefer-lowercase-title\": [\"warn\", { ignoreTopLevelDescribe: true }], // Consistent casing\n \"vitest/prefer-strict-equal\": \"warn\", // Prefer .toStrictEqual() over .toEqual()\n \"vitest/prefer-to-be\": \"warn\", // Use .toBe() for primitives\n \"vitest/prefer-to-contain\": \"warn\", // Use .toContain() for array/string includes\n \"vitest/prefer-to-have-length\": \"warn\", // Use .toHaveLength() for checking length\n \"vitest/require-local-test-context-for-concurrent-snapshots\": \"warn\",\n \"vitest/require-top-level-describe\": \"warn\", // Group tests in describe blocks\n \"vitest/valid-describe-callback\": \"warn\",\n \"vitest/valid-expect\": \"warn\",\n \"vitest/valid-title\": \"warn\",\n});\n"],"mappings":"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","names":[]}
@@ -1,14 +0,0 @@
1
- import { EslintRuleConfig } from '../types.js';
2
- import 'eslint';
3
- import '../constants.js';
4
-
5
- type JestRules = Record<`jest/${string}`, EslintRuleConfig>;
6
- /**
7
- * Creates an object containing the ESLint rules for jest.
8
- *
9
- * @param itOrTest - "it" or "test"
10
- * @returns An object containing the ESLint rules for jest.
11
- */
12
- declare const jestRules: (itOrTest?: "it" | "test") => JestRules;
13
-
14
- export { jestRules };
@@ -1,44 +0,0 @@
1
- // src/eslint/testing/jest-rules.ts
2
- var jestRules = (itOrTest = "test") => ({
3
- "jest/consistent-test-it": [
4
- "warn",
5
- { fn: itOrTest, withinDescribe: itOrTest }
6
- ],
7
- "jest/expect-expect": "warn",
8
- "jest/no-commented-out-tests": "warn",
9
- "jest/no-conditional-expect": "warn",
10
- "jest/no-conditional-in-test": "warn",
11
- "jest/no-disabled-tests": "warn",
12
- "jest/no-duplicate-hooks": "warn",
13
- "jest/no-focused-tests": "warn",
14
- "jest/no-identical-title": "warn",
15
- "jest/no-interpolation-in-snapshots": "warn",
16
- "jest/no-large-snapshots": ["warn", { inlineMaxSize: 50, maxSize: 100 }],
17
- "jest/no-mocks-import": "warn",
18
- // Discourage manually importing from __mocks__
19
- "jest/no-standalone-expect": "warn",
20
- "jest/no-test-prefixes": "warn",
21
- // Prefer .only and .skip over f and x
22
- "jest/no-test-return-statement": "warn",
23
- "jest/prefer-comparison-matcher": "warn",
24
- "jest/prefer-equality-matcher": "warn",
25
- "jest/prefer-expect-resolves": "warn",
26
- "jest/prefer-hooks-in-order": "warn",
27
- "jest/prefer-hooks-on-top": "warn",
28
- "jest/prefer-lowercase-title": ["warn", { ignoreTopLevelDescribe: true }],
29
- "jest/prefer-snapshot-hint": "warn",
30
- "jest/prefer-spy-on": "warn",
31
- "jest/prefer-strict-equal": "warn",
32
- "jest/prefer-to-be": "warn",
33
- "jest/prefer-to-contain": "warn",
34
- "jest/prefer-to-have-length": "warn",
35
- "jest/require-top-level-describe": "warn",
36
- "jest/valid-describe-callback": "warn",
37
- "jest/valid-expect": "warn",
38
- "jest/valid-expect-in-promise": "warn",
39
- "jest/valid-title": "warn"
40
- });
41
- export {
42
- jestRules
43
- };
44
- //# sourceMappingURL=jest-rules.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/eslint/testing/jest-rules.ts"],"sourcesContent":["import type { EslintRuleConfig } from \"../types.js\";\n\ntype JestRules = Record<`jest/${string}`, EslintRuleConfig>;\n\n/**\n * Creates an object containing the ESLint rules for jest.\n *\n * @param itOrTest - \"it\" or \"test\"\n * @returns An object containing the ESLint rules for jest.\n */\nexport const jestRules = (itOrTest: \"it\" | \"test\" = \"test\"): JestRules => ({\n \"jest/consistent-test-it\": [\n \"warn\",\n { fn: itOrTest, withinDescribe: itOrTest },\n ],\n \"jest/expect-expect\": \"warn\",\n \"jest/no-commented-out-tests\": \"warn\",\n \"jest/no-conditional-expect\": \"warn\",\n \"jest/no-conditional-in-test\": \"warn\",\n \"jest/no-disabled-tests\": \"warn\",\n \"jest/no-duplicate-hooks\": \"warn\",\n \"jest/no-focused-tests\": \"warn\",\n \"jest/no-identical-title\": \"warn\",\n \"jest/no-interpolation-in-snapshots\": \"warn\",\n \"jest/no-large-snapshots\": [\"warn\", { inlineMaxSize: 50, maxSize: 100 }],\n \"jest/no-mocks-import\": \"warn\", // Discourage manually importing from __mocks__\n \"jest/no-standalone-expect\": \"warn\",\n \"jest/no-test-prefixes\": \"warn\", // Prefer .only and .skip over f and x\n \"jest/no-test-return-statement\": \"warn\",\n \"jest/prefer-comparison-matcher\": \"warn\",\n \"jest/prefer-equality-matcher\": \"warn\",\n \"jest/prefer-expect-resolves\": \"warn\",\n \"jest/prefer-hooks-in-order\": \"warn\",\n \"jest/prefer-hooks-on-top\": \"warn\",\n \"jest/prefer-lowercase-title\": [\"warn\", { ignoreTopLevelDescribe: true }],\n \"jest/prefer-snapshot-hint\": \"warn\",\n \"jest/prefer-spy-on\": \"warn\",\n \"jest/prefer-strict-equal\": \"warn\",\n \"jest/prefer-to-be\": \"warn\",\n \"jest/prefer-to-contain\": \"warn\",\n \"jest/prefer-to-have-length\": \"warn\",\n \"jest/require-top-level-describe\": \"warn\",\n \"jest/valid-describe-callback\": \"warn\",\n \"jest/valid-expect\": \"warn\",\n \"jest/valid-expect-in-promise\": \"warn\",\n \"jest/valid-title\": \"warn\",\n});\n"],"mappings":";AAUO,IAAM,YAAY,CAAC,WAA0B,YAAuB;AAAA,EACzE,2BAA2B;AAAA,IACzB;AAAA,IACA,EAAE,IAAI,UAAU,gBAAgB,SAAS;AAAA,EAC3C;AAAA,EACA,sBAAsB;AAAA,EACtB,+BAA+B;AAAA,EAC/B,8BAA8B;AAAA,EAC9B,+BAA+B;AAAA,EAC/B,0BAA0B;AAAA,EAC1B,2BAA2B;AAAA,EAC3B,yBAAyB;AAAA,EACzB,2BAA2B;AAAA,EAC3B,sCAAsC;AAAA,EACtC,2BAA2B,CAAC,QAAQ,EAAE,eAAe,IAAI,SAAS,IAAI,CAAC;AAAA,EACvE,wBAAwB;AAAA;AAAA,EACxB,6BAA6B;AAAA,EAC7B,yBAAyB;AAAA;AAAA,EACzB,iCAAiC;AAAA,EACjC,kCAAkC;AAAA,EAClC,gCAAgC;AAAA,EAChC,+BAA+B;AAAA,EAC/B,8BAA8B;AAAA,EAC9B,4BAA4B;AAAA,EAC5B,+BAA+B,CAAC,QAAQ,EAAE,wBAAwB,KAAK,CAAC;AAAA,EACxE,6BAA6B;AAAA,EAC7B,sBAAsB;AAAA,EACtB,4BAA4B;AAAA,EAC5B,qBAAqB;AAAA,EACrB,0BAA0B;AAAA,EAC1B,8BAA8B;AAAA,EAC9B,mCAAmC;AAAA,EACnC,gCAAgC;AAAA,EAChC,qBAAqB;AAAA,EACrB,gCAAgC;AAAA,EAChC,oBAAoB;AACtB;","names":[]}
@@ -1,14 +0,0 @@
1
- import { EslintRuleConfig } from '../types.js';
2
- import 'eslint';
3
- import '../constants.js';
4
-
5
- type VitestRules = Record<`vitest/${string}`, EslintRuleConfig>;
6
- /**
7
- * Creates an object containing the ESLint rules for vitest.
8
- *
9
- * @param itOrTest - "it" or "test"
10
- * @returns An object containing the ESLint rules for vitest.
11
- */
12
- declare const vitestRules: (itOrTest?: "it" | "test") => VitestRules;
13
-
14
- export { vitestRules };
@@ -1,50 +0,0 @@
1
- // src/eslint/testing/vitest-rules.ts
2
- var vitestRules = (itOrTest = "test") => ({
3
- "vitest/consistent-test-it": [
4
- "warn",
5
- { fn: itOrTest, withinDescribe: itOrTest }
6
- ],
7
- "vitest/expect-expect": "warn",
8
- "vitest/no-commented-out-tests": "warn",
9
- "vitest/no-conditional-in-test": "warn",
10
- "vitest/no-disabled-tests": "warn",
11
- "vitest/no-duplicate-hooks": "warn",
12
- "vitest/no-focused-tests": "warn",
13
- "vitest/no-identical-title": "warn",
14
- "vitest/no-import-node-test": "warn",
15
- "vitest/no-interpolation-in-snapshots": "warn",
16
- // Avoid dynamic snapshots
17
- "vitest/no-large-snapshots": ["warn", { inlineMaxSize: 50, maxSize: 100 }],
18
- // Keep snapshots manageable
19
- "vitest/no-standalone-expect": "warn",
20
- "vitest/no-test-return-statement": "warn",
21
- // Tests shouldn't return values
22
- "vitest/prefer-comparison-matcher": "warn",
23
- // Use comparison matchers
24
- "vitest/prefer-equality-matcher": "warn",
25
- // Use equality matchers
26
- "vitest/prefer-hooks-in-order": "warn",
27
- // Keep hooks in a predictable order
28
- "vitest/prefer-hooks-on-top": "warn",
29
- // Keep hooks organized
30
- "vitest/prefer-lowercase-title": ["warn", { ignoreTopLevelDescribe: true }],
31
- // Consistent casing
32
- "vitest/prefer-strict-equal": "warn",
33
- // Prefer .toStrictEqual() over .toEqual()
34
- "vitest/prefer-to-be": "warn",
35
- // Use .toBe() for primitives
36
- "vitest/prefer-to-contain": "warn",
37
- // Use .toContain() for array/string includes
38
- "vitest/prefer-to-have-length": "warn",
39
- // Use .toHaveLength() for checking length
40
- "vitest/require-local-test-context-for-concurrent-snapshots": "warn",
41
- "vitest/require-top-level-describe": "warn",
42
- // Group tests in describe blocks
43
- "vitest/valid-describe-callback": "warn",
44
- "vitest/valid-expect": "warn",
45
- "vitest/valid-title": "warn"
46
- });
47
- export {
48
- vitestRules
49
- };
50
- //# sourceMappingURL=vitest-rules.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/eslint/testing/vitest-rules.ts"],"sourcesContent":["import type { EslintRuleConfig } from \"../types.js\";\n\ntype VitestRules = Record<`vitest/${string}`, EslintRuleConfig>;\n\n/**\n * Creates an object containing the ESLint rules for vitest.\n *\n * @param itOrTest - \"it\" or \"test\"\n * @returns An object containing the ESLint rules for vitest.\n */\nexport const vitestRules = (itOrTest: \"it\" | \"test\" = \"test\"): VitestRules => ({\n \"vitest/consistent-test-it\": [\n \"warn\",\n { fn: itOrTest, withinDescribe: itOrTest },\n ],\n \"vitest/expect-expect\": \"warn\",\n \"vitest/no-commented-out-tests\": \"warn\",\n \"vitest/no-conditional-in-test\": \"warn\",\n \"vitest/no-disabled-tests\": \"warn\",\n \"vitest/no-duplicate-hooks\": \"warn\",\n \"vitest/no-focused-tests\": \"warn\",\n \"vitest/no-identical-title\": \"warn\",\n \"vitest/no-import-node-test\": \"warn\",\n \"vitest/no-interpolation-in-snapshots\": \"warn\", // Avoid dynamic snapshots\n \"vitest/no-large-snapshots\": [\"warn\", { inlineMaxSize: 50, maxSize: 100 }], // Keep snapshots manageable\n \"vitest/no-standalone-expect\": \"warn\",\n \"vitest/no-test-return-statement\": \"warn\", // Tests shouldn't return values\n \"vitest/prefer-comparison-matcher\": \"warn\", // Use comparison matchers\n \"vitest/prefer-equality-matcher\": \"warn\", // Use equality matchers\n \"vitest/prefer-hooks-in-order\": \"warn\", // Keep hooks in a predictable order\n \"vitest/prefer-hooks-on-top\": \"warn\", // Keep hooks organized\n \"vitest/prefer-lowercase-title\": [\"warn\", { ignoreTopLevelDescribe: true }], // Consistent casing\n \"vitest/prefer-strict-equal\": \"warn\", // Prefer .toStrictEqual() over .toEqual()\n \"vitest/prefer-to-be\": \"warn\", // Use .toBe() for primitives\n \"vitest/prefer-to-contain\": \"warn\", // Use .toContain() for array/string includes\n \"vitest/prefer-to-have-length\": \"warn\", // Use .toHaveLength() for checking length\n \"vitest/require-local-test-context-for-concurrent-snapshots\": \"warn\",\n \"vitest/require-top-level-describe\": \"warn\", // Group tests in describe blocks\n \"vitest/valid-describe-callback\": \"warn\",\n \"vitest/valid-expect\": \"warn\",\n \"vitest/valid-title\": \"warn\",\n});\n"],"mappings":";AAUO,IAAM,cAAc,CAAC,WAA0B,YAAyB;AAAA,EAC7E,6BAA6B;AAAA,IAC3B;AAAA,IACA,EAAE,IAAI,UAAU,gBAAgB,SAAS;AAAA,EAC3C;AAAA,EACA,wBAAwB;AAAA,EACxB,iCAAiC;AAAA,EACjC,iCAAiC;AAAA,EACjC,4BAA4B;AAAA,EAC5B,6BAA6B;AAAA,EAC7B,2BAA2B;AAAA,EAC3B,6BAA6B;AAAA,EAC7B,8BAA8B;AAAA,EAC9B,wCAAwC;AAAA;AAAA,EACxC,6BAA6B,CAAC,QAAQ,EAAE,eAAe,IAAI,SAAS,IAAI,CAAC;AAAA;AAAA,EACzE,+BAA+B;AAAA,EAC/B,mCAAmC;AAAA;AAAA,EACnC,oCAAoC;AAAA;AAAA,EACpC,kCAAkC;AAAA;AAAA,EAClC,gCAAgC;AAAA;AAAA,EAChC,8BAA8B;AAAA;AAAA,EAC9B,iCAAiC,CAAC,QAAQ,EAAE,wBAAwB,KAAK,CAAC;AAAA;AAAA,EAC1E,8BAA8B;AAAA;AAAA,EAC9B,uBAAuB;AAAA;AAAA,EACvB,4BAA4B;AAAA;AAAA,EAC5B,gCAAgC;AAAA;AAAA,EAChC,8DAA8D;AAAA,EAC9D,qCAAqC;AAAA;AAAA,EACrC,kCAAkC;AAAA,EAClC,uBAAuB;AAAA,EACvB,sBAAsB;AACxB;","names":[]}
@@ -1,12 +0,0 @@
1
- import { EslintConfigObject } from '../types.js';
2
- import 'eslint';
3
- import '../constants.js';
4
-
5
- /**
6
- * Creates an ESLint configuration for Turbo.
7
- *
8
- * @returns ESLint configuration object for Turbo
9
- */
10
- declare const turboConfig: () => EslintConfigObject;
11
-
12
- export { turboConfig };
@@ -1,39 +0,0 @@
1
- // src/eslint/turbo/config.ts
2
- import turbo from "eslint-plugin-turbo";
3
-
4
- // src/eslint/constants.ts
5
- var configNames = {
6
- base: "base",
7
- disableTypeChecked: "typescript-eslint/disable-type-checked",
8
- ignores: "ignores",
9
- jsdoc: "jsdoc",
10
- markdown: "markdown",
11
- nextjs: "nextjs",
12
- perfectionist: "perfectionist",
13
- preferArrowFunction: "prefer-arrow-function",
14
- react: "react",
15
- reactCompiler: "react-compiler",
16
- reactRefresh: "react-refresh",
17
- storybook: "storybook:stories",
18
- storybookConfig: "storybook:config",
19
- testing: "testing",
20
- turbo: "turbo",
21
- typescript: "tseslint",
22
- typescriptTesting: "tseslint-testing",
23
- unicorn: "unicorn"
24
- };
25
-
26
- // src/eslint/turbo/config.ts
27
- var turboConfig = () => ({
28
- name: configNames.turbo,
29
- plugins: {
30
- turbo
31
- },
32
- rules: {
33
- "turbo/no-undeclared-env-vars": "warn"
34
- }
35
- });
36
- export {
37
- turboConfig
38
- };
39
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/eslint/turbo/config.ts","../../../src/eslint/constants.ts"],"sourcesContent":["import turbo from \"eslint-plugin-turbo\";\n\nimport type { EslintConfigObject } from \"../types.js\";\nimport type { TurboRules } from \"./types.js\";\n\nimport { configNames } from \"../constants.js\";\n\n/**\n * Creates an ESLint configuration for Turbo.\n *\n * @returns ESLint configuration object for Turbo\n */\nexport const turboConfig = (): EslintConfigObject => ({\n name: configNames.turbo,\n plugins: {\n turbo,\n },\n rules: {\n \"turbo/no-undeclared-env-vars\": \"warn\",\n } satisfies TurboRules,\n});\n","/**\n * Debug names for ESLint configuration objects.\n * These names help identify different configuration sections in ESLint's debug output\n * and error messages, making it easier to track which rules come from which config.\n */\nexport const configNames = {\n base: \"base\",\n disableTypeChecked: \"typescript-eslint/disable-type-checked\",\n ignores: \"ignores\",\n jsdoc: \"jsdoc\",\n markdown: \"markdown\",\n nextjs: \"nextjs\",\n perfectionist: \"perfectionist\",\n preferArrowFunction: \"prefer-arrow-function\",\n react: \"react\",\n reactCompiler: \"react-compiler\",\n reactRefresh: \"react-refresh\",\n storybook: \"storybook:stories\",\n storybookConfig: \"storybook:config\",\n testing: \"testing\",\n turbo: \"turbo\",\n typescript: \"tseslint\",\n typescriptTesting: \"tseslint-testing\",\n unicorn: \"unicorn\",\n} as const;\n\nexport type ConfigName = (typeof configNames)[keyof typeof configNames];\n"],"mappings":";AAAA,OAAO,WAAW;;;ACKX,IAAM,cAAc;AAAA,EACzB,MAAM;AAAA,EACN,oBAAoB;AAAA,EACpB,SAAS;AAAA,EACT,OAAO;AAAA,EACP,UAAU;AAAA,EACV,QAAQ;AAAA,EACR,eAAe;AAAA,EACf,qBAAqB;AAAA,EACrB,OAAO;AAAA,EACP,eAAe;AAAA,EACf,cAAc;AAAA,EACd,WAAW;AAAA,EACX,iBAAiB;AAAA,EACjB,SAAS;AAAA,EACT,OAAO;AAAA,EACP,YAAY;AAAA,EACZ,mBAAmB;AAAA,EACnB,SAAS;AACX;;;ADZO,IAAM,cAAc,OAA2B;AAAA,EACpD,MAAM,YAAY;AAAA,EAClB,SAAS;AAAA,IACP;AAAA,EACF;AAAA,EACA,OAAO;AAAA,IACL,gCAAgC;AAAA,EAClC;AACF;","names":[]}
@@ -1,11 +0,0 @@
1
- import { EslintRuleConfig } from '../types.js';
2
- import 'eslint';
3
- import '../constants.js';
4
-
5
- interface TurboRules {
6
- "turbo/no-undeclared-env-vars": EslintRuleConfig<{
7
- allowList?: string[];
8
- }>;
9
- }
10
-
11
- export type { TurboRules };
@@ -1 +0,0 @@
1
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,11 +0,0 @@
1
- import { Linter } from 'eslint';
2
- import { ConfigName } from './constants.js';
3
-
4
- type EslintSeverity = 0 | 1 | 2 | "error" | "off" | "warn";
5
- type EslintRuleConfig<TOptions = Record<string, unknown>, TOptions2 = Record<string, unknown>> = [EslintSeverity, string | TOptions | undefined] | [EslintSeverity, string | undefined, TOptions2 | undefined] | [EslintSeverity, TOptions | undefined, TOptions2 | undefined] | [EslintSeverity] | EslintSeverity;
6
- type FunctionStyle = "arrow" | "declaration" | "expression";
7
- interface EslintConfigObject<Rules extends Linter.RulesRecord = Linter.RulesRecord> extends Linter.Config<Rules> {
8
- name: ConfigName;
9
- }
10
-
11
- export type { EslintConfigObject, EslintRuleConfig, EslintSeverity, FunctionStyle };
@@ -1 +0,0 @@
1
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -1,11 +0,0 @@
1
- import { Config } from 'typescript-eslint';
2
-
3
- /**
4
- * Creates a TypeScript ESLint configuration object.
5
- *
6
- * @param tsconfigPath - Path to the TypeScript configuration file
7
- * @returns TypeScript ESLint configuration object
8
- */
9
- declare const tseslintConfig: (tsconfigPath?: string) => Config;
10
-
11
- export { tseslintConfig };
@@ -1,186 +0,0 @@
1
- // src/eslint/typescript/config.ts
2
- import tseslint from "typescript-eslint";
3
-
4
- // src/eslint/constants.ts
5
- var configNames = {
6
- base: "base",
7
- disableTypeChecked: "typescript-eslint/disable-type-checked",
8
- ignores: "ignores",
9
- jsdoc: "jsdoc",
10
- markdown: "markdown",
11
- nextjs: "nextjs",
12
- perfectionist: "perfectionist",
13
- preferArrowFunction: "prefer-arrow-function",
14
- react: "react",
15
- reactCompiler: "react-compiler",
16
- reactRefresh: "react-refresh",
17
- storybook: "storybook:stories",
18
- storybookConfig: "storybook:config",
19
- testing: "testing",
20
- turbo: "turbo",
21
- typescript: "tseslint",
22
- typescriptTesting: "tseslint-testing",
23
- unicorn: "unicorn"
24
- };
25
-
26
- // src/eslint/typescript/rules.ts
27
- var tseslintRules = {
28
- "@typescript-eslint/adjacent-overload-signatures": "warn",
29
- "@typescript-eslint/array-type": "warn",
30
- "@typescript-eslint/await-thenable": "warn",
31
- "@typescript-eslint/ban-ts-comment": [
32
- "warn",
33
- { minimumDescriptionLength: 10 }
34
- ],
35
- "@typescript-eslint/ban-tslint-comment": "warn",
36
- "@typescript-eslint/class-literal-property-style": "warn",
37
- "@typescript-eslint/consistent-generic-constructors": "warn",
38
- "@typescript-eslint/consistent-indexed-object-style": "warn",
39
- "@typescript-eslint/consistent-type-assertions": "warn",
40
- "@typescript-eslint/consistent-type-definitions": "warn",
41
- "@typescript-eslint/consistent-type-exports": [
42
- "warn",
43
- { fixMixedExportsWithInlineTypeSpecifier: true }
44
- ],
45
- "@typescript-eslint/consistent-type-imports": [
46
- "warn",
47
- {
48
- fixStyle: "inline-type-imports",
49
- prefer: "type-imports"
50
- }
51
- ],
52
- "@typescript-eslint/dot-notation": "warn",
53
- "@typescript-eslint/no-array-constructor": "warn",
54
- "@typescript-eslint/no-array-delete": "warn",
55
- "@typescript-eslint/no-base-to-string": "warn",
56
- "@typescript-eslint/no-confusing-non-null-assertion": "warn",
57
- "@typescript-eslint/no-confusing-void-expression": "warn",
58
- "@typescript-eslint/no-deprecated": "warn",
59
- "@typescript-eslint/no-duplicate-enum-values": "warn",
60
- "@typescript-eslint/no-duplicate-type-constituents": "warn",
61
- "@typescript-eslint/no-dynamic-delete": "warn",
62
- "@typescript-eslint/no-empty-function": "warn",
63
- "@typescript-eslint/no-empty-object-type": "warn",
64
- "@typescript-eslint/no-explicit-any": "warn",
65
- "@typescript-eslint/no-extra-non-null-assertion": "warn",
66
- "@typescript-eslint/no-extraneous-class": "warn",
67
- "@typescript-eslint/no-floating-promises": "warn",
68
- "@typescript-eslint/no-for-in-array": "warn",
69
- "@typescript-eslint/no-implied-eval": "warn",
70
- "@typescript-eslint/no-import-type-side-effects": "warn",
71
- "@typescript-eslint/no-inferrable-types": "warn",
72
- "@typescript-eslint/no-invalid-void-type": "warn",
73
- "@typescript-eslint/no-meaningless-void-operator": "warn",
74
- "@typescript-eslint/no-misused-new": "warn",
75
- "@typescript-eslint/no-misused-promises": "warn",
76
- "@typescript-eslint/no-mixed-enums": "warn",
77
- "@typescript-eslint/no-namespace": "warn",
78
- "@typescript-eslint/no-non-null-asserted-nullish-coalescing": "warn",
79
- "@typescript-eslint/no-non-null-asserted-optional-chain": "warn",
80
- "@typescript-eslint/no-non-null-assertion": "warn",
81
- "@typescript-eslint/no-redundant-type-constituents": "warn",
82
- "@typescript-eslint/no-require-imports": "warn",
83
- "@typescript-eslint/no-this-alias": "warn",
84
- "@typescript-eslint/no-unnecessary-boolean-literal-compare": "warn",
85
- "@typescript-eslint/no-unnecessary-condition": "warn",
86
- "@typescript-eslint/no-unnecessary-template-expression": "warn",
87
- "@typescript-eslint/no-unnecessary-type-arguments": "warn",
88
- "@typescript-eslint/no-unnecessary-type-assertion": "warn",
89
- "@typescript-eslint/no-unnecessary-type-constraint": "warn",
90
- "@typescript-eslint/no-unnecessary-type-parameters": "warn",
91
- "@typescript-eslint/no-unsafe-declaration-merging": "warn",
92
- "@typescript-eslint/no-unsafe-enum-comparison": "warn",
93
- "@typescript-eslint/no-unsafe-function-type": "warn",
94
- "@typescript-eslint/no-unsafe-unary-minus": "warn",
95
- "@typescript-eslint/no-unused-expressions": "warn",
96
- "@typescript-eslint/no-unused-vars": [
97
- "warn",
98
- {
99
- args: "after-used",
100
- argsIgnorePattern: "^_",
101
- ignoreRestSiblings: false,
102
- vars: "all",
103
- varsIgnorePattern: "^_"
104
- }
105
- ],
106
- "@typescript-eslint/no-useless-constructor": "warn",
107
- "@typescript-eslint/no-wrapper-object-types": "warn",
108
- // TODO: Investiate non-null vs type-cast rules
109
- "@typescript-eslint/non-nullable-type-assertion-style": "off",
110
- "@typescript-eslint/only-throw-error": "warn",
111
- "@typescript-eslint/prefer-as-const": "warn",
112
- "@typescript-eslint/prefer-find": "warn",
113
- "@typescript-eslint/prefer-for-of": "warn",
114
- "@typescript-eslint/prefer-function-type": "warn",
115
- "@typescript-eslint/prefer-includes": "warn",
116
- "@typescript-eslint/prefer-literal-enum-member": "warn",
117
- "@typescript-eslint/prefer-namespace-keyword": "warn",
118
- "@typescript-eslint/prefer-nullish-coalescing": "warn",
119
- "@typescript-eslint/prefer-optional-chain": "warn",
120
- "@typescript-eslint/prefer-promise-reject-errors": "warn",
121
- "@typescript-eslint/prefer-reduce-type-parameter": "warn",
122
- "@typescript-eslint/prefer-regexp-exec": "warn",
123
- "@typescript-eslint/prefer-return-this-type": "warn",
124
- "@typescript-eslint/prefer-string-starts-ends-with": "warn",
125
- "@typescript-eslint/related-getter-setter-pairs": "warn",
126
- "@typescript-eslint/require-await": "warn",
127
- "@typescript-eslint/restrict-plus-operands": [
128
- "warn",
129
- {
130
- allowAny: false,
131
- allowBoolean: false,
132
- allowNullish: false,
133
- allowNumberAndString: false,
134
- allowRegExp: false
135
- }
136
- ],
137
- "@typescript-eslint/restrict-template-expressions": [
138
- "warn",
139
- {
140
- allow: [{ from: "lib", name: ["Error", "URL", "URLSearchParams"] }],
141
- allowAny: true,
142
- allowBoolean: true,
143
- allowNullish: true,
144
- allowNumber: true,
145
- allowRegExp: true
146
- }
147
- ],
148
- "@typescript-eslint/return-await": [
149
- "warn",
150
- "error-handling-correctness-only"
151
- ],
152
- "@typescript-eslint/triple-slash-reference": "warn",
153
- "@typescript-eslint/unbound-method": "warn",
154
- "@typescript-eslint/unified-signatures": "warn",
155
- "@typescript-eslint/use-unknown-in-catch-callback-variable": "warn"
156
- };
157
-
158
- // src/eslint/typescript/config.ts
159
- var tseslintConfig = (tsconfigPath) => {
160
- const userCwd = process.cwd();
161
- return tseslint.config(
162
- {
163
- files: ["**/*.{js,cjs,mjs,ts,jsx,tsx}"],
164
- languageOptions: {
165
- parser: tseslint.parser,
166
- parserOptions: {
167
- ...tsconfigPath ? { project: tsconfigPath, tsconfigRootDir: userCwd } : { projectService: true, tsconfigRootDir: import.meta.dirname }
168
- }
169
- },
170
- name: configNames.typescript,
171
- plugins: {
172
- "@typescript-eslint": tseslint.plugin
173
- },
174
- rules: tseslintRules
175
- },
176
- {
177
- // disable type-aware linting on JS files
178
- extends: [tseslint.configs.disableTypeChecked],
179
- files: ["**/*.js"]
180
- }
181
- );
182
- };
183
- export {
184
- tseslintConfig
185
- };
186
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../../../src/eslint/typescript/config.ts","../../../src/eslint/constants.ts","../../../src/eslint/typescript/rules.ts"],"sourcesContent":["import tseslint, { type Config } from \"typescript-eslint\";\n\nimport { configNames } from \"../constants.js\";\nimport { tseslintRules } from \"./rules.js\";\n\n/**\n * Creates a TypeScript ESLint configuration object.\n *\n * @param tsconfigPath - Path to the TypeScript configuration file\n * @returns TypeScript ESLint configuration object\n */\nexport const tseslintConfig = (tsconfigPath?: string): Config => {\n const userCwd = process.cwd();\n\n return tseslint.config(\n {\n files: [\"**/*.{js,cjs,mjs,ts,jsx,tsx}\"],\n languageOptions: {\n parser: tseslint.parser,\n parserOptions: {\n ...(tsconfigPath ?\n { project: tsconfigPath, tsconfigRootDir: userCwd }\n : { projectService: true, tsconfigRootDir: import.meta.dirname }),\n },\n },\n name: configNames.typescript,\n plugins: {\n \"@typescript-eslint\": tseslint.plugin,\n },\n rules: tseslintRules,\n },\n {\n // disable type-aware linting on JS files\n extends: [tseslint.configs.disableTypeChecked],\n files: [\"**/*.js\"],\n },\n );\n};\n","/**\n * Debug names for ESLint configuration objects.\n * These names help identify different configuration sections in ESLint's debug output\n * and error messages, making it easier to track which rules come from which config.\n */\nexport const configNames = {\n base: \"base\",\n disableTypeChecked: \"typescript-eslint/disable-type-checked\",\n ignores: \"ignores\",\n jsdoc: \"jsdoc\",\n markdown: \"markdown\",\n nextjs: \"nextjs\",\n perfectionist: \"perfectionist\",\n preferArrowFunction: \"prefer-arrow-function\",\n react: \"react\",\n reactCompiler: \"react-compiler\",\n reactRefresh: \"react-refresh\",\n storybook: \"storybook:stories\",\n storybookConfig: \"storybook:config\",\n testing: \"testing\",\n turbo: \"turbo\",\n typescript: \"tseslint\",\n typescriptTesting: \"tseslint-testing\",\n unicorn: \"unicorn\",\n} as const;\n\nexport type ConfigName = (typeof configNames)[keyof typeof configNames];\n","import type { TypescriptRules } from \"./types.js\";\n\nexport const tseslintRules: TypescriptRules = {\n \"@typescript-eslint/adjacent-overload-signatures\": \"warn\",\n \"@typescript-eslint/array-type\": \"warn\",\n \"@typescript-eslint/await-thenable\": \"warn\",\n \"@typescript-eslint/ban-ts-comment\": [\n \"warn\",\n { minimumDescriptionLength: 10 },\n ],\n \"@typescript-eslint/ban-tslint-comment\": \"warn\",\n \"@typescript-eslint/class-literal-property-style\": \"warn\",\n \"@typescript-eslint/consistent-generic-constructors\": \"warn\",\n \"@typescript-eslint/consistent-indexed-object-style\": \"warn\",\n \"@typescript-eslint/consistent-type-assertions\": \"warn\",\n \"@typescript-eslint/consistent-type-definitions\": \"warn\",\n \"@typescript-eslint/consistent-type-exports\": [\n \"warn\",\n { fixMixedExportsWithInlineTypeSpecifier: true },\n ],\n \"@typescript-eslint/consistent-type-imports\": [\n \"warn\",\n {\n fixStyle: \"inline-type-imports\",\n prefer: \"type-imports\",\n },\n ],\n \"@typescript-eslint/dot-notation\": \"warn\",\n \"@typescript-eslint/no-array-constructor\": \"warn\",\n \"@typescript-eslint/no-array-delete\": \"warn\",\n \"@typescript-eslint/no-base-to-string\": \"warn\",\n \"@typescript-eslint/no-confusing-non-null-assertion\": \"warn\",\n \"@typescript-eslint/no-confusing-void-expression\": \"warn\",\n \"@typescript-eslint/no-deprecated\": \"warn\",\n \"@typescript-eslint/no-duplicate-enum-values\": \"warn\",\n \"@typescript-eslint/no-duplicate-type-constituents\": \"warn\",\n \"@typescript-eslint/no-dynamic-delete\": \"warn\",\n \"@typescript-eslint/no-empty-function\": \"warn\",\n \"@typescript-eslint/no-empty-object-type\": \"warn\",\n \"@typescript-eslint/no-explicit-any\": \"warn\",\n \"@typescript-eslint/no-extra-non-null-assertion\": \"warn\",\n \"@typescript-eslint/no-extraneous-class\": \"warn\",\n \"@typescript-eslint/no-floating-promises\": \"warn\",\n \"@typescript-eslint/no-for-in-array\": \"warn\",\n \"@typescript-eslint/no-implied-eval\": \"warn\",\n \"@typescript-eslint/no-import-type-side-effects\": \"warn\",\n \"@typescript-eslint/no-inferrable-types\": \"warn\",\n \"@typescript-eslint/no-invalid-void-type\": \"warn\",\n \"@typescript-eslint/no-meaningless-void-operator\": \"warn\",\n \"@typescript-eslint/no-misused-new\": \"warn\",\n \"@typescript-eslint/no-misused-promises\": \"warn\",\n \"@typescript-eslint/no-mixed-enums\": \"warn\",\n \"@typescript-eslint/no-namespace\": \"warn\",\n \"@typescript-eslint/no-non-null-asserted-nullish-coalescing\": \"warn\",\n \"@typescript-eslint/no-non-null-asserted-optional-chain\": \"warn\",\n \"@typescript-eslint/no-non-null-assertion\": \"warn\",\n \"@typescript-eslint/no-redundant-type-constituents\": \"warn\",\n \"@typescript-eslint/no-require-imports\": \"warn\",\n \"@typescript-eslint/no-this-alias\": \"warn\",\n \"@typescript-eslint/no-unnecessary-boolean-literal-compare\": \"warn\",\n \"@typescript-eslint/no-unnecessary-condition\": \"warn\",\n \"@typescript-eslint/no-unnecessary-template-expression\": \"warn\",\n \"@typescript-eslint/no-unnecessary-type-arguments\": \"warn\",\n \"@typescript-eslint/no-unnecessary-type-assertion\": \"warn\",\n \"@typescript-eslint/no-unnecessary-type-constraint\": \"warn\",\n \"@typescript-eslint/no-unnecessary-type-parameters\": \"warn\",\n \"@typescript-eslint/no-unsafe-declaration-merging\": \"warn\",\n \"@typescript-eslint/no-unsafe-enum-comparison\": \"warn\",\n \"@typescript-eslint/no-unsafe-function-type\": \"warn\",\n \"@typescript-eslint/no-unsafe-unary-minus\": \"warn\",\n \"@typescript-eslint/no-unused-expressions\": \"warn\",\n \"@typescript-eslint/no-unused-vars\": [\n \"warn\",\n {\n args: \"after-used\",\n argsIgnorePattern: \"^_\",\n ignoreRestSiblings: false,\n vars: \"all\",\n varsIgnorePattern: \"^_\",\n },\n ],\n \"@typescript-eslint/no-useless-constructor\": \"warn\",\n \"@typescript-eslint/no-wrapper-object-types\": \"warn\",\n // TODO: Investiate non-null vs type-cast rules\n \"@typescript-eslint/non-nullable-type-assertion-style\": \"off\",\n \"@typescript-eslint/only-throw-error\": \"warn\",\n \"@typescript-eslint/prefer-as-const\": \"warn\",\n \"@typescript-eslint/prefer-find\": \"warn\",\n \"@typescript-eslint/prefer-for-of\": \"warn\",\n \"@typescript-eslint/prefer-function-type\": \"warn\",\n \"@typescript-eslint/prefer-includes\": \"warn\",\n \"@typescript-eslint/prefer-literal-enum-member\": \"warn\",\n \"@typescript-eslint/prefer-namespace-keyword\": \"warn\",\n \"@typescript-eslint/prefer-nullish-coalescing\": \"warn\",\n \"@typescript-eslint/prefer-optional-chain\": \"warn\",\n \"@typescript-eslint/prefer-promise-reject-errors\": \"warn\",\n \"@typescript-eslint/prefer-reduce-type-parameter\": \"warn\",\n \"@typescript-eslint/prefer-regexp-exec\": \"warn\",\n \"@typescript-eslint/prefer-return-this-type\": \"warn\",\n \"@typescript-eslint/prefer-string-starts-ends-with\": \"warn\",\n \"@typescript-eslint/related-getter-setter-pairs\": \"warn\",\n \"@typescript-eslint/require-await\": \"warn\",\n \"@typescript-eslint/restrict-plus-operands\": [\n \"warn\",\n {\n allowAny: false,\n allowBoolean: false,\n allowNullish: false,\n allowNumberAndString: false,\n allowRegExp: false,\n },\n ],\n \"@typescript-eslint/restrict-template-expressions\": [\n \"warn\",\n {\n allow: [{ from: \"lib\", name: [\"Error\", \"URL\", \"URLSearchParams\"] }],\n allowAny: true,\n allowBoolean: true,\n allowNullish: true,\n allowNumber: true,\n allowRegExp: true,\n },\n ],\n \"@typescript-eslint/return-await\": [\n \"warn\",\n \"error-handling-correctness-only\",\n ],\n \"@typescript-eslint/triple-slash-reference\": \"warn\",\n \"@typescript-eslint/unbound-method\": \"warn\",\n \"@typescript-eslint/unified-signatures\": \"warn\",\n \"@typescript-eslint/use-unknown-in-catch-callback-variable\": \"warn\",\n};\n"],"mappings":"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","names":[]}
@@ -1,8 +0,0 @@
1
- import { TypescriptRules } from './types.js';
2
- import '../types.js';
3
- import 'eslint';
4
- import '../constants.js';
5
-
6
- declare const tseslintRules: TypescriptRules;
7
-
8
- export { tseslintRules };