@santi020k/eslint-config-integrations 2.0.0-beta.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 (192) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +11 -0
  3. package/dist/compose.d.ts +21 -0
  4. package/dist/compose.js +137 -0
  5. package/dist/compose.js.map +1 -0
  6. package/dist/extensions/a11y.d.ts +9 -0
  7. package/dist/extensions/a11y.js +25 -0
  8. package/dist/extensions/a11y.js.map +1 -0
  9. package/dist/extensions/best-practices.d.ts +16 -0
  10. package/dist/extensions/best-practices.js +27 -0
  11. package/dist/extensions/best-practices.js.map +1 -0
  12. package/dist/extensions/biome.d.ts +9 -0
  13. package/dist/extensions/biome.js +18 -0
  14. package/dist/extensions/biome.js.map +1 -0
  15. package/dist/extensions/boundaries.d.ts +12 -0
  16. package/dist/extensions/boundaries.js +40 -0
  17. package/dist/extensions/boundaries.js.map +1 -0
  18. package/dist/extensions/compat.d.ts +9 -0
  19. package/dist/extensions/compat.js +16 -0
  20. package/dist/extensions/compat.js.map +1 -0
  21. package/dist/extensions/de-morgan.d.ts +9 -0
  22. package/dist/extensions/de-morgan.js +16 -0
  23. package/dist/extensions/de-morgan.js.map +1 -0
  24. package/dist/extensions/depend.d.ts +10 -0
  25. package/dist/extensions/depend.js +16 -0
  26. package/dist/extensions/depend.js.map +1 -0
  27. package/dist/extensions/index.d.ts +16 -0
  28. package/dist/extensions/index.js +33 -0
  29. package/dist/extensions/index.js.map +1 -0
  30. package/dist/extensions/no-only-tests.d.ts +9 -0
  31. package/dist/extensions/no-only-tests.js +21 -0
  32. package/dist/extensions/no-only-tests.js.map +1 -0
  33. package/dist/extensions/node.d.ts +11 -0
  34. package/dist/extensions/node.js +25 -0
  35. package/dist/extensions/node.js.map +1 -0
  36. package/dist/extensions/oxlint.d.ts +10 -0
  37. package/dist/extensions/oxlint.js +14 -0
  38. package/dist/extensions/oxlint.js.map +1 -0
  39. package/dist/extensions/perfectionist.d.ts +9 -0
  40. package/dist/extensions/perfectionist.js +25 -0
  41. package/dist/extensions/perfectionist.js.map +1 -0
  42. package/dist/extensions/regexp.d.ts +10 -0
  43. package/dist/extensions/regexp.js +28 -0
  44. package/dist/extensions/regexp.js.map +1 -0
  45. package/dist/extensions/security.d.ts +9 -0
  46. package/dist/extensions/security.js +21 -0
  47. package/dist/extensions/security.js.map +1 -0
  48. package/dist/extensions/sonarjs.d.ts +5 -0
  49. package/dist/extensions/sonarjs.js +16 -0
  50. package/dist/extensions/sonarjs.js.map +1 -0
  51. package/dist/extensions/unicorn.d.ts +9 -0
  52. package/dist/extensions/unicorn.js +47 -0
  53. package/dist/extensions/unicorn.js.map +1 -0
  54. package/dist/formats/css.d.ts +9 -0
  55. package/dist/formats/css.js +21 -0
  56. package/dist/formats/css.js.map +1 -0
  57. package/dist/formats/graphql.d.ts +9 -0
  58. package/dist/formats/graphql.js +41 -0
  59. package/dist/formats/graphql.js.map +1 -0
  60. package/dist/formats/html.d.ts +9 -0
  61. package/dist/formats/html.js +29 -0
  62. package/dist/formats/html.js.map +1 -0
  63. package/dist/formats/index.d.ts +10 -0
  64. package/dist/formats/index.js +21 -0
  65. package/dist/formats/index.js.map +1 -0
  66. package/dist/formats/jsonc.d.ts +9 -0
  67. package/dist/formats/jsonc.js +73 -0
  68. package/dist/formats/jsonc.js.map +1 -0
  69. package/dist/formats/markdown.d.ts +9 -0
  70. package/dist/formats/markdown.js +73 -0
  71. package/dist/formats/markdown.js.map +1 -0
  72. package/dist/formats/mdx.d.ts +9 -0
  73. package/dist/formats/mdx.js +55 -0
  74. package/dist/formats/mdx.js.map +1 -0
  75. package/dist/formats/package-json.d.ts +9 -0
  76. package/dist/formats/package-json.js +16 -0
  77. package/dist/formats/package-json.js.map +1 -0
  78. package/dist/formats/toml.d.ts +9 -0
  79. package/dist/formats/toml.js +14 -0
  80. package/dist/formats/toml.js.map +1 -0
  81. package/dist/formats/yaml.d.ts +9 -0
  82. package/dist/formats/yaml.js +28 -0
  83. package/dist/formats/yaml.js.map +1 -0
  84. package/dist/index.d.ts +57 -0
  85. package/dist/index.js +114 -0
  86. package/dist/index.js.map +1 -0
  87. package/dist/lazy.d.ts +24 -0
  88. package/dist/lazy.js +46 -0
  89. package/dist/lazy.js.map +1 -0
  90. package/dist/libraries/ai.d.ts +8 -0
  91. package/dist/libraries/ai.js +29 -0
  92. package/dist/libraries/ai.js.map +1 -0
  93. package/dist/libraries/autogen.d.ts +8 -0
  94. package/dist/libraries/autogen.js +24 -0
  95. package/dist/libraries/autogen.js.map +1 -0
  96. package/dist/libraries/google-genai.d.ts +8 -0
  97. package/dist/libraries/google-genai.js +30 -0
  98. package/dist/libraries/google-genai.js.map +1 -0
  99. package/dist/libraries/i18next.d.ts +9 -0
  100. package/dist/libraries/i18next.js +29 -0
  101. package/dist/libraries/i18next.js.map +1 -0
  102. package/dist/libraries/index.d.ts +17 -0
  103. package/dist/libraries/index.js +38 -0
  104. package/dist/libraries/index.js.map +1 -0
  105. package/dist/libraries/langchain.d.ts +8 -0
  106. package/dist/libraries/langchain.js +30 -0
  107. package/dist/libraries/langchain.js.map +1 -0
  108. package/dist/libraries/llamaindex.d.ts +8 -0
  109. package/dist/libraries/llamaindex.js +30 -0
  110. package/dist/libraries/llamaindex.js.map +1 -0
  111. package/dist/libraries/mastra.d.ts +8 -0
  112. package/dist/libraries/mastra.js +30 -0
  113. package/dist/libraries/mastra.js.map +1 -0
  114. package/dist/libraries/mcp.d.ts +8 -0
  115. package/dist/libraries/mcp.js +33 -0
  116. package/dist/libraries/mcp.js.map +1 -0
  117. package/dist/libraries/openai-agents.d.ts +8 -0
  118. package/dist/libraries/openai-agents.js +32 -0
  119. package/dist/libraries/openai-agents.js.map +1 -0
  120. package/dist/libraries/orm.d.ts +31 -0
  121. package/dist/libraries/orm.js +104 -0
  122. package/dist/libraries/orm.js.map +1 -0
  123. package/dist/libraries/stencil.d.ts +9 -0
  124. package/dist/libraries/stencil.js +49 -0
  125. package/dist/libraries/stencil.js.map +1 -0
  126. package/dist/libraries/storybook.d.ts +9 -0
  127. package/dist/libraries/storybook.js +11 -0
  128. package/dist/libraries/storybook.js.map +1 -0
  129. package/dist/libraries/tailwind.d.ts +9 -0
  130. package/dist/libraries/tailwind.js +21 -0
  131. package/dist/libraries/tailwind.js.map +1 -0
  132. package/dist/libraries/tanstack.d.ts +12 -0
  133. package/dist/libraries/tanstack.js +37 -0
  134. package/dist/libraries/tanstack.js.map +1 -0
  135. package/dist/libraries/turbo.d.ts +9 -0
  136. package/dist/libraries/turbo.js +25 -0
  137. package/dist/libraries/turbo.js.map +1 -0
  138. package/dist/libraries/zod.d.ts +9 -0
  139. package/dist/libraries/zod.js +21 -0
  140. package/dist/libraries/zod.js.map +1 -0
  141. package/dist/testing/cypress.d.ts +9 -0
  142. package/dist/testing/cypress.js +26 -0
  143. package/dist/testing/cypress.js.map +1 -0
  144. package/dist/testing/index.d.ts +7 -0
  145. package/dist/testing/index.js +15 -0
  146. package/dist/testing/index.js.map +1 -0
  147. package/dist/testing/jest-dom.d.ts +9 -0
  148. package/dist/testing/jest-dom.js +21 -0
  149. package/dist/testing/jest-dom.js.map +1 -0
  150. package/dist/testing/jest.d.ts +9 -0
  151. package/dist/testing/jest.js +24 -0
  152. package/dist/testing/jest.js.map +1 -0
  153. package/dist/testing/playwright.d.ts +9 -0
  154. package/dist/testing/playwright.js +21 -0
  155. package/dist/testing/playwright.js.map +1 -0
  156. package/dist/testing/testing-library.d.ts +9 -0
  157. package/dist/testing/testing-library.js +34 -0
  158. package/dist/testing/testing-library.js.map +1 -0
  159. package/dist/testing/vitest.d.ts +9 -0
  160. package/dist/testing/vitest.js +57 -0
  161. package/dist/testing/vitest.js.map +1 -0
  162. package/dist/tools/command.d.ts +9 -0
  163. package/dist/tools/command.js +16 -0
  164. package/dist/tools/command.js.map +1 -0
  165. package/dist/tools/cspell.d.ts +9 -0
  166. package/dist/tools/cspell.js +26 -0
  167. package/dist/tools/cspell.js.map +1 -0
  168. package/dist/tools/docker.d.ts +10 -0
  169. package/dist/tools/docker.js +21 -0
  170. package/dist/tools/docker.js.map +1 -0
  171. package/dist/tools/github-actions.d.ts +10 -0
  172. package/dist/tools/github-actions.js +16 -0
  173. package/dist/tools/github-actions.js.map +1 -0
  174. package/dist/tools/index.d.ts +10 -0
  175. package/dist/tools/index.js +21 -0
  176. package/dist/tools/index.js.map +1 -0
  177. package/dist/tools/jsdoc.d.ts +9 -0
  178. package/dist/tools/jsdoc.js +36 -0
  179. package/dist/tools/jsdoc.js.map +1 -0
  180. package/dist/tools/nx.d.ts +9 -0
  181. package/dist/tools/nx.js +18 -0
  182. package/dist/tools/nx.js.map +1 -0
  183. package/dist/tools/pnpm.d.ts +10 -0
  184. package/dist/tools/pnpm.js +12 -0
  185. package/dist/tools/pnpm.js.map +1 -0
  186. package/dist/tools/prettier.d.ts +9 -0
  187. package/dist/tools/prettier.js +14 -0
  188. package/dist/tools/prettier.js.map +1 -0
  189. package/dist/tools/swagger.d.ts +9 -0
  190. package/dist/tools/swagger.js +22 -0
  191. package/dist/tools/swagger.js.map +1 -0
  192. package/package.json +136 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2025 santi020k
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,11 @@
1
+ # @santi020k/eslint-config-integrations
2
+
3
+ Libraries, tools, testing, formats, and extensions integrations.
4
+
5
+ This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo.
6
+
7
+ - Docs: [Integrations package](https://eslint.santi020k.com/packages/integrations.html)
8
+ - Repository: [santi020k/eslint-config-basic](https://github.com/santi020k/eslint-config-basic)
9
+ - Author: [santi020k](https://santi020k.com)
10
+
11
+ The canonical documentation lives on the Starlight site, so this README intentionally stays short to avoid duplication.
@@ -0,0 +1,21 @@
1
+ import { Library, Tool, Testing, Format, Extension, FlatConfigArray } from '@santi020k/eslint-config-core';
2
+
3
+ /**
4
+ * Gets integration configs based on selected options.
5
+ * This function maintains the recommended ordering (e.g. Prettier last).
6
+ * @param libraries - List of libraries to configure
7
+ * @param tools - List of tools to configure
8
+ * @param testing - List of testing frameworks to configure
9
+ * @param formats - List of file formats to configure
10
+ * @param extensions - List of extensions to configure
11
+ * @returns The resolved flat configurations
12
+ */
13
+ declare const getIntegrationConfigs: (libraries: Library[], tools: Tool[], testing: Testing[], formats: Format[], extensions: Extension[]) => Promise<FlatConfigArray>;
14
+ /**
15
+ * Returns the Prettier configuration if selected.
16
+ * @param tools - The tools to configure
17
+ * @returns The prettier config or an empty array
18
+ */
19
+ declare const getPrettierConfig: (tools: Tool[]) => Promise<FlatConfigArray>;
20
+
21
+ export { getIntegrationConfigs, getPrettierConfig };
@@ -0,0 +1,137 @@
1
+ import {
2
+ Extension,
3
+ Format,
4
+ Library,
5
+ Testing,
6
+ Tool
7
+ } from "@santi020k/eslint-config-core";
8
+ import { a11y } from "./extensions/a11y.js";
9
+ import { bestPractices } from "./extensions/best-practices.js";
10
+ import { biome } from "./extensions/biome.js";
11
+ import { boundaries } from "./extensions/boundaries.js";
12
+ import { compat } from "./extensions/compat.js";
13
+ import { deMorgan } from "./extensions/de-morgan.js";
14
+ import { depend } from "./extensions/depend.js";
15
+ import { noOnlyTests } from "./extensions/no-only-tests.js";
16
+ import { node } from "./extensions/node.js";
17
+ import { oxlint } from "./extensions/oxlint.js";
18
+ import { perfectionist } from "./extensions/perfectionist.js";
19
+ import { regexp } from "./extensions/regexp.js";
20
+ import { security } from "./extensions/security.js";
21
+ import { sonarjs } from "./extensions/sonarjs.js";
22
+ import { unicorn } from "./extensions/unicorn.js";
23
+ import { css } from "./formats/css.js";
24
+ import { graphql } from "./formats/graphql.js";
25
+ import { html } from "./formats/html.js";
26
+ import { jsonc } from "./formats/jsonc.js";
27
+ import { markdown } from "./formats/markdown.js";
28
+ import { mdx } from "./formats/mdx.js";
29
+ import { packageJson } from "./formats/package-json.js";
30
+ import { toml } from "./formats/toml.js";
31
+ import { yaml } from "./formats/yaml.js";
32
+ import { aiSdk } from "./libraries/ai.js";
33
+ import { autogen } from "./libraries/autogen.js";
34
+ import { googleGenAi } from "./libraries/google-genai.js";
35
+ import { i18next } from "./libraries/i18next.js";
36
+ import { langchain } from "./libraries/langchain.js";
37
+ import { llamaIndex } from "./libraries/llamaindex.js";
38
+ import { mastra } from "./libraries/mastra.js";
39
+ import { mcp } from "./libraries/mcp.js";
40
+ import { openAiAgents } from "./libraries/openai-agents.js";
41
+ import { drizzle, mikroOrm, prisma, sequelize, typeorm } from "./libraries/orm.js";
42
+ import { stencil } from "./libraries/stencil.js";
43
+ import { storybook } from "./libraries/storybook.js";
44
+ import { tailwind } from "./libraries/tailwind.js";
45
+ import { tanstackQuery, tanstackRouter } from "./libraries/tanstack.js";
46
+ import { turbo } from "./libraries/turbo.js";
47
+ import { zod } from "./libraries/zod.js";
48
+ import { cypress } from "./testing/cypress.js";
49
+ import { jest } from "./testing/jest.js";
50
+ import { jestDom } from "./testing/jest-dom.js";
51
+ import { playwright } from "./testing/playwright.js";
52
+ import { testingLibrary } from "./testing/testing-library.js";
53
+ import { vitest } from "./testing/vitest.js";
54
+ import { command } from "./tools/command.js";
55
+ import { cspell } from "./tools/cspell.js";
56
+ import { docker } from "./tools/docker.js";
57
+ import { githubActions } from "./tools/github-actions.js";
58
+ import { jsdoc } from "./tools/jsdoc.js";
59
+ import { nx } from "./tools/nx.js";
60
+ import { pnpm } from "./tools/pnpm.js";
61
+ import { prettier } from "./tools/prettier.js";
62
+ import { swagger } from "./tools/swagger.js";
63
+ const addIf = async (flag, loader) => flag ? loader() : [];
64
+ const getIntegrationConfigs = async (libraries, tools, testing, formats, extensions) => (await Promise.all([
65
+ // Tools (Except Prettier which goes last)
66
+ addIf(tools.includes(Tool.Cspell), cspell),
67
+ // Libraries
68
+ addIf(libraries.includes(Library.AiSdk), aiSdk),
69
+ addIf(libraries.includes(Library.Mcp), () => mcp()),
70
+ addIf(libraries.includes(Library.Mastra), () => mastra()),
71
+ addIf(libraries.includes(Library.OpenAiAgents), () => openAiAgents()),
72
+ addIf(libraries.includes(Library.GoogleGenAi), () => googleGenAi()),
73
+ addIf(libraries.includes(Library.Autogen), () => autogen()),
74
+ addIf(libraries.includes(Library.Langchain), () => langchain()),
75
+ addIf(libraries.includes(Library.LlamaIndex), () => llamaIndex()),
76
+ addIf(libraries.includes(Library.Typeorm), () => typeorm()),
77
+ addIf(libraries.includes(Library.Prisma), () => prisma()),
78
+ addIf(libraries.includes(Library.Drizzle), () => drizzle()),
79
+ addIf(libraries.includes(Library.MikroOrm), () => mikroOrm()),
80
+ addIf(libraries.includes(Library.Sequelize), () => sequelize()),
81
+ addIf(libraries.includes(Library.Tailwind), tailwind),
82
+ addIf(libraries.includes(Library.I18next), i18next),
83
+ addIf(libraries.includes(Library.Stencil), stencil),
84
+ addIf(libraries.includes(Library.TanstackQuery), tanstackQuery),
85
+ addIf(libraries.includes(Library.TanstackRouter), tanstackRouter),
86
+ addIf(libraries.includes(Library.Storybook), storybook),
87
+ addIf(libraries.includes(Library.Zod), zod),
88
+ addIf(libraries.includes(Library.Turbo), turbo),
89
+ // Testing
90
+ addIf(testing.includes(Testing.Vitest), vitest),
91
+ addIf(testing.includes(Testing.Playwright), playwright),
92
+ addIf(testing.includes(Testing.Jest), jest),
93
+ addIf(testing.includes(Testing.JestDom), jestDom),
94
+ addIf(testing.includes(Testing.Cypress), cypress),
95
+ addIf(testing.includes(Testing.TestingLibrary), testingLibrary),
96
+ // Formats
97
+ addIf(formats.includes(Format.Css), css),
98
+ addIf(formats.includes(Format.Html), html),
99
+ addIf(formats.includes(Format.Mdx), mdx),
100
+ addIf(formats.includes(Format.Markdown), markdown),
101
+ addIf(formats.includes(Format.PackageJson), packageJson),
102
+ addIf(formats.includes(Format.Jsonc), jsonc),
103
+ addIf(formats.includes(Format.Yaml), yaml),
104
+ addIf(formats.includes(Format.Toml), toml),
105
+ addIf(formats.includes(Format.Graphql), graphql),
106
+ // Extensions
107
+ addIf(extensions.includes(Extension.A11y), a11y),
108
+ addIf(extensions.includes(Extension.Biome), biome),
109
+ addIf(extensions.includes(Extension.Boundaries), () => boundaries),
110
+ addIf(extensions.includes(Extension.BestPractices), () => bestPractices),
111
+ addIf(extensions.includes(Extension.Regexp), regexp),
112
+ addIf(extensions.includes(Extension.Unicorn), unicorn),
113
+ addIf(extensions.includes(Extension.Sonarjs), sonarjs),
114
+ addIf(extensions.includes(Extension.Security), security),
115
+ addIf(extensions.includes(Extension.Perfectionist), perfectionist),
116
+ addIf(extensions.includes(Extension.Node), node),
117
+ addIf(extensions.includes(Extension.Compat), compat),
118
+ addIf(extensions.includes(Extension.DeMorgan), deMorgan),
119
+ addIf(extensions.includes(Extension.Depend), depend),
120
+ addIf(extensions.includes(Extension.NoOnlyTests), noOnlyTests),
121
+ // Oxlint goes after other extensions so its rule disables win
122
+ addIf(extensions.includes(Extension.Oxlint), oxlint),
123
+ // Standalone tools
124
+ addIf(tools.includes(Tool.Command), command),
125
+ addIf(tools.includes(Tool.GithubActions), githubActions),
126
+ addIf(tools.includes(Tool.Docker), docker),
127
+ addIf(tools.includes(Tool.Nx), nx),
128
+ addIf(tools.includes(Tool.Pnpm), pnpm),
129
+ addIf(tools.includes(Tool.Jsdoc), jsdoc),
130
+ addIf(tools.includes(Tool.Swagger), swagger)
131
+ ])).flat();
132
+ const getPrettierConfig = async (tools) => tools.includes(Tool.Prettier) ? await prettier() : [];
133
+ export {
134
+ getIntegrationConfigs,
135
+ getPrettierConfig
136
+ };
137
+ //# sourceMappingURL=compose.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/compose.ts"],"sourcesContent":["import {\n Extension,\n type FlatConfigArray,\n Format,\n Library,\n Testing,\n Tool\n} from '@santi020k/eslint-config-core'\n\nimport { a11y } from './extensions/a11y.js'\nimport { bestPractices } from './extensions/best-practices.js'\nimport { biome } from './extensions/biome.js'\nimport { boundaries } from './extensions/boundaries.js'\nimport { compat } from './extensions/compat.js'\nimport { deMorgan } from './extensions/de-morgan.js'\nimport { depend } from './extensions/depend.js'\nimport { noOnlyTests } from './extensions/no-only-tests.js'\nimport { node } from './extensions/node.js'\nimport { oxlint } from './extensions/oxlint.js'\nimport { perfectionist } from './extensions/perfectionist.js'\nimport { regexp } from './extensions/regexp.js'\nimport { security } from './extensions/security.js'\nimport { sonarjs } from './extensions/sonarjs.js'\nimport { unicorn } from './extensions/unicorn.js'\nimport { css } from './formats/css.js'\nimport { graphql } from './formats/graphql.js'\nimport { html } from './formats/html.js'\nimport { jsonc } from './formats/jsonc.js'\nimport { markdown } from './formats/markdown.js'\nimport { mdx } from './formats/mdx.js'\nimport { packageJson } from './formats/package-json.js'\nimport { toml } from './formats/toml.js'\nimport { yaml } from './formats/yaml.js'\nimport { aiSdk } from './libraries/ai.js'\nimport { autogen } from './libraries/autogen.js'\nimport { googleGenAi } from './libraries/google-genai.js'\nimport { i18next } from './libraries/i18next.js'\nimport { langchain } from './libraries/langchain.js'\nimport { llamaIndex } from './libraries/llamaindex.js'\nimport { mastra } from './libraries/mastra.js'\nimport { mcp } from './libraries/mcp.js'\nimport { openAiAgents } from './libraries/openai-agents.js'\nimport { drizzle, mikroOrm, prisma, sequelize, typeorm } from './libraries/orm.js'\nimport { stencil } from './libraries/stencil.js'\nimport { storybook } from './libraries/storybook.js'\nimport { tailwind } from './libraries/tailwind.js'\nimport { tanstackQuery, tanstackRouter } from './libraries/tanstack.js'\nimport { turbo } from './libraries/turbo.js'\nimport { zod } from './libraries/zod.js'\nimport { cypress } from './testing/cypress.js'\nimport { jest } from './testing/jest.js'\nimport { jestDom } from './testing/jest-dom.js'\nimport { playwright } from './testing/playwright.js'\nimport { testingLibrary } from './testing/testing-library.js'\nimport { vitest } from './testing/vitest.js'\nimport { command } from './tools/command.js'\nimport { cspell } from './tools/cspell.js'\nimport { docker } from './tools/docker.js'\nimport { githubActions } from './tools/github-actions.js'\nimport { jsdoc } from './tools/jsdoc.js'\nimport { nx } from './tools/nx.js'\nimport { pnpm } from './tools/pnpm.js'\nimport { prettier } from './tools/prettier.js'\nimport { swagger } from './tools/swagger.js'\n\nconst addIf = async (\n flag: boolean,\n loader: () => FlatConfigArray | Promise<FlatConfigArray>\n): Promise<FlatConfigArray> => flag ? loader() : []\n\n/**\n * Gets integration configs based on selected options.\n * This function maintains the recommended ordering (e.g. Prettier last).\n * @param libraries - List of libraries to configure\n * @param tools - List of tools to configure\n * @param testing - List of testing frameworks to configure\n * @param formats - List of file formats to configure\n * @param extensions - List of extensions to configure\n * @returns The resolved flat configurations\n */\nexport const getIntegrationConfigs = async (\n libraries: Library[],\n tools: Tool[],\n testing: Testing[],\n formats: Format[],\n extensions: Extension[]\n): Promise<FlatConfigArray> => (await Promise.all([\n // Tools (Except Prettier which goes last)\n addIf(tools.includes(Tool.Cspell), cspell),\n // Libraries\n addIf(libraries.includes(Library.AiSdk), aiSdk),\n addIf(libraries.includes(Library.Mcp), () => mcp()),\n addIf(libraries.includes(Library.Mastra), () => mastra()),\n addIf(libraries.includes(Library.OpenAiAgents), () => openAiAgents()),\n addIf(libraries.includes(Library.GoogleGenAi), () => googleGenAi()),\n addIf(libraries.includes(Library.Autogen), () => autogen()),\n addIf(libraries.includes(Library.Langchain), () => langchain()),\n addIf(libraries.includes(Library.LlamaIndex), () => llamaIndex()),\n addIf(libraries.includes(Library.Typeorm), () => typeorm()),\n addIf(libraries.includes(Library.Prisma), () => prisma()),\n addIf(libraries.includes(Library.Drizzle), () => drizzle()),\n addIf(libraries.includes(Library.MikroOrm), () => mikroOrm()),\n addIf(libraries.includes(Library.Sequelize), () => sequelize()),\n addIf(libraries.includes(Library.Tailwind), tailwind),\n addIf(libraries.includes(Library.I18next), i18next),\n addIf(libraries.includes(Library.Stencil), stencil),\n addIf(libraries.includes(Library.TanstackQuery), tanstackQuery),\n addIf(libraries.includes(Library.TanstackRouter), tanstackRouter),\n addIf(libraries.includes(Library.Storybook), storybook),\n addIf(libraries.includes(Library.Zod), zod),\n addIf(libraries.includes(Library.Turbo), turbo),\n // Testing\n addIf(testing.includes(Testing.Vitest), vitest),\n addIf(testing.includes(Testing.Playwright), playwright),\n addIf(testing.includes(Testing.Jest), jest),\n addIf(testing.includes(Testing.JestDom), jestDom),\n addIf(testing.includes(Testing.Cypress), cypress),\n addIf(testing.includes(Testing.TestingLibrary), testingLibrary),\n // Formats\n addIf(formats.includes(Format.Css), css),\n addIf(formats.includes(Format.Html), html),\n addIf(formats.includes(Format.Mdx), mdx),\n addIf(formats.includes(Format.Markdown), markdown),\n addIf(formats.includes(Format.PackageJson), packageJson),\n addIf(formats.includes(Format.Jsonc), jsonc),\n addIf(formats.includes(Format.Yaml), yaml),\n addIf(formats.includes(Format.Toml), toml),\n addIf(formats.includes(Format.Graphql), graphql),\n // Extensions\n addIf(extensions.includes(Extension.A11y), a11y),\n addIf(extensions.includes(Extension.Biome), biome),\n addIf(extensions.includes(Extension.Boundaries), () => boundaries),\n addIf(extensions.includes(Extension.BestPractices), () => bestPractices),\n addIf(extensions.includes(Extension.Regexp), regexp),\n addIf(extensions.includes(Extension.Unicorn), unicorn),\n addIf(extensions.includes(Extension.Sonarjs), sonarjs),\n addIf(extensions.includes(Extension.Security), security),\n addIf(extensions.includes(Extension.Perfectionist), perfectionist),\n addIf(extensions.includes(Extension.Node), node),\n addIf(extensions.includes(Extension.Compat), compat),\n addIf(extensions.includes(Extension.DeMorgan), deMorgan),\n addIf(extensions.includes(Extension.Depend), depend),\n addIf(extensions.includes(Extension.NoOnlyTests), noOnlyTests),\n // Oxlint goes after other extensions so its rule disables win\n addIf(extensions.includes(Extension.Oxlint), oxlint),\n // Standalone tools\n addIf(tools.includes(Tool.Command), command),\n addIf(tools.includes(Tool.GithubActions), githubActions),\n addIf(tools.includes(Tool.Docker), docker),\n addIf(tools.includes(Tool.Nx), nx),\n addIf(tools.includes(Tool.Pnpm), pnpm),\n addIf(tools.includes(Tool.Jsdoc), jsdoc),\n addIf(tools.includes(Tool.Swagger), swagger)\n])).flat()\n\n/**\n * Returns the Prettier configuration if selected.\n * @param tools - The tools to configure\n * @returns The prettier config or an empty array\n */\nexport const getPrettierConfig = async (tools: Tool[]): Promise<FlatConfigArray> => tools.includes(Tool.Prettier) ? await prettier() : []\n"],"mappings":"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","names":[]}
@@ -0,0 +1,9 @@
1
+ import { TSESLint } from '@typescript-eslint/utils';
2
+
3
+ /**
4
+ * A11y extension configurations
5
+ * Provides accessibility linting for JSX and Vue
6
+ */
7
+ declare const a11y: () => Promise<TSESLint.FlatConfig.ConfigArray>;
8
+
9
+ export { a11y };
@@ -0,0 +1,25 @@
1
+ import { GLOB_JS_TS_ALL, GLOB_VUE } from "@santi020k/eslint-config-core";
2
+ import { defineLazyConfig, loadDefault } from "../lazy.js";
3
+ const a11y = defineLazyConfig("a11y", async () => {
4
+ const pluginJsxA11y = await loadDefault("eslint-plugin-jsx-a11y");
5
+ const pluginVueA11y = await loadDefault("eslint-plugin-vuejs-accessibility");
6
+ return [
7
+ {
8
+ files: GLOB_JS_TS_ALL,
9
+ name: "eslint-config-integrations/a11y/jsx",
10
+ plugins: {
11
+ "jsx-a11y": pluginJsxA11y
12
+ },
13
+ rules: pluginJsxA11y.configs.recommended.rules
14
+ },
15
+ ...pluginVueA11y.configs["flat/recommended"].map((config) => ({
16
+ ...config,
17
+ files: GLOB_VUE,
18
+ name: `eslint-config-integrations/a11y/vue${config.name ? `/${config.name}` : ""}`
19
+ }))
20
+ ];
21
+ });
22
+ export {
23
+ a11y
24
+ };
25
+ //# sourceMappingURL=a11y.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/a11y.ts"],"sourcesContent":["import { GLOB_JS_TS_ALL, GLOB_VUE } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\nimport type PluginJsxA11y from 'eslint-plugin-jsx-a11y'\nimport type PluginVueA11y from 'eslint-plugin-vuejs-accessibility'\n\nimport { defineLazyConfig, loadDefault } from '../lazy.js'\n\n/**\n * A11y extension configurations\n * Provides accessibility linting for JSX and Vue\n */\nexport const a11y: () => Promise<TSESLint.FlatConfig.ConfigArray> = defineLazyConfig('a11y', async () => {\n const pluginJsxA11y = await loadDefault<typeof PluginJsxA11y>('eslint-plugin-jsx-a11y')\n const pluginVueA11y = await loadDefault<typeof PluginVueA11y>('eslint-plugin-vuejs-accessibility')\n\n return [\n {\n files: GLOB_JS_TS_ALL,\n name: 'eslint-config-integrations/a11y/jsx',\n plugins: {\n 'jsx-a11y': pluginJsxA11y\n },\n rules: pluginJsxA11y.configs.recommended.rules\n },\n ...pluginVueA11y.configs['flat/recommended'].map((config: TSESLint.FlatConfig.Config) => ({\n ...config,\n files: GLOB_VUE,\n name: `eslint-config-integrations/a11y/vue${config.name ? `/${config.name}` : ''}`\n }))\n ]\n})\n"],"mappings":"AAAA,SAAS,gBAAgB,gBAAgB;AAMzC,SAAS,kBAAkB,mBAAmB;AAMvC,MAAM,OAAuD,iBAAiB,QAAQ,YAAY;AACvG,QAAM,gBAAgB,MAAM,YAAkC,wBAAwB;AACtF,QAAM,gBAAgB,MAAM,YAAkC,mCAAmC;AAEjG,SAAO;AAAA,IACL;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,QACP,YAAY;AAAA,MACd;AAAA,MACA,OAAO,cAAc,QAAQ,YAAY;AAAA,IAC3C;AAAA,IACA,GAAG,cAAc,QAAQ,kBAAkB,EAAE,IAAI,CAAC,YAAwC;AAAA,MACxF,GAAG;AAAA,MACH,OAAO;AAAA,MACP,MAAM,sCAAsC,OAAO,OAAO,IAAI,OAAO,IAAI,KAAK,EAAE;AAAA,IAClF,EAAE;AAAA,EACJ;AACF,CAAC;","names":[]}
@@ -0,0 +1,16 @@
1
+ import { TSESLint } from '@typescript-eslint/utils';
2
+
3
+ /**
4
+ * Best-practices ESLint configuration
5
+ *
6
+ * Adds commonly-recommended quality rules that go beyond stylistic formatting:
7
+ * - `no-console` — warn when console.* calls are left in production code
8
+ * - `no-alert` — error on browser alert / confirm / prompt
9
+ * - `complexity` — warn when cyclomatic complexity exceeds 10
10
+ * - `max-depth` — warn when block nesting exceeds 4 levels
11
+ *
12
+ * All rules use built-in ESLint only; no extra dependencies are required.
13
+ */
14
+ declare const bestPractices: TSESLint.FlatConfig.ConfigArray;
15
+
16
+ export { bestPractices };
@@ -0,0 +1,27 @@
1
+ import { GLOB_JS_TS } from "@santi020k/eslint-config-core";
2
+ const bestPractices = [
3
+ {
4
+ files: GLOB_JS_TS,
5
+ name: "eslint-config/best-practices",
6
+ rules: {
7
+ /**
8
+ * Warn when a function's cyclomatic complexity exceeds 10.
9
+ * Complex functions are harder to test and understand.
10
+ */
11
+ complexity: ["warn", { max: 10 }],
12
+ /**
13
+ * Warn when blocks are nested more than 4 levels deep.
14
+ * Deep nesting is a common sign that logic should be extracted.
15
+ */
16
+ "max-depth": ["warn", { max: 4 }],
17
+ /** Disallow browser dialogs — use proper UI instead. */
18
+ "no-alert": "error",
19
+ /** Warn on console usage so developers remember to remove debug output. */
20
+ "no-console": "warn"
21
+ }
22
+ }
23
+ ];
24
+ export {
25
+ bestPractices
26
+ };
27
+ //# sourceMappingURL=best-practices.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/best-practices.ts"],"sourcesContent":["import { GLOB_JS_TS } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\n\n/**\n * Best-practices ESLint configuration\n *\n * Adds commonly-recommended quality rules that go beyond stylistic formatting:\n * - `no-console` — warn when console.* calls are left in production code\n * - `no-alert` — error on browser alert / confirm / prompt\n * - `complexity` — warn when cyclomatic complexity exceeds 10\n * - `max-depth` — warn when block nesting exceeds 4 levels\n *\n * All rules use built-in ESLint only; no extra dependencies are required.\n */\nexport const bestPractices: TSESLint.FlatConfig.ConfigArray = [\n {\n files: GLOB_JS_TS,\n name: 'eslint-config/best-practices',\n rules: {\n\n /**\n * Warn when a function's cyclomatic complexity exceeds 10.\n * Complex functions are harder to test and understand.\n */\n complexity: ['warn', { max: 10 }],\n\n /**\n * Warn when blocks are nested more than 4 levels deep.\n * Deep nesting is a common sign that logic should be extracted.\n */\n 'max-depth': ['warn', { max: 4 }],\n\n /** Disallow browser dialogs — use proper UI instead. */\n 'no-alert': 'error',\n\n /** Warn on console usage so developers remember to remove debug output. */\n 'no-console': 'warn'\n }\n }\n]\n"],"mappings":"AAAA,SAAS,kBAAkB;AAepB,MAAM,gBAAiD;AAAA,EAC5D;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA;AAAA;AAAA;AAAA;AAAA,MAML,YAAY,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA,MAMhC,aAAa,CAAC,QAAQ,EAAE,KAAK,EAAE,CAAC;AAAA;AAAA,MAGhC,YAAY;AAAA;AAAA,MAGZ,cAAc;AAAA,IAChB;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,9 @@
1
+ import { TSESLint } from '@typescript-eslint/utils';
2
+
3
+ /**
4
+ * Biome extension configurations
5
+ * Disables rules that conflict with Biome formatting and linting.
6
+ */
7
+ declare const biome: () => Promise<TSESLint.FlatConfig.ConfigArray>;
8
+
9
+ export { biome };
@@ -0,0 +1,18 @@
1
+ import { GLOB_JS_TS_ALL } from "@santi020k/eslint-config-core";
2
+ import { defineLazyConfig, loadDefault } from "../lazy.js";
3
+ const biome = defineLazyConfig("biome", async () => {
4
+ const biomeConfig = await loadDefault("eslint-config-biome");
5
+ return [
6
+ {
7
+ files: GLOB_JS_TS_ALL,
8
+ name: "eslint-config-integrations/biome",
9
+ rules: {
10
+ ...biomeConfig.rules
11
+ }
12
+ }
13
+ ];
14
+ });
15
+ export {
16
+ biome
17
+ };
18
+ //# sourceMappingURL=biome.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/biome.ts"],"sourcesContent":["import { GLOB_JS_TS_ALL } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\n\nimport { defineLazyConfig, loadDefault } from '../lazy.js'\n\ninterface BiomeConfig { rules?: TSESLint.FlatConfig.Rules }\n\n/**\n * Biome extension configurations\n * Disables rules that conflict with Biome formatting and linting.\n */\nexport const biome: () => Promise<TSESLint.FlatConfig.ConfigArray> = defineLazyConfig('biome', async () => {\n const biomeConfig = await loadDefault<BiomeConfig>('eslint-config-biome')\n\n return [\n {\n files: GLOB_JS_TS_ALL,\n name: 'eslint-config-integrations/biome',\n rules: {\n ...biomeConfig.rules\n }\n }\n ]\n})\n"],"mappings":"AAAA,SAAS,sBAAsB;AAI/B,SAAS,kBAAkB,mBAAmB;AAQvC,MAAM,QAAwD,iBAAiB,SAAS,YAAY;AACzG,QAAM,cAAc,MAAM,YAAyB,qBAAqB;AAExE,SAAO;AAAA,IACL;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,QACL,GAAG,YAAY;AAAA,MACjB;AAAA,IACF;AAAA,EACF;AACF,CAAC;","names":[]}
@@ -0,0 +1,12 @@
1
+ import { TSESLint } from '@typescript-eslint/utils';
2
+
3
+ /**
4
+ * Import-boundary ESLint configuration
5
+ *
6
+ * Prevents importing generated modules or test modules from production source.
7
+ * Relies on import/no-relative-packages and import/no-self-import from
8
+ * eslint-plugin-import-x, which the base config already loads.
9
+ */
10
+ declare const boundaries: TSESLint.FlatConfig.ConfigArray;
11
+
12
+ export { boundaries };
@@ -0,0 +1,40 @@
1
+ import { GLOB_JS_TS } from "@santi020k/eslint-config-core";
2
+ const boundaries = [
3
+ {
4
+ files: GLOB_JS_TS,
5
+ name: "eslint-config-integrations/import-boundaries",
6
+ rules: {
7
+ "import/no-relative-packages": "warn",
8
+ "import/no-self-import": "error",
9
+ "no-restricted-imports": ["error", {
10
+ patterns: [
11
+ {
12
+ group: [
13
+ "**/__generated__/**",
14
+ "**/generated/**",
15
+ "**/*.generated",
16
+ "**/*.generated.*",
17
+ "**/*.gen",
18
+ "**/*.gen.*"
19
+ ],
20
+ message: "Generated modules should stay behind stable source exports."
21
+ },
22
+ {
23
+ group: [
24
+ "**/*.test",
25
+ "**/*.spec",
26
+ "**/__tests__/**",
27
+ "**/test/**",
28
+ "**/tests/**"
29
+ ],
30
+ message: "Test modules should not be imported by production source."
31
+ }
32
+ ]
33
+ }]
34
+ }
35
+ }
36
+ ];
37
+ export {
38
+ boundaries
39
+ };
40
+ //# sourceMappingURL=boundaries.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/boundaries.ts"],"sourcesContent":["import { GLOB_JS_TS } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\n\n/**\n * Import-boundary ESLint configuration\n *\n * Prevents importing generated modules or test modules from production source.\n * Relies on import/no-relative-packages and import/no-self-import from\n * eslint-plugin-import-x, which the base config already loads.\n */\nexport const boundaries: TSESLint.FlatConfig.ConfigArray = [\n {\n files: GLOB_JS_TS,\n name: 'eslint-config-integrations/import-boundaries',\n rules: {\n 'import/no-relative-packages': 'warn',\n 'import/no-self-import': 'error',\n 'no-restricted-imports': ['error', {\n patterns: [\n {\n group: [\n '**/__generated__/**',\n '**/generated/**',\n '**/*.generated',\n '**/*.generated.*',\n '**/*.gen',\n '**/*.gen.*'\n ],\n message: 'Generated modules should stay behind stable source exports.'\n },\n {\n group: [\n '**/*.test',\n '**/*.spec',\n '**/__tests__/**',\n '**/test/**',\n '**/tests/**'\n ],\n message: 'Test modules should not be imported by production source.'\n }\n ]\n }]\n }\n }\n]\n"],"mappings":"AAAA,SAAS,kBAAkB;AAWpB,MAAM,aAA8C;AAAA,EACzD;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,MACL,+BAA+B;AAAA,MAC/B,yBAAyB;AAAA,MACzB,yBAAyB,CAAC,SAAS;AAAA,QACjC,UAAU;AAAA,UACR;AAAA,YACE,OAAO;AAAA,cACL;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,SAAS;AAAA,UACX;AAAA,UACA;AAAA,YACE,OAAO;AAAA,cACL;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,SAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;","names":[]}
@@ -0,0 +1,9 @@
1
+ import { TSESLint } from '@typescript-eslint/utils';
2
+
3
+ /**
4
+ * Browser compatibility extension configuration
5
+ * Checks code against the project browserslist using `eslint-plugin-compat`
6
+ */
7
+ declare const compat: () => Promise<TSESLint.FlatConfig.ConfigArray>;
8
+
9
+ export { compat };
@@ -0,0 +1,16 @@
1
+ import { GLOB_JS_TS_ALL } from "@santi020k/eslint-config-core";
2
+ import { defineLazyConfig, loadDefault } from "../lazy.js";
3
+ const compat = defineLazyConfig("compat", async () => {
4
+ const pluginCompat = await loadDefault("eslint-plugin-compat");
5
+ return [
6
+ {
7
+ ...pluginCompat.configs["flat/recommended"],
8
+ files: GLOB_JS_TS_ALL,
9
+ name: "integrations/compat/recommended"
10
+ }
11
+ ];
12
+ });
13
+ export {
14
+ compat
15
+ };
16
+ //# sourceMappingURL=compat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/compat.ts"],"sourcesContent":["import { GLOB_JS_TS_ALL } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\n\nimport { defineLazyConfig, loadDefault, type PluginWithConfigs } from '../lazy.js'\n\n/**\n * Browser compatibility extension configuration\n * Checks code against the project browserslist using `eslint-plugin-compat`\n */\nexport const compat: () => Promise<TSESLint.FlatConfig.ConfigArray> = defineLazyConfig('compat', async () => {\n const pluginCompat = await loadDefault<PluginWithConfigs<'flat/recommended'>>('eslint-plugin-compat')\n\n return [\n {\n ...pluginCompat.configs['flat/recommended'],\n files: GLOB_JS_TS_ALL,\n name: 'integrations/compat/recommended'\n }\n ]\n})\n"],"mappings":"AAAA,SAAS,sBAAsB;AAI/B,SAAS,kBAAkB,mBAA2C;AAM/D,MAAM,SAAyD,iBAAiB,UAAU,YAAY;AAC3G,QAAM,eAAe,MAAM,YAAmD,sBAAsB;AAEpG,SAAO;AAAA,IACL;AAAA,MACE,GAAG,aAAa,QAAQ,kBAAkB;AAAA,MAC1C,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,EACF;AACF,CAAC;","names":[]}
@@ -0,0 +1,9 @@
1
+ import { TSESLint } from '@typescript-eslint/utils';
2
+
3
+ /**
4
+ * De Morgan extension configuration
5
+ * Simplifies negated logical expressions using `eslint-plugin-de-morgan`
6
+ */
7
+ declare const deMorgan: () => Promise<TSESLint.FlatConfig.ConfigArray>;
8
+
9
+ export { deMorgan };
@@ -0,0 +1,16 @@
1
+ import { GLOB_JS_TS_ALL } from "@santi020k/eslint-config-core";
2
+ import { defineLazyConfig, loadDefault } from "../lazy.js";
3
+ const deMorgan = defineLazyConfig("de-morgan", async () => {
4
+ const pluginDeMorgan = await loadDefault("eslint-plugin-de-morgan");
5
+ return [
6
+ {
7
+ ...pluginDeMorgan.configs.recommended,
8
+ files: GLOB_JS_TS_ALL,
9
+ name: "integrations/de-morgan/recommended"
10
+ }
11
+ ];
12
+ });
13
+ export {
14
+ deMorgan
15
+ };
16
+ //# sourceMappingURL=de-morgan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/de-morgan.ts"],"sourcesContent":["import { GLOB_JS_TS_ALL } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\n\nimport { defineLazyConfig, loadDefault, type PluginWithConfigs } from '../lazy.js'\n\n/**\n * De Morgan extension configuration\n * Simplifies negated logical expressions using `eslint-plugin-de-morgan`\n */\nexport const deMorgan: () => Promise<TSESLint.FlatConfig.ConfigArray> = defineLazyConfig('de-morgan', async () => {\n const pluginDeMorgan = await loadDefault<PluginWithConfigs<'recommended'>>('eslint-plugin-de-morgan')\n\n return [\n {\n ...pluginDeMorgan.configs.recommended,\n files: GLOB_JS_TS_ALL,\n name: 'integrations/de-morgan/recommended'\n }\n ]\n})\n"],"mappings":"AAAA,SAAS,sBAAsB;AAI/B,SAAS,kBAAkB,mBAA2C;AAM/D,MAAM,WAA2D,iBAAiB,aAAa,YAAY;AAChH,QAAM,iBAAiB,MAAM,YAA8C,yBAAyB;AAEpG,SAAO;AAAA,IACL;AAAA,MACE,GAAG,eAAe,QAAQ;AAAA,MAC1B,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,EACF;AACF,CAAC;","names":[]}
@@ -0,0 +1,10 @@
1
+ import { TSESLint } from '@typescript-eslint/utils';
2
+
3
+ /**
4
+ * Depend extension configuration
5
+ * Suggests lighter or native alternatives to heavy dependencies using
6
+ * `eslint-plugin-depend`
7
+ */
8
+ declare const depend: () => Promise<TSESLint.FlatConfig.ConfigArray>;
9
+
10
+ export { depend };
@@ -0,0 +1,16 @@
1
+ import { GLOB_JS_TS_ALL } from "@santi020k/eslint-config-core";
2
+ import { defineLazyConfig, loadDefault } from "../lazy.js";
3
+ const depend = defineLazyConfig("depend", async () => {
4
+ const pluginDepend = await loadDefault("eslint-plugin-depend");
5
+ return [
6
+ {
7
+ ...pluginDepend.configs["flat/recommended"],
8
+ files: GLOB_JS_TS_ALL,
9
+ name: "integrations/depend/recommended"
10
+ }
11
+ ];
12
+ });
13
+ export {
14
+ depend
15
+ };
16
+ //# sourceMappingURL=depend.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/depend.ts"],"sourcesContent":["import { GLOB_JS_TS_ALL } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\n\nimport { defineLazyConfig, loadDefault, type PluginWithConfigs } from '../lazy.js'\n\n/**\n * Depend extension configuration\n * Suggests lighter or native alternatives to heavy dependencies using\n * `eslint-plugin-depend`\n */\nexport const depend: () => Promise<TSESLint.FlatConfig.ConfigArray> = defineLazyConfig('depend', async () => {\n const pluginDepend = await loadDefault<PluginWithConfigs<'flat/recommended'>>('eslint-plugin-depend')\n\n return [\n {\n ...pluginDepend.configs['flat/recommended'],\n files: GLOB_JS_TS_ALL,\n name: 'integrations/depend/recommended'\n }\n ]\n})\n"],"mappings":"AAAA,SAAS,sBAAsB;AAI/B,SAAS,kBAAkB,mBAA2C;AAO/D,MAAM,SAAyD,iBAAiB,UAAU,YAAY;AAC3G,QAAM,eAAe,MAAM,YAAmD,sBAAsB;AAEpG,SAAO;AAAA,IACL;AAAA,MACE,GAAG,aAAa,QAAQ,kBAAkB;AAAA,MAC1C,OAAO;AAAA,MACP,MAAM;AAAA,IACR;AAAA,EACF;AACF,CAAC;","names":[]}
@@ -0,0 +1,16 @@
1
+ export { a11y } from './a11y.js';
2
+ export { bestPractices } from './best-practices.js';
3
+ export { biome } from './biome.js';
4
+ export { boundaries } from './boundaries.js';
5
+ export { compat } from './compat.js';
6
+ export { deMorgan } from './de-morgan.js';
7
+ export { depend } from './depend.js';
8
+ export { noOnlyTests } from './no-only-tests.js';
9
+ export { node } from './node.js';
10
+ export { oxlint } from './oxlint.js';
11
+ export { perfectionist } from './perfectionist.js';
12
+ export { regexp } from './regexp.js';
13
+ export { security } from './security.js';
14
+ export { sonarjs } from './sonarjs.js';
15
+ export { unicorn } from './unicorn.js';
16
+ import '@typescript-eslint/utils';
@@ -0,0 +1,33 @@
1
+ import { a11y } from "./a11y.js";
2
+ import { bestPractices } from "./best-practices.js";
3
+ import { biome } from "./biome.js";
4
+ import { boundaries } from "./boundaries.js";
5
+ import { compat } from "./compat.js";
6
+ import { deMorgan } from "./de-morgan.js";
7
+ import { depend } from "./depend.js";
8
+ import { noOnlyTests } from "./no-only-tests.js";
9
+ import { node } from "./node.js";
10
+ import { oxlint } from "./oxlint.js";
11
+ import { perfectionist } from "./perfectionist.js";
12
+ import { regexp } from "./regexp.js";
13
+ import { security } from "./security.js";
14
+ import { sonarjs } from "./sonarjs.js";
15
+ import { unicorn } from "./unicorn.js";
16
+ export {
17
+ a11y,
18
+ bestPractices,
19
+ biome,
20
+ boundaries,
21
+ compat,
22
+ deMorgan,
23
+ depend,
24
+ noOnlyTests,
25
+ node,
26
+ oxlint,
27
+ perfectionist,
28
+ regexp,
29
+ security,
30
+ sonarjs,
31
+ unicorn
32
+ };
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/index.ts"],"sourcesContent":["export { a11y } from './a11y.js'\nexport { bestPractices } from './best-practices.js'\nexport { biome } from './biome.js'\nexport { boundaries } from './boundaries.js'\nexport { compat } from './compat.js'\nexport { deMorgan } from './de-morgan.js'\nexport { depend } from './depend.js'\nexport { noOnlyTests } from './no-only-tests.js'\nexport { node } from './node.js'\nexport { oxlint } from './oxlint.js'\nexport { perfectionist } from './perfectionist.js'\nexport { regexp } from './regexp.js'\nexport { security } from './security.js'\nexport { sonarjs } from './sonarjs.js'\nexport { unicorn } from './unicorn.js'\n"],"mappings":"AAAA,SAAS,YAAY;AACrB,SAAS,qBAAqB;AAC9B,SAAS,aAAa;AACtB,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AACvB,SAAS,gBAAgB;AACzB,SAAS,cAAc;AACvB,SAAS,mBAAmB;AAC5B,SAAS,YAAY;AACrB,SAAS,cAAc;AACvB,SAAS,qBAAqB;AAC9B,SAAS,cAAc;AACvB,SAAS,gBAAgB;AACzB,SAAS,eAAe;AACxB,SAAS,eAAe;","names":[]}
@@ -0,0 +1,9 @@
1
+ import { TSESLint } from '@typescript-eslint/utils';
2
+
3
+ /**
4
+ * Prevents `test.only` / `describe.only` from being committed to version
5
+ * control. Uses `eslint-plugin-no-only-tests`.
6
+ */
7
+ declare const noOnlyTests: () => Promise<TSESLint.FlatConfig.ConfigArray>;
8
+
9
+ export { noOnlyTests };
@@ -0,0 +1,21 @@
1
+ import { GLOB_JS_TS } from "@santi020k/eslint-config-core";
2
+ import { defineLazyConfig, loadModule } from "../lazy.js";
3
+ const noOnlyTests = defineLazyConfig("no-only-tests", async () => {
4
+ const plugin = (await loadModule("eslint-plugin-no-only-tests")).default;
5
+ return [
6
+ {
7
+ files: GLOB_JS_TS,
8
+ name: "eslint-config-integrations/no-only-tests",
9
+ plugins: {
10
+ "no-only-tests": plugin
11
+ },
12
+ rules: {
13
+ "no-only-tests/no-only-tests": "error"
14
+ }
15
+ }
16
+ ];
17
+ });
18
+ export {
19
+ noOnlyTests
20
+ };
21
+ //# sourceMappingURL=no-only-tests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/extensions/no-only-tests.ts"],"sourcesContent":["import { GLOB_JS_TS } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\n\nimport { defineLazyConfig, type FlatPlugin,loadModule } from '../lazy.js'\n\n/**\n * Prevents `test.only` / `describe.only` from being committed to version\n * control. Uses `eslint-plugin-no-only-tests`.\n */\nexport const noOnlyTests: () => Promise<TSESLint.FlatConfig.ConfigArray> = defineLazyConfig('no-only-tests', async () => {\n const plugin = (await loadModule<{ default: FlatPlugin }>('eslint-plugin-no-only-tests')).default\n\n return [\n {\n files: GLOB_JS_TS,\n name: 'eslint-config-integrations/no-only-tests',\n plugins: {\n 'no-only-tests': plugin\n },\n rules: {\n 'no-only-tests/no-only-tests': 'error'\n }\n }\n ]\n})\n"],"mappings":"AAAA,SAAS,kBAAkB;AAI3B,SAAS,kBAAkC,kBAAkB;AAMtD,MAAM,cAA8D,iBAAiB,iBAAiB,YAAY;AACvH,QAAM,UAAU,MAAM,WAAoC,6BAA6B,GAAG;AAE1F,SAAO;AAAA,IACL;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,QACP,iBAAiB;AAAA,MACnB;AAAA,MACA,OAAO;AAAA,QACL,+BAA+B;AAAA,MACjC;AAAA,IACF;AAAA,EACF;AACF,CAAC;","names":[]}
@@ -0,0 +1,11 @@
1
+ import { TSESLint } from '@typescript-eslint/utils';
2
+
3
+ /**
4
+ * Node.js extension configuration
5
+ * Applies `eslint-plugin-n` recommended rules for Node.js codebases.
6
+ * Module-resolution rules are disabled for TypeScript files where the
7
+ * TypeScript compiler already validates imports.
8
+ */
9
+ declare const node: () => Promise<TSESLint.FlatConfig.ConfigArray>;
10
+
11
+ export { node };