@santi020k/eslint-config-libraries 3.1.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.
- package/LICENSE +21 -0
- package/README.md +11 -0
- package/dist/ai.d.ts +8 -0
- package/dist/ai.js +29 -0
- package/dist/ai.js.map +1 -0
- package/dist/autogen.d.ts +8 -0
- package/dist/autogen.js +24 -0
- package/dist/autogen.js.map +1 -0
- package/dist/google-genai.d.ts +8 -0
- package/dist/google-genai.js +30 -0
- package/dist/google-genai.js.map +1 -0
- package/dist/i18next.d.ts +9 -0
- package/dist/i18next.js +26 -0
- package/dist/i18next.js.map +1 -0
- package/dist/index.d.ts +19 -0
- package/dist/index.js +42 -0
- package/dist/index.js.map +1 -0
- package/dist/langchain.d.ts +8 -0
- package/dist/langchain.js +30 -0
- package/dist/langchain.js.map +1 -0
- package/dist/lazy.d.ts +24 -0
- package/dist/lazy.js +46 -0
- package/dist/lazy.js.map +1 -0
- package/dist/llamaindex.d.ts +8 -0
- package/dist/llamaindex.js +30 -0
- package/dist/llamaindex.js.map +1 -0
- package/dist/mastra.d.ts +8 -0
- package/dist/mastra.js +30 -0
- package/dist/mastra.js.map +1 -0
- package/dist/mcp.d.ts +8 -0
- package/dist/mcp.js +33 -0
- package/dist/mcp.js.map +1 -0
- package/dist/openai-agents.d.ts +8 -0
- package/dist/openai-agents.js +32 -0
- package/dist/openai-agents.js.map +1 -0
- package/dist/orm.d.ts +31 -0
- package/dist/orm.js +104 -0
- package/dist/orm.js.map +1 -0
- package/dist/registry.d.ts +5 -0
- package/dist/registry.js +43 -0
- package/dist/registry.js.map +1 -0
- package/dist/stencil.d.ts +9 -0
- package/dist/stencil.js +48 -0
- package/dist/stencil.js.map +1 -0
- package/dist/storybook.d.ts +9 -0
- package/dist/storybook.js +11 -0
- package/dist/storybook.js.map +1 -0
- package/dist/tailwind.d.ts +9 -0
- package/dist/tailwind.js +21 -0
- package/dist/tailwind.js.map +1 -0
- package/dist/tanstack.d.ts +12 -0
- package/dist/tanstack.js +37 -0
- package/dist/tanstack.js.map +1 -0
- package/dist/turbo.d.ts +9 -0
- package/dist/turbo.js +25 -0
- package/dist/turbo.js.map +1 -0
- package/dist/zod.d.ts +9 -0
- package/dist/zod.js +21 -0
- package/dist/zod.js.map +1 -0
- package/package.json +90 -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-libraries
|
|
2
|
+
|
|
3
|
+
Library-specific rules for Tailwind, Storybook, AI SDKs, ORMs, and related ecosystems.
|
|
4
|
+
|
|
5
|
+
This package is part of the [`@santi020k/eslint-config-basic`](https://github.com/santi020k/eslint-config-basic) monorepo.
|
|
6
|
+
|
|
7
|
+
- Docs: [Libraries](https://eslint.santi020k.com/tooling/libraries)
|
|
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.
|
package/dist/ai.d.ts
ADDED
package/dist/ai.js
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { GLOB_JS_TS_ALL } from "@santi020k/eslint-config-core";
|
|
2
|
+
import { defineLazyConfig, loadModule } from "./lazy.js";
|
|
3
|
+
const hasRecommendedConfig = (value) => typeof value === "object" && value !== null && "configs" in value && typeof value.configs.recommended === "object";
|
|
4
|
+
const resolveAiSecurityPlugin = (module) => {
|
|
5
|
+
if (hasRecommendedConfig(module)) return module;
|
|
6
|
+
const candidate = module;
|
|
7
|
+
if (hasRecommendedConfig(candidate.default)) return candidate.default;
|
|
8
|
+
if (hasRecommendedConfig(candidate.plugin)) return candidate.plugin;
|
|
9
|
+
throw new Error("eslint-plugin-vercel-ai-security did not expose a recommended config.");
|
|
10
|
+
};
|
|
11
|
+
const aiSdk = defineLazyConfig("ai-sdk", async () => {
|
|
12
|
+
const plugin = resolveAiSecurityPlugin(await loadModule("eslint-plugin-vercel-ai-security"));
|
|
13
|
+
return [
|
|
14
|
+
{
|
|
15
|
+
files: GLOB_JS_TS_ALL,
|
|
16
|
+
name: "eslint-config-integrations/ai-sdk",
|
|
17
|
+
plugins: {
|
|
18
|
+
"vercel-ai-security": plugin
|
|
19
|
+
},
|
|
20
|
+
rules: {
|
|
21
|
+
...plugin.configs.recommended.rules
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
];
|
|
25
|
+
});
|
|
26
|
+
export {
|
|
27
|
+
aiSdk
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=ai.js.map
|
package/dist/ai.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/ai.ts"],"sourcesContent":["import { GLOB_JS_TS_ALL } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\n\nimport { defineLazyConfig, loadModule, type PluginWithConfigs } from './lazy.js'\n\ntype AiSecurityPlugin = PluginWithConfigs<'recommended'> & {\n plugin?: PluginWithConfigs<'recommended'>\n}\n\nconst hasRecommendedConfig = (value: unknown): value is PluginWithConfigs<'recommended'> => (\n typeof value === 'object' &&\n value !== null &&\n 'configs' in value &&\n typeof (value as PluginWithConfigs<'recommended'>).configs.recommended === 'object'\n)\n\nconst resolveAiSecurityPlugin = (module: unknown): PluginWithConfigs<'recommended'> => {\n if (hasRecommendedConfig(module)) return module\n\n const candidate = module as AiSecurityPlugin & { default?: unknown }\n\n if (hasRecommendedConfig(candidate.default)) return candidate.default\n\n if (hasRecommendedConfig(candidate.plugin)) return candidate.plugin\n\n throw new Error('eslint-plugin-vercel-ai-security did not expose a recommended config.')\n}\n\n/**\n * Vercel AI SDK security ESLint configuration.\n */\nexport const aiSdk: () => Promise<TSESLint.FlatConfig.ConfigArray> = defineLazyConfig('ai-sdk', async () => {\n const plugin = resolveAiSecurityPlugin(await loadModule('eslint-plugin-vercel-ai-security'))\n\n return [\n {\n files: GLOB_JS_TS_ALL,\n name: 'eslint-config-integrations/ai-sdk',\n plugins: {\n 'vercel-ai-security': plugin\n },\n rules: {\n ...plugin.configs.recommended.rules\n }\n }\n ]\n})\n"],"mappings":"AAAA,SAAS,sBAAsB;AAI/B,SAAS,kBAAkB,kBAA0C;AAMrE,MAAM,uBAAuB,CAAC,UAC5B,OAAO,UAAU,YACjB,UAAU,QACV,aAAa,SACb,OAAQ,MAA2C,QAAQ,gBAAgB;AAG7E,MAAM,0BAA0B,CAAC,WAAsD;AACrF,MAAI,qBAAqB,MAAM,EAAG,QAAO;AAEzC,QAAM,YAAY;AAElB,MAAI,qBAAqB,UAAU,OAAO,EAAG,QAAO,UAAU;AAE9D,MAAI,qBAAqB,UAAU,MAAM,EAAG,QAAO,UAAU;AAE7D,QAAM,IAAI,MAAM,uEAAuE;AACzF;AAKO,MAAM,QAAwD,iBAAiB,UAAU,YAAY;AAC1G,QAAM,SAAS,wBAAwB,MAAM,WAAW,kCAAkC,CAAC;AAE3F,SAAO;AAAA,IACL;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,QACP,sBAAsB;AAAA,MACxB;AAAA,MACA,OAAO;AAAA,QACL,GAAG,OAAO,QAAQ,YAAY;AAAA,MAChC;AAAA,IACF;AAAA,EACF;AACF,CAAC;","names":[]}
|
package/dist/autogen.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { GLOB_JS_TS_ALL } from "@santi020k/eslint-config-core";
|
|
2
|
+
const autogen = () => [
|
|
3
|
+
{
|
|
4
|
+
files: GLOB_JS_TS_ALL,
|
|
5
|
+
name: "eslint-config-integrations/autogen",
|
|
6
|
+
rules: {
|
|
7
|
+
"no-restricted-imports": ["error", {
|
|
8
|
+
patterns: [
|
|
9
|
+
{
|
|
10
|
+
group: [
|
|
11
|
+
"autogen-agentchat/dist/*",
|
|
12
|
+
"autogen-core/dist/*"
|
|
13
|
+
],
|
|
14
|
+
message: "Import AutoGen APIs from their designated package entry points instead of internals."
|
|
15
|
+
}
|
|
16
|
+
]
|
|
17
|
+
}]
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
];
|
|
21
|
+
export {
|
|
22
|
+
autogen
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=autogen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/autogen.ts"],"sourcesContent":["import { GLOB_JS_TS_ALL } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\n\n/**\n * AutoGen SDK ESLint configuration.\n */\nexport const autogen = (): TSESLint.FlatConfig.ConfigArray => [\n {\n files: GLOB_JS_TS_ALL,\n name: 'eslint-config-integrations/autogen',\n rules: {\n 'no-restricted-imports': ['error', {\n patterns: [\n {\n group: [\n 'autogen-agentchat/dist/*',\n 'autogen-core/dist/*'\n ],\n message: 'Import AutoGen APIs from their designated package entry points instead of internals.'\n }\n ]\n }]\n }\n }\n]\n"],"mappings":"AAAA,SAAS,sBAAsB;AAOxB,MAAM,UAAU,MAAuC;AAAA,EAC5D;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,MACL,yBAAyB,CAAC,SAAS;AAAA,QACjC,UAAU;AAAA,UACR;AAAA,YACE,OAAO;AAAA,cACL;AAAA,cACA;AAAA,YACF;AAAA,YACA,SAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { GLOB_JS_TS_ALL } from "@santi020k/eslint-config-core";
|
|
2
|
+
const googleGenAi = () => [
|
|
3
|
+
{
|
|
4
|
+
files: GLOB_JS_TS_ALL,
|
|
5
|
+
name: "eslint-config-integrations/google-genai",
|
|
6
|
+
rules: {
|
|
7
|
+
"no-restricted-imports": ["error", {
|
|
8
|
+
paths: [
|
|
9
|
+
{
|
|
10
|
+
message: "Use the new @google/genai SDK instead of the legacy @google/generative-ai SDK.",
|
|
11
|
+
name: "@google/generative-ai"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
patterns: [
|
|
15
|
+
{
|
|
16
|
+
group: [
|
|
17
|
+
"@google/genai/dist/*",
|
|
18
|
+
"@google/genai/src/*"
|
|
19
|
+
],
|
|
20
|
+
message: 'Import Google GenAI SDK APIs directly from "@google/genai" instead of internals.'
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}]
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
];
|
|
27
|
+
export {
|
|
28
|
+
googleGenAi
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=google-genai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/google-genai.ts"],"sourcesContent":["import { GLOB_JS_TS_ALL } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\n\n/**\n * Google GenAI SDK ESLint configuration.\n */\nexport const googleGenAi = (): TSESLint.FlatConfig.ConfigArray => [\n {\n files: GLOB_JS_TS_ALL,\n name: 'eslint-config-integrations/google-genai',\n rules: {\n 'no-restricted-imports': ['error', {\n paths: [\n {\n message: 'Use the new @google/genai SDK instead of the legacy @google/generative-ai SDK.',\n name: '@google/generative-ai'\n }\n ],\n patterns: [\n {\n group: [\n '@google/genai/dist/*',\n '@google/genai/src/*'\n ],\n message: 'Import Google GenAI SDK APIs directly from \"@google/genai\" instead of internals.'\n }\n ]\n }]\n }\n }\n]\n"],"mappings":"AAAA,SAAS,sBAAsB;AAOxB,MAAM,cAAc,MAAuC;AAAA,EAChE;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,MACL,yBAAyB,CAAC,SAAS;AAAA,QACjC,OAAO;AAAA,UACL;AAAA,YACE,SAAS;AAAA,YACT,MAAM;AAAA,UACR;AAAA,QACF;AAAA,QACA,UAAU;AAAA,UACR;AAAA,YACE,OAAO;AAAA,cACL;AAAA,cACA;AAAA,YACF;AAAA,YACA,SAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;","names":[]}
|
package/dist/i18next.js
ADDED
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { GLOB_JS_TS_ALL } from "@santi020k/eslint-config-core";
|
|
2
|
+
import { defineLazyConfig, loadDefault } from "./lazy.js";
|
|
3
|
+
const i18next = defineLazyConfig("i18next", async () => {
|
|
4
|
+
const pluginI18next = await loadDefault("eslint-plugin-i18next");
|
|
5
|
+
return [
|
|
6
|
+
{
|
|
7
|
+
files: GLOB_JS_TS_ALL,
|
|
8
|
+
name: "integrations/i18next",
|
|
9
|
+
plugins: {
|
|
10
|
+
i18next: pluginI18next
|
|
11
|
+
},
|
|
12
|
+
rules: {
|
|
13
|
+
"i18next/no-literal-string": ["warn", {
|
|
14
|
+
"jsx-attributes": {
|
|
15
|
+
include: ["label", "placeholder", "alt", "title", "aria-label"]
|
|
16
|
+
},
|
|
17
|
+
mode: "jsx-text-only"
|
|
18
|
+
}]
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
];
|
|
22
|
+
});
|
|
23
|
+
export {
|
|
24
|
+
i18next
|
|
25
|
+
};
|
|
26
|
+
//# sourceMappingURL=i18next.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/i18next.ts"],"sourcesContent":["import { GLOB_JS_TS_ALL } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\nimport type PluginI18next from 'eslint-plugin-i18next'\n\nimport { defineLazyConfig, loadDefault } from './lazy.js'\n\n/**\n * i18next ESLint configuration\n * Enables i18next plugin for internationalization best practices\n */\nexport const i18next: () => Promise<TSESLint.FlatConfig.ConfigArray> = defineLazyConfig('i18next', async () => {\n const pluginI18next = await loadDefault<typeof PluginI18next>('eslint-plugin-i18next')\n\n return [\n {\n files: GLOB_JS_TS_ALL,\n name: 'integrations/i18next',\n plugins: {\n i18next: pluginI18next\n },\n rules: {\n 'i18next/no-literal-string': ['warn', {\n 'jsx-attributes': {\n include: ['label', 'placeholder', 'alt', 'title', 'aria-label']\n },\n mode: 'jsx-text-only'\n }]\n }\n }\n ]\n})\n"],"mappings":"AAAA,SAAS,sBAAsB;AAK/B,SAAS,kBAAkB,mBAAmB;AAMvC,MAAM,UAA0D,iBAAiB,WAAW,YAAY;AAC7G,QAAM,gBAAgB,MAAM,YAAkC,uBAAuB;AAErF,SAAO;AAAA,IACL;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,QACP,SAAS;AAAA,MACX;AAAA,MACA,OAAO;AAAA,QACL,6BAA6B,CAAC,QAAQ;AAAA,UACpC,kBAAkB;AAAA,YAChB,SAAS,CAAC,SAAS,eAAe,OAAO,SAAS,YAAY;AAAA,UAChE;AAAA,UACA,MAAM;AAAA,QACR,CAAC;AAAA,MACH;AAAA,IACF;AAAA,EACF;AACF,CAAC;","names":[]}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export { aiSdk } from './ai.js';
|
|
2
|
+
export { autogen } from './autogen.js';
|
|
3
|
+
export { googleGenAi } from './google-genai.js';
|
|
4
|
+
export { i18next } from './i18next.js';
|
|
5
|
+
export { langchain } from './langchain.js';
|
|
6
|
+
export { llamaIndex } from './llamaindex.js';
|
|
7
|
+
export { mastra } from './mastra.js';
|
|
8
|
+
export { mcp } from './mcp.js';
|
|
9
|
+
export { openAiAgents } from './openai-agents.js';
|
|
10
|
+
export { drizzle, mikroOrm, prisma, sequelize, typeorm } from './orm.js';
|
|
11
|
+
export { features as libraryFeatures } from './registry.js';
|
|
12
|
+
export { stencil } from './stencil.js';
|
|
13
|
+
export { storybook } from './storybook.js';
|
|
14
|
+
export { tailwind } from './tailwind.js';
|
|
15
|
+
export { tanstackQuery, tanstackRouter } from './tanstack.js';
|
|
16
|
+
export { turbo } from './turbo.js';
|
|
17
|
+
export { zod } from './zod.js';
|
|
18
|
+
import '@typescript-eslint/utils';
|
|
19
|
+
import '@santi020k/eslint-config-core';
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { aiSdk } from "./ai.js";
|
|
2
|
+
import { autogen } from "./autogen.js";
|
|
3
|
+
import { googleGenAi } from "./google-genai.js";
|
|
4
|
+
import { i18next } from "./i18next.js";
|
|
5
|
+
import { langchain } from "./langchain.js";
|
|
6
|
+
import { llamaIndex } from "./llamaindex.js";
|
|
7
|
+
import { mastra } from "./mastra.js";
|
|
8
|
+
import { mcp } from "./mcp.js";
|
|
9
|
+
import { openAiAgents } from "./openai-agents.js";
|
|
10
|
+
import { drizzle, mikroOrm, prisma, sequelize, typeorm } from "./orm.js";
|
|
11
|
+
import { features } from "./registry.js";
|
|
12
|
+
import { stencil } from "./stencil.js";
|
|
13
|
+
import { storybook } from "./storybook.js";
|
|
14
|
+
import { tailwind } from "./tailwind.js";
|
|
15
|
+
import { tanstackQuery, tanstackRouter } from "./tanstack.js";
|
|
16
|
+
import { turbo } from "./turbo.js";
|
|
17
|
+
import { zod } from "./zod.js";
|
|
18
|
+
export {
|
|
19
|
+
aiSdk,
|
|
20
|
+
autogen,
|
|
21
|
+
drizzle,
|
|
22
|
+
googleGenAi,
|
|
23
|
+
i18next,
|
|
24
|
+
langchain,
|
|
25
|
+
features as libraryFeatures,
|
|
26
|
+
llamaIndex,
|
|
27
|
+
mastra,
|
|
28
|
+
mcp,
|
|
29
|
+
mikroOrm,
|
|
30
|
+
openAiAgents,
|
|
31
|
+
prisma,
|
|
32
|
+
sequelize,
|
|
33
|
+
stencil,
|
|
34
|
+
storybook,
|
|
35
|
+
tailwind,
|
|
36
|
+
tanstackQuery,
|
|
37
|
+
tanstackRouter,
|
|
38
|
+
turbo,
|
|
39
|
+
typeorm,
|
|
40
|
+
zod
|
|
41
|
+
};
|
|
42
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/index.ts"],"sourcesContent":["export { aiSdk } from './ai.js'\nexport { autogen } from './autogen.js'\nexport { googleGenAi } from './google-genai.js'\nexport { i18next } from './i18next.js'\nexport { langchain } from './langchain.js'\nexport { llamaIndex } from './llamaindex.js'\nexport { mastra } from './mastra.js'\nexport { mcp } from './mcp.js'\nexport { openAiAgents } from './openai-agents.js'\nexport { drizzle, mikroOrm, prisma, sequelize, typeorm } from './orm.js'\nexport { features as libraryFeatures } from './registry.js'\nexport { stencil } from './stencil.js'\nexport { storybook } from './storybook.js'\nexport { tailwind } from './tailwind.js'\nexport { tanstackQuery, tanstackRouter } from './tanstack.js'\nexport { turbo } from './turbo.js'\nexport { zod } from './zod.js'\n"],"mappings":"AAAA,SAAS,aAAa;AACtB,SAAS,eAAe;AACxB,SAAS,mBAAmB;AAC5B,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AACvB,SAAS,WAAW;AACpB,SAAS,oBAAoB;AAC7B,SAAS,SAAS,UAAU,QAAQ,WAAW,eAAe;AAC9D,SAAqB,gBAAuB;AAC5C,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAC1B,SAAS,gBAAgB;AACzB,SAAS,eAAe,sBAAsB;AAC9C,SAAS,aAAa;AACtB,SAAS,WAAW;","names":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { GLOB_JS_TS_ALL } from "@santi020k/eslint-config-core";
|
|
2
|
+
const langchain = () => [
|
|
3
|
+
{
|
|
4
|
+
files: GLOB_JS_TS_ALL,
|
|
5
|
+
name: "eslint-config-integrations/langchain",
|
|
6
|
+
rules: {
|
|
7
|
+
"no-restricted-imports": ["error", {
|
|
8
|
+
patterns: [
|
|
9
|
+
{
|
|
10
|
+
group: [
|
|
11
|
+
"langchain/dist/*",
|
|
12
|
+
"langchain/dist/**",
|
|
13
|
+
"langchain/src/*",
|
|
14
|
+
"langchain/src/**",
|
|
15
|
+
"@langchain/*/dist/*",
|
|
16
|
+
"@langchain/*/dist/**",
|
|
17
|
+
"@langchain/*/src/*",
|
|
18
|
+
"@langchain/*/src/**"
|
|
19
|
+
],
|
|
20
|
+
message: 'Import LangChain APIs from documented package entry points (e.g. "@langchain/core/messages") instead of source or distribution internals.'
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}]
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
];
|
|
27
|
+
export {
|
|
28
|
+
langchain
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=langchain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/langchain.ts"],"sourcesContent":["import { GLOB_JS_TS_ALL } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\n\n/**\n * LangChain.js ESLint configuration.\n */\nexport const langchain = (): TSESLint.FlatConfig.ConfigArray => [\n {\n files: GLOB_JS_TS_ALL,\n name: 'eslint-config-integrations/langchain',\n rules: {\n 'no-restricted-imports': ['error', {\n patterns: [\n {\n group: [\n 'langchain/dist/*',\n 'langchain/dist/**',\n 'langchain/src/*',\n 'langchain/src/**',\n '@langchain/*/dist/*',\n '@langchain/*/dist/**',\n '@langchain/*/src/*',\n '@langchain/*/src/**'\n ],\n message: 'Import LangChain APIs from documented package entry points (e.g. \"@langchain/core/messages\") instead of source or distribution internals.'\n }\n ]\n }]\n }\n }\n]\n"],"mappings":"AAAA,SAAS,sBAAsB;AAOxB,MAAM,YAAY,MAAuC;AAAA,EAC9D;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,MACL,yBAAyB,CAAC,SAAS;AAAA,QACjC,UAAU;AAAA,UACR;AAAA,YACE,OAAO;AAAA,cACL;AAAA,cACA;AAAA,cACA;AAAA,cACA;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":[]}
|
package/dist/lazy.d.ts
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { TSESLint } from '@typescript-eslint/utils';
|
|
2
|
+
|
|
3
|
+
type ConfigWithRules = FlatConfig & {
|
|
4
|
+
rules?: FlatRules;
|
|
5
|
+
};
|
|
6
|
+
type FlatParser = NonNullable<FlatConfig['languageOptions']>['parser'];
|
|
7
|
+
type FlatPlugin = NonNullable<FlatConfig['plugins']>[string];
|
|
8
|
+
type FlatRules = NonNullable<FlatConfig['rules']>;
|
|
9
|
+
type PluginWithConfigs<ConfigName extends string = string> = FlatPlugin & {
|
|
10
|
+
configs: Record<ConfigName, ConfigWithRules>;
|
|
11
|
+
};
|
|
12
|
+
type ConfigArray = TSESLint.FlatConfig.ConfigArray;
|
|
13
|
+
type FlatConfig = TSESLint.FlatConfig.Config;
|
|
14
|
+
declare const loadDefault: <T = unknown>(specifier: string) => Promise<T>;
|
|
15
|
+
declare const loadModule: <T = unknown>(specifier: string) => Promise<T>;
|
|
16
|
+
/**
|
|
17
|
+
* Keeps optional integrations import-safe for consumers that do not enable them.
|
|
18
|
+
* @param name - The name of the integration
|
|
19
|
+
* @param load - Function to load the configuration
|
|
20
|
+
* @returns A function that resolves the configuration array lazily
|
|
21
|
+
*/
|
|
22
|
+
declare const defineLazyConfig: (name: string, load: () => ConfigArray | Promise<ConfigArray>) => () => Promise<ConfigArray>;
|
|
23
|
+
|
|
24
|
+
export { type ConfigWithRules, type FlatParser, type FlatPlugin, type FlatRules, type PluginWithConfigs, defineLazyConfig, loadDefault, loadModule };
|
package/dist/lazy.js
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import { pathToFileURL } from "node:url";
|
|
3
|
+
const getErrorMessage = (error) => error instanceof Error ? error.message : String(error);
|
|
4
|
+
const hasDefaultExport = (module) => typeof module === "object" && module !== null && "default" in module;
|
|
5
|
+
const isVitest = typeof process !== "undefined" && process.env.VITEST;
|
|
6
|
+
const dynamicImport = isVitest ? (specifier) => import(
|
|
7
|
+
/* @vite-ignore */
|
|
8
|
+
specifier
|
|
9
|
+
) : Reflect.construct(Function, ["specifier", "return import(specifier)"]);
|
|
10
|
+
const req = createRequire(import.meta.url);
|
|
11
|
+
const resolveSpecifier = (specifier) => {
|
|
12
|
+
let resolved = specifier;
|
|
13
|
+
try {
|
|
14
|
+
resolved = pathToFileURL(req.resolve(specifier)).href;
|
|
15
|
+
} catch {
|
|
16
|
+
}
|
|
17
|
+
return resolved;
|
|
18
|
+
};
|
|
19
|
+
const loadDefault = async (specifier) => {
|
|
20
|
+
const module = await dynamicImport(resolveSpecifier(specifier));
|
|
21
|
+
if (hasDefaultExport(module)) {
|
|
22
|
+
return module.default ?? module;
|
|
23
|
+
}
|
|
24
|
+
return module;
|
|
25
|
+
};
|
|
26
|
+
const loadModule = async (specifier) => await dynamicImport(resolveSpecifier(specifier));
|
|
27
|
+
const defineLazyConfig = (name, load) => {
|
|
28
|
+
let config;
|
|
29
|
+
return async () => {
|
|
30
|
+
try {
|
|
31
|
+
config ??= await load();
|
|
32
|
+
return config;
|
|
33
|
+
} catch (error) {
|
|
34
|
+
throw new Error(
|
|
35
|
+
`Unable to load optional ESLint config "${name}". Install the peer dependencies for that integration or remove it from your defineConfig options. Original error: ${getErrorMessage(error)}`,
|
|
36
|
+
{ cause: error }
|
|
37
|
+
);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
};
|
|
41
|
+
export {
|
|
42
|
+
defineLazyConfig,
|
|
43
|
+
loadDefault,
|
|
44
|
+
loadModule
|
|
45
|
+
};
|
|
46
|
+
//# sourceMappingURL=lazy.js.map
|
package/dist/lazy.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lazy.ts"],"sourcesContent":["import { createRequire } from 'node:module'\nimport { pathToFileURL } from 'node:url'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\n\nexport type ConfigWithRules = FlatConfig & { rules?: FlatRules }\n\nexport type FlatParser = NonNullable<FlatConfig['languageOptions']>['parser']\n\nexport type FlatPlugin = NonNullable<FlatConfig['plugins']>[string]\nexport type FlatRules = NonNullable<FlatConfig['rules']>\nexport type PluginWithConfigs<ConfigName extends string = string> = FlatPlugin & {\n configs: Record<ConfigName, ConfigWithRules>\n}\n\ntype ConfigArray = TSESLint.FlatConfig.ConfigArray\n\ntype FlatConfig = TSESLint.FlatConfig.Config\n\nconst getErrorMessage = (error: unknown): string => error instanceof Error ?\n error.message :\n String(error)\n\nconst hasDefaultExport = (module: unknown): module is { default?: unknown } => (\n typeof module === 'object' &&\n module !== null &&\n 'default' in module\n)\n\n// Bypass jiti/bundler transformation of import() to require().\n// Reflect.construct avoids a direct `new Function()` reference (which triggers\n// no-implied-eval) while achieving the same runtime behaviour: the string body\n// is opaque to static analyser so jiti cannot transform it to require().\n\nconst isVitest = typeof process !== 'undefined' && process.env.VITEST\n\n// v8 ignore next 3 -- Reflect.construct branch only runs outside Vitest; not reachable in test suite\nconst dynamicImport: (specifier: string) => Promise<unknown> = isVitest ?\n (specifier: string) => import(/* @vite-ignore */ specifier) :\n Reflect.construct(Function, ['specifier', 'return import(specifier)']) as (specifier: string) => Promise<unknown>\n\nconst req = createRequire(import.meta.url)\n\nconst resolveSpecifier = (specifier: string): string => {\n let resolved = specifier\n\n try {\n resolved = pathToFileURL(req.resolve(specifier)).href\n } catch {\n // Ignore and let dynamicImport throw natural error\n }\n\n return resolved\n}\n\nexport const loadDefault = async <T = unknown>(specifier: string): Promise<T> => {\n const module = await dynamicImport(resolveSpecifier(specifier))\n\n if (hasDefaultExport(module)) {\n return (module.default ?? module) as T\n }\n\n return module as T\n}\n\nexport const loadModule = async <T = unknown>(specifier: string): Promise<T> => await dynamicImport(resolveSpecifier(specifier)) as T\n\n/**\n * Keeps optional integrations import-safe for consumers that do not enable them.\n * @param name - The name of the integration\n * @param load - Function to load the configuration\n * @returns A function that resolves the configuration array lazily\n */\nexport const defineLazyConfig = (\n name: string,\n load: () => ConfigArray | Promise<ConfigArray>\n): () => Promise<ConfigArray> => {\n let config: ConfigArray | undefined\n\n return async (): Promise<ConfigArray> => {\n try {\n config ??= await load()\n\n return config\n } catch (error) {\n throw new Error(\n `Unable to load optional ESLint config \"${name}\". ` +\n 'Install the peer dependencies for that integration or remove it from your defineConfig options. ' +\n `Original error: ${getErrorMessage(error)}`, { cause: error }\n )\n }\n }\n}\n"],"mappings":"AAAA,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAkB9B,MAAM,kBAAkB,CAAC,UAA2B,iBAAiB,QACnE,MAAM,UACN,OAAO,KAAK;AAEd,MAAM,mBAAmB,CAAC,WACxB,OAAO,WAAW,YAClB,WAAW,QACX,aAAa;AAQf,MAAM,WAAW,OAAO,YAAY,eAAe,QAAQ,IAAI;AAG/D,MAAM,gBAAyD,WAC7D,CAAC,cAAsB;AAAA;AAAA,EAA0B;AAAA,IACjD,QAAQ,UAAU,UAAU,CAAC,aAAa,0BAA0B,CAAC;AAEvE,MAAM,MAAM,cAAc,YAAY,GAAG;AAEzC,MAAM,mBAAmB,CAAC,cAA8B;AACtD,MAAI,WAAW;AAEf,MAAI;AACF,eAAW,cAAc,IAAI,QAAQ,SAAS,CAAC,EAAE;AAAA,EACnD,QAAQ;AAAA,EAER;AAEA,SAAO;AACT;AAEO,MAAM,cAAc,OAAoB,cAAkC;AAC/E,QAAM,SAAS,MAAM,cAAc,iBAAiB,SAAS,CAAC;AAE9D,MAAI,iBAAiB,MAAM,GAAG;AAC5B,WAAQ,OAAO,WAAW;AAAA,EAC5B;AAEA,SAAO;AACT;AAEO,MAAM,aAAa,OAAoB,cAAkC,MAAM,cAAc,iBAAiB,SAAS,CAAC;AAQxH,MAAM,mBAAmB,CAC9B,MACA,SAC+B;AAC/B,MAAI;AAEJ,SAAO,YAAkC;AACvC,QAAI;AACF,iBAAW,MAAM,KAAK;AAEtB,aAAO;AAAA,IACT,SAAS,OAAO;AACd,YAAM,IAAI;AAAA,QACR,0CAA0C,IAAI,sHAE3B,gBAAgB,KAAK,CAAC;AAAA,QAAI,EAAE,OAAO,MAAM;AAAA,MAC9D;AAAA,IACF;AAAA,EACF;AACF;","names":[]}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { GLOB_JS_TS_ALL } from "@santi020k/eslint-config-core";
|
|
2
|
+
const llamaIndex = () => [
|
|
3
|
+
{
|
|
4
|
+
files: GLOB_JS_TS_ALL,
|
|
5
|
+
name: "eslint-config-integrations/llamaindex",
|
|
6
|
+
rules: {
|
|
7
|
+
"no-restricted-imports": ["error", {
|
|
8
|
+
patterns: [
|
|
9
|
+
{
|
|
10
|
+
group: [
|
|
11
|
+
"llamaindex/dist/*",
|
|
12
|
+
"llamaindex/dist/**",
|
|
13
|
+
"llamaindex/src/*",
|
|
14
|
+
"llamaindex/src/**",
|
|
15
|
+
"@llamaindex/*/dist/*",
|
|
16
|
+
"@llamaindex/*/dist/**",
|
|
17
|
+
"@llamaindex/*/src/*",
|
|
18
|
+
"@llamaindex/*/src/**"
|
|
19
|
+
],
|
|
20
|
+
message: 'Import LlamaIndex APIs from documented package entry points (e.g. "llamaindex" or "@llamaindex/core") instead of source or distribution internals.'
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}]
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
];
|
|
27
|
+
export {
|
|
28
|
+
llamaIndex
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=llamaindex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/llamaindex.ts"],"sourcesContent":["import { GLOB_JS_TS_ALL } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\n\n/**\n * LlamaIndex.TS ESLint configuration.\n */\nexport const llamaIndex = (): TSESLint.FlatConfig.ConfigArray => [\n {\n files: GLOB_JS_TS_ALL,\n name: 'eslint-config-integrations/llamaindex',\n rules: {\n 'no-restricted-imports': ['error', {\n patterns: [\n {\n group: [\n 'llamaindex/dist/*',\n 'llamaindex/dist/**',\n 'llamaindex/src/*',\n 'llamaindex/src/**',\n '@llamaindex/*/dist/*',\n '@llamaindex/*/dist/**',\n '@llamaindex/*/src/*',\n '@llamaindex/*/src/**'\n ],\n message: 'Import LlamaIndex APIs from documented package entry points (e.g. \"llamaindex\" or \"@llamaindex/core\") instead of source or distribution internals.'\n }\n ]\n }]\n }\n }\n]\n"],"mappings":"AAAA,SAAS,sBAAsB;AAOxB,MAAM,aAAa,MAAuC;AAAA,EAC/D;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,MACL,yBAAyB,CAAC,SAAS;AAAA,QACjC,UAAU;AAAA,UACR;AAAA,YACE,OAAO;AAAA,cACL;AAAA,cACA;AAAA,cACA;AAAA,cACA;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":[]}
|
package/dist/mastra.d.ts
ADDED
package/dist/mastra.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { GLOB_JS_TS_ALL } from "@santi020k/eslint-config-core";
|
|
2
|
+
const mastra = () => [
|
|
3
|
+
{
|
|
4
|
+
files: GLOB_JS_TS_ALL,
|
|
5
|
+
name: "eslint-config-integrations/mastra",
|
|
6
|
+
rules: {
|
|
7
|
+
"no-restricted-imports": ["error", {
|
|
8
|
+
patterns: [
|
|
9
|
+
{
|
|
10
|
+
group: [
|
|
11
|
+
"@mastra/*/dist/*",
|
|
12
|
+
"@mastra/*/dist/**",
|
|
13
|
+
"@mastra/*/src/*",
|
|
14
|
+
"@mastra/*/src/**",
|
|
15
|
+
"@mastra/core/dist/*",
|
|
16
|
+
"@mastra/core/dist/**",
|
|
17
|
+
"@mastra/core/src/*",
|
|
18
|
+
"@mastra/core/src/**"
|
|
19
|
+
],
|
|
20
|
+
message: "Import Mastra APIs from documented package entry points instead of source or distribution internals."
|
|
21
|
+
}
|
|
22
|
+
]
|
|
23
|
+
}]
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
];
|
|
27
|
+
export {
|
|
28
|
+
mastra
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=mastra.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/mastra.ts"],"sourcesContent":["import { GLOB_JS_TS_ALL } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\n\n/**\n * Mastra agent framework ESLint configuration.\n */\nexport const mastra = (): TSESLint.FlatConfig.ConfigArray => [\n {\n files: GLOB_JS_TS_ALL,\n name: 'eslint-config-integrations/mastra',\n rules: {\n 'no-restricted-imports': ['error', {\n patterns: [\n {\n group: [\n '@mastra/*/dist/*',\n '@mastra/*/dist/**',\n '@mastra/*/src/*',\n '@mastra/*/src/**',\n '@mastra/core/dist/*',\n '@mastra/core/dist/**',\n '@mastra/core/src/*',\n '@mastra/core/src/**'\n ],\n message: 'Import Mastra APIs from documented package entry points instead of source or distribution internals.'\n }\n ]\n }]\n }\n }\n]\n"],"mappings":"AAAA,SAAS,sBAAsB;AAOxB,MAAM,SAAS,MAAuC;AAAA,EAC3D;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,MACL,yBAAyB,CAAC,SAAS;AAAA,QACjC,UAAU;AAAA,UACR;AAAA,YACE,OAAO;AAAA,cACL;AAAA,cACA;AAAA,cACA;AAAA,cACA;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":[]}
|
package/dist/mcp.d.ts
ADDED
package/dist/mcp.js
ADDED
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { GLOB_JS_TS_ALL } from "@santi020k/eslint-config-core";
|
|
2
|
+
const mcp = () => [
|
|
3
|
+
{
|
|
4
|
+
files: GLOB_JS_TS_ALL,
|
|
5
|
+
name: "eslint-config-integrations/mcp",
|
|
6
|
+
rules: {
|
|
7
|
+
"no-restricted-imports": ["error", {
|
|
8
|
+
paths: [
|
|
9
|
+
{
|
|
10
|
+
importNames: ["McpServer"],
|
|
11
|
+
message: 'Import McpServer from "@modelcontextprotocol/sdk/server/mcp.js" so server code stays on the public SDK entry point.',
|
|
12
|
+
name: "@modelcontextprotocol/sdk"
|
|
13
|
+
}
|
|
14
|
+
],
|
|
15
|
+
patterns: [
|
|
16
|
+
{
|
|
17
|
+
group: [
|
|
18
|
+
"@modelcontextprotocol/sdk/dist/*",
|
|
19
|
+
"@modelcontextprotocol/sdk/dist/**",
|
|
20
|
+
"@modelcontextprotocol/sdk/shared/*",
|
|
21
|
+
"@modelcontextprotocol/sdk/shared/**"
|
|
22
|
+
],
|
|
23
|
+
message: "Import MCP SDK APIs from documented server, client, or types entry points instead of internal package modules."
|
|
24
|
+
}
|
|
25
|
+
]
|
|
26
|
+
}]
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
];
|
|
30
|
+
export {
|
|
31
|
+
mcp
|
|
32
|
+
};
|
|
33
|
+
//# sourceMappingURL=mcp.js.map
|
package/dist/mcp.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/mcp.ts"],"sourcesContent":["import { GLOB_JS_TS_ALL } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\n\n/**\n * Model Context Protocol SDK ESLint configuration.\n */\nexport const mcp = (): TSESLint.FlatConfig.ConfigArray => [\n {\n files: GLOB_JS_TS_ALL,\n name: 'eslint-config-integrations/mcp',\n rules: {\n 'no-restricted-imports': ['error', {\n paths: [\n {\n importNames: ['McpServer'],\n message: 'Import McpServer from \"@modelcontextprotocol/sdk/server/mcp.js\" so server code stays on the public SDK entry point.',\n name: '@modelcontextprotocol/sdk'\n }\n ],\n patterns: [\n {\n group: [\n '@modelcontextprotocol/sdk/dist/*',\n '@modelcontextprotocol/sdk/dist/**',\n '@modelcontextprotocol/sdk/shared/*',\n '@modelcontextprotocol/sdk/shared/**'\n ],\n message: 'Import MCP SDK APIs from documented server, client, or types entry points instead of internal package modules.'\n }\n ]\n }]\n }\n }\n]\n"],"mappings":"AAAA,SAAS,sBAAsB;AAOxB,MAAM,MAAM,MAAuC;AAAA,EACxD;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,MACL,yBAAyB,CAAC,SAAS;AAAA,QACjC,OAAO;AAAA,UACL;AAAA,YACE,aAAa,CAAC,WAAW;AAAA,YACzB,SAAS;AAAA,YACT,MAAM;AAAA,UACR;AAAA,QACF;AAAA,QACA,UAAU;AAAA,UACR;AAAA,YACE,OAAO;AAAA,cACL;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,32 @@
|
|
|
1
|
+
import { GLOB_JS_TS_ALL } from "@santi020k/eslint-config-core";
|
|
2
|
+
const openAiAgents = () => [
|
|
3
|
+
{
|
|
4
|
+
files: GLOB_JS_TS_ALL,
|
|
5
|
+
name: "eslint-config-integrations/openai-agents",
|
|
6
|
+
rules: {
|
|
7
|
+
"no-restricted-imports": ["error", {
|
|
8
|
+
paths: [
|
|
9
|
+
{
|
|
10
|
+
message: 'Use the dedicated "@openai/agents" SDK for agent workflows instead of importing agents from the base OpenAI client.',
|
|
11
|
+
name: "openai/agents"
|
|
12
|
+
}
|
|
13
|
+
],
|
|
14
|
+
patterns: [
|
|
15
|
+
{
|
|
16
|
+
group: [
|
|
17
|
+
"@openai/agents/dist/*",
|
|
18
|
+
"@openai/agents/dist/**",
|
|
19
|
+
"@openai/agents/src/*",
|
|
20
|
+
"@openai/agents/src/**"
|
|
21
|
+
],
|
|
22
|
+
message: 'Import OpenAI Agents SDK APIs from "@openai/agents" or documented subpath entry points instead of internals.'
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
}]
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
];
|
|
29
|
+
export {
|
|
30
|
+
openAiAgents
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=openai-agents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/openai-agents.ts"],"sourcesContent":["import { GLOB_JS_TS_ALL } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\n\n/**\n * OpenAI Agents SDK ESLint configuration.\n */\nexport const openAiAgents = (): TSESLint.FlatConfig.ConfigArray => [\n {\n files: GLOB_JS_TS_ALL,\n name: 'eslint-config-integrations/openai-agents',\n rules: {\n 'no-restricted-imports': ['error', {\n paths: [\n {\n message: 'Use the dedicated \"@openai/agents\" SDK for agent workflows instead of importing agents from the base OpenAI client.',\n name: 'openai/agents'\n }\n ],\n patterns: [\n {\n group: [\n '@openai/agents/dist/*',\n '@openai/agents/dist/**',\n '@openai/agents/src/*',\n '@openai/agents/src/**'\n ],\n message: 'Import OpenAI Agents SDK APIs from \"@openai/agents\" or documented subpath entry points instead of internals.'\n }\n ]\n }]\n }\n }\n]\n"],"mappings":"AAAA,SAAS,sBAAsB;AAOxB,MAAM,eAAe,MAAuC;AAAA,EACjE;AAAA,IACE,OAAO;AAAA,IACP,MAAM;AAAA,IACN,OAAO;AAAA,MACL,yBAAyB,CAAC,SAAS;AAAA,QACjC,OAAO;AAAA,UACL;AAAA,YACE,SAAS;AAAA,YACT,MAAM;AAAA,UACR;AAAA,QACF;AAAA,QACA,UAAU;AAAA,UACR;AAAA,YACE,OAAO;AAAA,cACL;AAAA,cACA;AAAA,cACA;AAAA,cACA;AAAA,YACF;AAAA,YACA,SAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF,CAAC;AAAA,IACH;AAAA,EACF;AACF;","names":[]}
|
package/dist/orm.d.ts
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { TSESLint } from '@typescript-eslint/utils';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* TypeORM ESLint configuration.
|
|
5
|
+
*
|
|
6
|
+
* TypeORM does not currently provide an ESLint 10-ready recommended flat
|
|
7
|
+
* config. This integration focuses on stable imports and avoids legacy global
|
|
8
|
+
* helpers that make migrations and tests harder to reason about.
|
|
9
|
+
*/
|
|
10
|
+
declare const typeorm: () => TSESLint.FlatConfig.ConfigArray;
|
|
11
|
+
/**
|
|
12
|
+
* Prisma ESLint configuration.
|
|
13
|
+
*
|
|
14
|
+
* Keeps Prisma Client usage on public package entry points. This avoids runtime
|
|
15
|
+
* internals that frequently change between generated client versions.
|
|
16
|
+
*/
|
|
17
|
+
declare const prisma: () => TSESLint.FlatConfig.ConfigArray;
|
|
18
|
+
/**
|
|
19
|
+
* Drizzle ORM ESLint configuration.
|
|
20
|
+
*/
|
|
21
|
+
declare const drizzle: () => TSESLint.FlatConfig.ConfigArray;
|
|
22
|
+
/**
|
|
23
|
+
* MikroORM ESLint configuration.
|
|
24
|
+
*/
|
|
25
|
+
declare const mikroOrm: () => TSESLint.FlatConfig.ConfigArray;
|
|
26
|
+
/**
|
|
27
|
+
* Sequelize ESLint configuration.
|
|
28
|
+
*/
|
|
29
|
+
declare const sequelize: () => TSESLint.FlatConfig.ConfigArray;
|
|
30
|
+
|
|
31
|
+
export { drizzle, mikroOrm, prisma, sequelize, typeorm };
|
package/dist/orm.js
ADDED
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { GLOB_JS_TS_ALL } from "@santi020k/eslint-config-core";
|
|
2
|
+
const createOrmConfig = (ormName, rules) => [
|
|
3
|
+
{
|
|
4
|
+
files: GLOB_JS_TS_ALL,
|
|
5
|
+
name: `eslint-config-integrations/${ormName}`,
|
|
6
|
+
rules
|
|
7
|
+
}
|
|
8
|
+
];
|
|
9
|
+
const typeorm = () => createOrmConfig("typeorm", {
|
|
10
|
+
"no-restricted-imports": ["error", {
|
|
11
|
+
paths: [
|
|
12
|
+
{
|
|
13
|
+
importNames: [
|
|
14
|
+
"getConnection",
|
|
15
|
+
"getManager",
|
|
16
|
+
"getMongoManager",
|
|
17
|
+
"getMongoRepository",
|
|
18
|
+
"getRepository",
|
|
19
|
+
"getTreeRepository"
|
|
20
|
+
],
|
|
21
|
+
message: "Prefer DataSource, EntityManager, or injected Repository instances over legacy TypeORM global helpers.",
|
|
22
|
+
name: "typeorm"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
message: 'Import TypeORM APIs from "typeorm" instead of the browser build.',
|
|
26
|
+
name: "typeorm/browser"
|
|
27
|
+
}
|
|
28
|
+
],
|
|
29
|
+
patterns: [
|
|
30
|
+
{
|
|
31
|
+
group: ["typeorm/*", "!typeorm/browser"],
|
|
32
|
+
message: 'Import public TypeORM APIs from "typeorm"; subpath imports can couple code to internal package layout.'
|
|
33
|
+
}
|
|
34
|
+
]
|
|
35
|
+
}]
|
|
36
|
+
});
|
|
37
|
+
const prisma = () => createOrmConfig("prisma", {
|
|
38
|
+
"no-restricted-imports": ["error", {
|
|
39
|
+
patterns: [
|
|
40
|
+
{
|
|
41
|
+
group: [
|
|
42
|
+
"@prisma/client/runtime",
|
|
43
|
+
"@prisma/client/runtime/*",
|
|
44
|
+
".prisma/client",
|
|
45
|
+
".prisma/client/*"
|
|
46
|
+
],
|
|
47
|
+
message: 'Import Prisma APIs from "@prisma/client"; generated runtime internals are not a stable application API.'
|
|
48
|
+
}
|
|
49
|
+
]
|
|
50
|
+
}]
|
|
51
|
+
});
|
|
52
|
+
const drizzle = () => createOrmConfig("drizzle", {
|
|
53
|
+
"no-restricted-imports": ["error", {
|
|
54
|
+
patterns: [
|
|
55
|
+
{
|
|
56
|
+
group: [
|
|
57
|
+
"drizzle-orm/*/session",
|
|
58
|
+
"drizzle-orm/*/session.*",
|
|
59
|
+
"drizzle-orm/*/query-builders/*",
|
|
60
|
+
"drizzle-orm/*/migrator",
|
|
61
|
+
"drizzle-orm/*/migrator.*"
|
|
62
|
+
],
|
|
63
|
+
message: "Use Drizzle public driver, schema, migration, and query APIs instead of internal session or builder modules."
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}]
|
|
67
|
+
});
|
|
68
|
+
const mikroOrm = () => createOrmConfig("mikro-orm", {
|
|
69
|
+
"no-restricted-imports": ["error", {
|
|
70
|
+
patterns: [
|
|
71
|
+
{
|
|
72
|
+
group: [
|
|
73
|
+
"@mikro-orm/core/entity/*",
|
|
74
|
+
"@mikro-orm/core/platforms/*",
|
|
75
|
+
"@mikro-orm/core/unit-of-work/*",
|
|
76
|
+
"@mikro-orm/core/utils/*"
|
|
77
|
+
],
|
|
78
|
+
message: "Import MikroORM APIs from documented package entry points instead of core internals."
|
|
79
|
+
}
|
|
80
|
+
]
|
|
81
|
+
}]
|
|
82
|
+
});
|
|
83
|
+
const sequelize = () => createOrmConfig("sequelize", {
|
|
84
|
+
"no-restricted-imports": ["error", {
|
|
85
|
+
patterns: [
|
|
86
|
+
{
|
|
87
|
+
group: [
|
|
88
|
+
"sequelize/types/*",
|
|
89
|
+
"sequelize/lib/*",
|
|
90
|
+
"@sequelize/core/_non-semver-use-at-your-own-risk_/*"
|
|
91
|
+
],
|
|
92
|
+
message: "Use Sequelize public exports; internal type, lib, and non-semver modules are unstable."
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
}]
|
|
96
|
+
});
|
|
97
|
+
export {
|
|
98
|
+
drizzle,
|
|
99
|
+
mikroOrm,
|
|
100
|
+
prisma,
|
|
101
|
+
sequelize,
|
|
102
|
+
typeorm
|
|
103
|
+
};
|
|
104
|
+
//# sourceMappingURL=orm.js.map
|
package/dist/orm.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/orm.ts"],"sourcesContent":["import { GLOB_JS_TS_ALL } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\n\nconst createOrmConfig = (\n ormName: string,\n rules: NonNullable<TSESLint.FlatConfig.Config['rules']>\n): TSESLint.FlatConfig.ConfigArray => [\n {\n files: GLOB_JS_TS_ALL,\n name: `eslint-config-integrations/${ormName}`,\n rules\n }\n]\n\n/**\n * TypeORM ESLint configuration.\n *\n * TypeORM does not currently provide an ESLint 10-ready recommended flat\n * config. This integration focuses on stable imports and avoids legacy global\n * helpers that make migrations and tests harder to reason about.\n */\nexport const typeorm = (): TSESLint.FlatConfig.ConfigArray => createOrmConfig('typeorm', {\n 'no-restricted-imports': ['error', {\n paths: [\n {\n importNames: [\n 'getConnection',\n 'getManager',\n 'getMongoManager',\n 'getMongoRepository',\n 'getRepository',\n 'getTreeRepository'\n ],\n message: 'Prefer DataSource, EntityManager, or injected Repository instances over legacy TypeORM global helpers.',\n name: 'typeorm'\n },\n {\n message: 'Import TypeORM APIs from \"typeorm\" instead of the browser build.',\n name: 'typeorm/browser'\n }\n ],\n patterns: [\n {\n group: ['typeorm/*', '!typeorm/browser'],\n message: 'Import public TypeORM APIs from \"typeorm\"; subpath imports can couple code to internal package layout.'\n }\n ]\n }]\n})\n\n/**\n * Prisma ESLint configuration.\n *\n * Keeps Prisma Client usage on public package entry points. This avoids runtime\n * internals that frequently change between generated client versions.\n */\nexport const prisma = (): TSESLint.FlatConfig.ConfigArray => createOrmConfig('prisma', {\n 'no-restricted-imports': ['error', {\n patterns: [\n {\n group: [\n '@prisma/client/runtime',\n '@prisma/client/runtime/*',\n '.prisma/client',\n '.prisma/client/*'\n ],\n message: 'Import Prisma APIs from \"@prisma/client\"; generated runtime internals are not a stable application API.'\n }\n ]\n }]\n})\n\n/**\n * Drizzle ORM ESLint configuration.\n */\nexport const drizzle = (): TSESLint.FlatConfig.ConfigArray => createOrmConfig('drizzle', {\n 'no-restricted-imports': ['error', {\n patterns: [\n {\n group: [\n 'drizzle-orm/*/session',\n 'drizzle-orm/*/session.*',\n 'drizzle-orm/*/query-builders/*',\n 'drizzle-orm/*/migrator',\n 'drizzle-orm/*/migrator.*'\n ],\n message: 'Use Drizzle public driver, schema, migration, and query APIs instead of internal session or builder modules.'\n }\n ]\n }]\n})\n\n/**\n * MikroORM ESLint configuration.\n */\nexport const mikroOrm = (): TSESLint.FlatConfig.ConfigArray => createOrmConfig('mikro-orm', {\n 'no-restricted-imports': ['error', {\n patterns: [\n {\n group: [\n '@mikro-orm/core/entity/*',\n '@mikro-orm/core/platforms/*',\n '@mikro-orm/core/unit-of-work/*',\n '@mikro-orm/core/utils/*'\n ],\n message: 'Import MikroORM APIs from documented package entry points instead of core internals.'\n }\n ]\n }]\n})\n\n/**\n * Sequelize ESLint configuration.\n */\nexport const sequelize = (): TSESLint.FlatConfig.ConfigArray => createOrmConfig('sequelize', {\n 'no-restricted-imports': ['error', {\n patterns: [\n {\n group: [\n 'sequelize/types/*',\n 'sequelize/lib/*',\n '@sequelize/core/_non-semver-use-at-your-own-risk_/*'\n ],\n message: 'Use Sequelize public exports; internal type, lib, and non-semver modules are unstable.'\n }\n ]\n }]\n})\n"],"mappings":"AAAA,SAAS,sBAAsB;AAI/B,MAAM,kBAAkB,CACtB,SACA,UACoC;AAAA,EACpC;AAAA,IACE,OAAO;AAAA,IACP,MAAM,8BAA8B,OAAO;AAAA,IAC3C;AAAA,EACF;AACF;AASO,MAAM,UAAU,MAAuC,gBAAgB,WAAW;AAAA,EACvF,yBAAyB,CAAC,SAAS;AAAA,IACjC,OAAO;AAAA,MACL;AAAA,QACE,aAAa;AAAA,UACX;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,MACA;AAAA,QACE,SAAS;AAAA,QACT,MAAM;AAAA,MACR;AAAA,IACF;AAAA,IACA,UAAU;AAAA,MACR;AAAA,QACE,OAAO,CAAC,aAAa,kBAAkB;AAAA,QACvC,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;AAQM,MAAM,SAAS,MAAuC,gBAAgB,UAAU;AAAA,EACrF,yBAAyB,CAAC,SAAS;AAAA,IACjC,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;AAKM,MAAM,UAAU,MAAuC,gBAAgB,WAAW;AAAA,EACvF,yBAAyB,CAAC,SAAS;AAAA,IACjC,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;AAKM,MAAM,WAAW,MAAuC,gBAAgB,aAAa;AAAA,EAC1F,yBAAyB,CAAC,SAAS;AAAA,IACjC,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;AAKM,MAAM,YAAY,MAAuC,gBAAgB,aAAa;AAAA,EAC3F,yBAAyB,CAAC,SAAS;AAAA,IACjC,UAAU;AAAA,MACR;AAAA,QACE,OAAO;AAAA,UACL;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAAA,QACA,SAAS;AAAA,MACX;AAAA,IACF;AAAA,EACF,CAAC;AACH,CAAC;","names":[]}
|
package/dist/registry.js
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { aiSdk } from "./ai.js";
|
|
2
|
+
import { autogen } from "./autogen.js";
|
|
3
|
+
import { googleGenAi } from "./google-genai.js";
|
|
4
|
+
import { i18next } from "./i18next.js";
|
|
5
|
+
import { langchain } from "./langchain.js";
|
|
6
|
+
import { llamaIndex } from "./llamaindex.js";
|
|
7
|
+
import { mastra } from "./mastra.js";
|
|
8
|
+
import { mcp } from "./mcp.js";
|
|
9
|
+
import { openAiAgents } from "./openai-agents.js";
|
|
10
|
+
import { drizzle, mikroOrm, prisma, sequelize, typeorm } from "./orm.js";
|
|
11
|
+
import { stencil } from "./stencil.js";
|
|
12
|
+
import { storybook } from "./storybook.js";
|
|
13
|
+
import { tailwind } from "./tailwind.js";
|
|
14
|
+
import { tanstackQuery, tanstackRouter } from "./tanstack.js";
|
|
15
|
+
import { turbo } from "./turbo.js";
|
|
16
|
+
import { zod } from "./zod.js";
|
|
17
|
+
const features = [
|
|
18
|
+
{ category: "library", create: aiSdk, id: "ai-sdk", order: 200 },
|
|
19
|
+
{ category: "library", create: mcp, id: "mcp", order: 201 },
|
|
20
|
+
{ category: "library", create: mastra, id: "mastra", order: 202 },
|
|
21
|
+
{ category: "library", create: openAiAgents, id: "openai-agents", order: 203 },
|
|
22
|
+
{ category: "library", create: googleGenAi, id: "google-genai", order: 204 },
|
|
23
|
+
{ category: "library", create: autogen, id: "autogen", order: 205 },
|
|
24
|
+
{ category: "library", create: langchain, id: "langchain", order: 206 },
|
|
25
|
+
{ category: "library", create: llamaIndex, id: "llamaindex", order: 207 },
|
|
26
|
+
{ category: "library", create: typeorm, id: "typeorm", order: 208 },
|
|
27
|
+
{ category: "library", create: prisma, id: "prisma", order: 209 },
|
|
28
|
+
{ category: "library", create: drizzle, id: "drizzle", order: 210 },
|
|
29
|
+
{ category: "library", create: mikroOrm, id: "mikro-orm", order: 211 },
|
|
30
|
+
{ category: "library", create: sequelize, id: "sequelize", order: 212 },
|
|
31
|
+
{ category: "library", create: tailwind, id: "tailwind", order: 213 },
|
|
32
|
+
{ category: "library", create: i18next, id: "i18next", order: 214 },
|
|
33
|
+
{ category: "library", create: stencil, id: "stencil", order: 215 },
|
|
34
|
+
{ category: "library", create: tanstackQuery, id: "tanstack-query", order: 216 },
|
|
35
|
+
{ category: "library", create: tanstackRouter, id: "tanstack-router", order: 217 },
|
|
36
|
+
{ category: "library", create: storybook, id: "storybook", order: 218 },
|
|
37
|
+
{ category: "library", create: zod, id: "zod", order: 219 },
|
|
38
|
+
{ category: "library", create: turbo, id: "turbo", order: 220 }
|
|
39
|
+
];
|
|
40
|
+
export {
|
|
41
|
+
features
|
|
42
|
+
};
|
|
43
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/registry.ts"],"sourcesContent":["import type { ConfigFeature } from '@santi020k/eslint-config-core'\n\nimport { aiSdk } from './ai.js'\nimport { autogen } from './autogen.js'\nimport { googleGenAi } from './google-genai.js'\nimport { i18next } from './i18next.js'\nimport { langchain } from './langchain.js'\nimport { llamaIndex } from './llamaindex.js'\nimport { mastra } from './mastra.js'\nimport { mcp } from './mcp.js'\nimport { openAiAgents } from './openai-agents.js'\nimport { drizzle, mikroOrm, prisma, sequelize, typeorm } from './orm.js'\nimport { stencil } from './stencil.js'\nimport { storybook } from './storybook.js'\nimport { tailwind } from './tailwind.js'\nimport { tanstackQuery, tanstackRouter } from './tanstack.js'\nimport { turbo } from './turbo.js'\nimport { zod } from './zod.js'\n\nexport const features: ConfigFeature[] = [\n { category: 'library', create: aiSdk, id: 'ai-sdk', order: 200 },\n { category: 'library', create: mcp, id: 'mcp', order: 201 },\n { category: 'library', create: mastra, id: 'mastra', order: 202 },\n { category: 'library', create: openAiAgents, id: 'openai-agents', order: 203 },\n { category: 'library', create: googleGenAi, id: 'google-genai', order: 204 },\n { category: 'library', create: autogen, id: 'autogen', order: 205 },\n { category: 'library', create: langchain, id: 'langchain', order: 206 },\n { category: 'library', create: llamaIndex, id: 'llamaindex', order: 207 },\n { category: 'library', create: typeorm, id: 'typeorm', order: 208 },\n { category: 'library', create: prisma, id: 'prisma', order: 209 },\n { category: 'library', create: drizzle, id: 'drizzle', order: 210 },\n { category: 'library', create: mikroOrm, id: 'mikro-orm', order: 211 },\n { category: 'library', create: sequelize, id: 'sequelize', order: 212 },\n { category: 'library', create: tailwind, id: 'tailwind', order: 213 },\n { category: 'library', create: i18next, id: 'i18next', order: 214 },\n { category: 'library', create: stencil, id: 'stencil', order: 215 },\n { category: 'library', create: tanstackQuery, id: 'tanstack-query', order: 216 },\n { category: 'library', create: tanstackRouter, id: 'tanstack-router', order: 217 },\n { category: 'library', create: storybook, id: 'storybook', order: 218 },\n { category: 'library', create: zod, id: 'zod', order: 219 },\n { category: 'library', create: turbo, id: 'turbo', order: 220 }\n]\n"],"mappings":"AAEA,SAAS,aAAa;AACtB,SAAS,eAAe;AACxB,SAAS,mBAAmB;AAC5B,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAC1B,SAAS,kBAAkB;AAC3B,SAAS,cAAc;AACvB,SAAS,WAAW;AACpB,SAAS,oBAAoB;AAC7B,SAAS,SAAS,UAAU,QAAQ,WAAW,eAAe;AAC9D,SAAS,eAAe;AACxB,SAAS,iBAAiB;AAC1B,SAAS,gBAAgB;AACzB,SAAS,eAAe,sBAAsB;AAC9C,SAAS,aAAa;AACtB,SAAS,WAAW;AAEb,MAAM,WAA4B;AAAA,EACvC,EAAE,UAAU,WAAW,QAAQ,OAAO,IAAI,UAAU,OAAO,IAAI;AAAA,EAC/D,EAAE,UAAU,WAAW,QAAQ,KAAK,IAAI,OAAO,OAAO,IAAI;AAAA,EAC1D,EAAE,UAAU,WAAW,QAAQ,QAAQ,IAAI,UAAU,OAAO,IAAI;AAAA,EAChE,EAAE,UAAU,WAAW,QAAQ,cAAc,IAAI,iBAAiB,OAAO,IAAI;AAAA,EAC7E,EAAE,UAAU,WAAW,QAAQ,aAAa,IAAI,gBAAgB,OAAO,IAAI;AAAA,EAC3E,EAAE,UAAU,WAAW,QAAQ,SAAS,IAAI,WAAW,OAAO,IAAI;AAAA,EAClE,EAAE,UAAU,WAAW,QAAQ,WAAW,IAAI,aAAa,OAAO,IAAI;AAAA,EACtE,EAAE,UAAU,WAAW,QAAQ,YAAY,IAAI,cAAc,OAAO,IAAI;AAAA,EACxE,EAAE,UAAU,WAAW,QAAQ,SAAS,IAAI,WAAW,OAAO,IAAI;AAAA,EAClE,EAAE,UAAU,WAAW,QAAQ,QAAQ,IAAI,UAAU,OAAO,IAAI;AAAA,EAChE,EAAE,UAAU,WAAW,QAAQ,SAAS,IAAI,WAAW,OAAO,IAAI;AAAA,EAClE,EAAE,UAAU,WAAW,QAAQ,UAAU,IAAI,aAAa,OAAO,IAAI;AAAA,EACrE,EAAE,UAAU,WAAW,QAAQ,WAAW,IAAI,aAAa,OAAO,IAAI;AAAA,EACtE,EAAE,UAAU,WAAW,QAAQ,UAAU,IAAI,YAAY,OAAO,IAAI;AAAA,EACpE,EAAE,UAAU,WAAW,QAAQ,SAAS,IAAI,WAAW,OAAO,IAAI;AAAA,EAClE,EAAE,UAAU,WAAW,QAAQ,SAAS,IAAI,WAAW,OAAO,IAAI;AAAA,EAClE,EAAE,UAAU,WAAW,QAAQ,eAAe,IAAI,kBAAkB,OAAO,IAAI;AAAA,EAC/E,EAAE,UAAU,WAAW,QAAQ,gBAAgB,IAAI,mBAAmB,OAAO,IAAI;AAAA,EACjF,EAAE,UAAU,WAAW,QAAQ,WAAW,IAAI,aAAa,OAAO,IAAI;AAAA,EACtE,EAAE,UAAU,WAAW,QAAQ,KAAK,IAAI,OAAO,OAAO,IAAI;AAAA,EAC1D,EAAE,UAAU,WAAW,QAAQ,OAAO,IAAI,SAAS,OAAO,IAAI;AAChE;","names":[]}
|
package/dist/stencil.js
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { defineLazyConfig, loadDefault } from "./lazy.js";
|
|
2
|
+
const stencil = defineLazyConfig("stencil", async () => {
|
|
3
|
+
const stencilPlugin = await loadDefault("@stencil/eslint-plugin");
|
|
4
|
+
return [
|
|
5
|
+
{
|
|
6
|
+
files: ["**/*.{tsx,ts}"],
|
|
7
|
+
name: "integrations/stencil",
|
|
8
|
+
plugins: {
|
|
9
|
+
"@stencil-community": stencilPlugin
|
|
10
|
+
},
|
|
11
|
+
rules: {
|
|
12
|
+
"@stencil-community/async-methods": "error",
|
|
13
|
+
"@stencil-community/ban-prefix": ["error", ["stencil", "stnl", "st"]],
|
|
14
|
+
"@stencil-community/decorators-context": "error",
|
|
15
|
+
"@stencil-community/decorators-style": [
|
|
16
|
+
"error",
|
|
17
|
+
{
|
|
18
|
+
element: "inline",
|
|
19
|
+
event: "inline",
|
|
20
|
+
listen: "multiline",
|
|
21
|
+
method: "multiline",
|
|
22
|
+
prop: "inline",
|
|
23
|
+
state: "inline",
|
|
24
|
+
watch: "multiline"
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"@stencil-community/element-type": "error",
|
|
28
|
+
"@stencil-community/host-data-deprecated": "error",
|
|
29
|
+
"@stencil-community/methods-must-be-public": "error",
|
|
30
|
+
"@stencil-community/no-unused-watch": "error",
|
|
31
|
+
"@stencil-community/own-methods-must-be-private": "error",
|
|
32
|
+
"@stencil-community/own-props-must-be-private": "error",
|
|
33
|
+
"@stencil-community/prefer-vdom-listener": "error",
|
|
34
|
+
"@stencil-community/props-must-be-public": "error",
|
|
35
|
+
"@stencil-community/props-must-be-readonly": "error",
|
|
36
|
+
"@stencil-community/render-returns-host": "error",
|
|
37
|
+
"@stencil-community/required-jsdoc": "error",
|
|
38
|
+
"@stencil-community/reserved-member-names": "error",
|
|
39
|
+
"@stencil-community/single-export": "error",
|
|
40
|
+
"@stencil-community/strict-mutable": "error"
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
];
|
|
44
|
+
});
|
|
45
|
+
export {
|
|
46
|
+
stencil
|
|
47
|
+
};
|
|
48
|
+
//# sourceMappingURL=stencil.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/stencil.ts"],"sourcesContent":["import type StencilPlugin from '@stencil/eslint-plugin'\nimport type { TSESLint } from '@typescript-eslint/utils'\n\nimport { defineLazyConfig, loadDefault } from './lazy.js'\n\n/**\n * Stencil ESLint configuration\n * Enforces best practices for Stencil.js components\n */\nexport const stencil: () => Promise<TSESLint.FlatConfig.ConfigArray> = defineLazyConfig('stencil', async () => {\n const stencilPlugin = await loadDefault<typeof StencilPlugin>('@stencil/eslint-plugin')\n\n return [\n {\n files: ['**/*.{tsx,ts}'],\n name: 'integrations/stencil',\n plugins: {\n '@stencil-community': stencilPlugin as unknown as TSESLint.FlatConfig.Plugin\n },\n rules: {\n '@stencil-community/async-methods': 'error',\n '@stencil-community/ban-prefix': ['error', ['stencil', 'stnl', 'st']],\n '@stencil-community/decorators-context': 'error',\n '@stencil-community/decorators-style': [\n 'error', {\n element: 'inline',\n event: 'inline',\n listen: 'multiline',\n method: 'multiline',\n prop: 'inline',\n state: 'inline',\n watch: 'multiline'\n }],\n '@stencil-community/element-type': 'error',\n '@stencil-community/host-data-deprecated': 'error',\n '@stencil-community/methods-must-be-public': 'error',\n '@stencil-community/no-unused-watch': 'error',\n '@stencil-community/own-methods-must-be-private': 'error',\n '@stencil-community/own-props-must-be-private': 'error',\n '@stencil-community/prefer-vdom-listener': 'error',\n '@stencil-community/props-must-be-public': 'error',\n '@stencil-community/props-must-be-readonly': 'error',\n '@stencil-community/render-returns-host': 'error',\n '@stencil-community/required-jsdoc': 'error',\n '@stencil-community/reserved-member-names': 'error',\n '@stencil-community/single-export': 'error',\n '@stencil-community/strict-mutable': 'error'\n }\n }\n ]\n})\n"],"mappings":"AAGA,SAAS,kBAAkB,mBAAmB;AAMvC,MAAM,UAA0D,iBAAiB,WAAW,YAAY;AAC7G,QAAM,gBAAgB,MAAM,YAAkC,wBAAwB;AAEtF,SAAO;AAAA,IACL;AAAA,MACE,OAAO,CAAC,eAAe;AAAA,MACvB,MAAM;AAAA,MACN,SAAS;AAAA,QACP,sBAAsB;AAAA,MACxB;AAAA,MACA,OAAO;AAAA,QACL,oCAAoC;AAAA,QACpC,iCAAiC,CAAC,SAAS,CAAC,WAAW,QAAQ,IAAI,CAAC;AAAA,QACpE,yCAAyC;AAAA,QACzC,uCAAuC;AAAA,UACrC;AAAA,UAAS;AAAA,YACP,SAAS;AAAA,YACT,OAAO;AAAA,YACP,QAAQ;AAAA,YACR,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,OAAO;AAAA,YACP,OAAO;AAAA,UACT;AAAA,QAAC;AAAA,QACH,mCAAmC;AAAA,QACnC,2CAA2C;AAAA,QAC3C,6CAA6C;AAAA,QAC7C,sCAAsC;AAAA,QACtC,kDAAkD;AAAA,QAClD,gDAAgD;AAAA,QAChD,2CAA2C;AAAA,QAC3C,2CAA2C;AAAA,QAC3C,6CAA6C;AAAA,QAC7C,0CAA0C;AAAA,QAC1C,qCAAqC;AAAA,QACrC,4CAA4C;AAAA,QAC5C,oCAAoC;AAAA,QACpC,qCAAqC;AAAA,MACvC;AAAA,IACF;AAAA,EACF;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { defineLazyConfig, loadDefault } from "./lazy.js";
|
|
2
|
+
const storybook = defineLazyConfig("storybook", async () => {
|
|
3
|
+
const pluginStorybook = await loadDefault("eslint-plugin-storybook");
|
|
4
|
+
return [
|
|
5
|
+
...pluginStorybook.configs["flat/recommended"]
|
|
6
|
+
];
|
|
7
|
+
});
|
|
8
|
+
export {
|
|
9
|
+
storybook
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=storybook.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/storybook.ts"],"sourcesContent":["import type { TSESLint } from '@typescript-eslint/utils'\nimport type PluginStorybook from 'eslint-plugin-storybook'\n\nimport { defineLazyConfig, loadDefault } from './lazy.js'\n\n/**\n * Storybook ESLint configuration\n * Provides rules for Storybook story best practices\n */\nexport const storybook: () => Promise<TSESLint.FlatConfig.ConfigArray> = defineLazyConfig('storybook', async () => {\n const pluginStorybook = await loadDefault<typeof PluginStorybook>('eslint-plugin-storybook')\n\n return [\n ...(pluginStorybook.configs['flat/recommended'])\n ]\n})\n"],"mappings":"AAGA,SAAS,kBAAkB,mBAAmB;AAMvC,MAAM,YAA4D,iBAAiB,aAAa,YAAY;AACjH,QAAM,kBAAkB,MAAM,YAAoC,yBAAyB;AAE3F,SAAO;AAAA,IACL,GAAI,gBAAgB,QAAQ,kBAAkB;AAAA,EAChD;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { TSESLint } from '@typescript-eslint/utils';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Tailwind CSS ESLint configuration
|
|
5
|
+
* Enforces Tailwind CSS best practices using eslint-plugin-better-tailwindcss
|
|
6
|
+
*/
|
|
7
|
+
declare const tailwind: () => Promise<TSESLint.FlatConfig.ConfigArray>;
|
|
8
|
+
|
|
9
|
+
export { tailwind };
|
package/dist/tailwind.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { GLOB_JS_TS_ALL } from "@santi020k/eslint-config-core";
|
|
2
|
+
import { defineLazyConfig, loadDefault } from "./lazy.js";
|
|
3
|
+
const tailwind = defineLazyConfig("tailwind", async () => {
|
|
4
|
+
const pluginTailwind = await loadDefault("eslint-plugin-better-tailwindcss");
|
|
5
|
+
return [
|
|
6
|
+
{
|
|
7
|
+
...pluginTailwind.configs.recommended,
|
|
8
|
+
files: GLOB_JS_TS_ALL,
|
|
9
|
+
name: "santi020k/tailwind/recommended",
|
|
10
|
+
settings: {
|
|
11
|
+
"better-tailwindcss": {
|
|
12
|
+
// Enable faster resolution in monorepos
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
];
|
|
17
|
+
});
|
|
18
|
+
export {
|
|
19
|
+
tailwind
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=tailwind.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tailwind.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 * Tailwind CSS ESLint configuration\n * Enforces Tailwind CSS best practices using eslint-plugin-better-tailwindcss\n */\nexport const tailwind: () => Promise<TSESLint.FlatConfig.ConfigArray> = defineLazyConfig('tailwind', async () => {\n const pluginTailwind = await loadDefault<PluginWithConfigs<'recommended'>>('eslint-plugin-better-tailwindcss')\n\n return [\n {\n ...pluginTailwind.configs.recommended,\n files: GLOB_JS_TS_ALL,\n name: 'santi020k/tailwind/recommended',\n settings: {\n 'better-tailwindcss': {\n // Enable faster resolution in monorepos\n }\n }\n }\n ]\n})\n"],"mappings":"AAAA,SAAS,sBAAsB;AAI/B,SAAS,kBAAkB,mBAA2C;AAM/D,MAAM,WAA2D,iBAAiB,YAAY,YAAY;AAC/G,QAAM,iBAAiB,MAAM,YAA8C,kCAAkC;AAE7G,SAAO;AAAA,IACL;AAAA,MACE,GAAG,eAAe,QAAQ;AAAA,MAC1B,OAAO;AAAA,MACP,MAAM;AAAA,MACN,UAAU;AAAA,QACR,sBAAsB;AAAA;AAAA,QAEtB;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;","names":[]}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { TSESLint } from '@typescript-eslint/utils';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* TanStack Query ESLint configuration
|
|
5
|
+
*/
|
|
6
|
+
declare const tanstackQuery: () => Promise<TSESLint.FlatConfig.ConfigArray>;
|
|
7
|
+
/**
|
|
8
|
+
* TanStack Router ESLint configuration
|
|
9
|
+
*/
|
|
10
|
+
declare const tanstackRouter: () => Promise<TSESLint.FlatConfig.ConfigArray>;
|
|
11
|
+
|
|
12
|
+
export { tanstackQuery, tanstackRouter };
|
package/dist/tanstack.js
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { GLOB_JS_TS_ALL } from "@santi020k/eslint-config-core";
|
|
2
|
+
import { defineLazyConfig, loadDefault } from "./lazy.js";
|
|
3
|
+
const tanstackQuery = defineLazyConfig("tanstack-query", async () => {
|
|
4
|
+
const pluginQuery = await loadDefault("@tanstack/eslint-plugin-query");
|
|
5
|
+
return [
|
|
6
|
+
{
|
|
7
|
+
files: GLOB_JS_TS_ALL,
|
|
8
|
+
name: "eslint-config-integrations/tanstack-query",
|
|
9
|
+
plugins: {
|
|
10
|
+
"@tanstack/query": pluginQuery
|
|
11
|
+
},
|
|
12
|
+
rules: {
|
|
13
|
+
...pluginQuery.configs.recommended.rules
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
];
|
|
17
|
+
});
|
|
18
|
+
const tanstackRouter = defineLazyConfig("tanstack-router", async () => {
|
|
19
|
+
const pluginRouter = await loadDefault("@tanstack/eslint-plugin-router");
|
|
20
|
+
return [
|
|
21
|
+
{
|
|
22
|
+
files: GLOB_JS_TS_ALL,
|
|
23
|
+
name: "eslint-config-integrations/tanstack-router",
|
|
24
|
+
plugins: {
|
|
25
|
+
"@tanstack/router": pluginRouter
|
|
26
|
+
},
|
|
27
|
+
rules: {
|
|
28
|
+
...pluginRouter.configs.recommended.rules
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
];
|
|
32
|
+
});
|
|
33
|
+
export {
|
|
34
|
+
tanstackQuery,
|
|
35
|
+
tanstackRouter
|
|
36
|
+
};
|
|
37
|
+
//# sourceMappingURL=tanstack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/tanstack.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 * TanStack Query ESLint configuration\n */\nexport const tanstackQuery: () => Promise<TSESLint.FlatConfig.ConfigArray> = defineLazyConfig('tanstack-query', async () => {\n const pluginQuery = await loadDefault<PluginWithConfigs<'recommended'>>('@tanstack/eslint-plugin-query')\n\n return [\n {\n files: GLOB_JS_TS_ALL,\n name: 'eslint-config-integrations/tanstack-query',\n plugins: {\n '@tanstack/query': pluginQuery\n },\n rules: {\n ...pluginQuery.configs.recommended.rules\n }\n }\n ]\n})\n\n/**\n * TanStack Router ESLint configuration\n */\nexport const tanstackRouter: () => Promise<TSESLint.FlatConfig.ConfigArray> = defineLazyConfig('tanstack-router', async () => {\n const pluginRouter = await loadDefault<PluginWithConfigs<'recommended'>>('@tanstack/eslint-plugin-router')\n\n return [\n {\n files: GLOB_JS_TS_ALL,\n name: 'eslint-config-integrations/tanstack-router',\n plugins: {\n '@tanstack/router': pluginRouter\n },\n rules: {\n ...pluginRouter.configs.recommended.rules\n }\n }\n ]\n})\n"],"mappings":"AAAA,SAAS,sBAAsB;AAI/B,SAAS,kBAAkB,mBAA2C;AAK/D,MAAM,gBAAgE,iBAAiB,kBAAkB,YAAY;AAC1H,QAAM,cAAc,MAAM,YAA8C,+BAA+B;AAEvG,SAAO;AAAA,IACL;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,QACP,mBAAmB;AAAA,MACrB;AAAA,MACA,OAAO;AAAA,QACL,GAAG,YAAY,QAAQ,YAAY;AAAA,MACrC;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAKM,MAAM,iBAAiE,iBAAiB,mBAAmB,YAAY;AAC5H,QAAM,eAAe,MAAM,YAA8C,gCAAgC;AAEzG,SAAO;AAAA,IACL;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,QACP,oBAAoB;AAAA,MACtB;AAAA,MACA,OAAO;AAAA,QACL,GAAG,aAAa,QAAQ,YAAY;AAAA,MACtC;AAAA,IACF;AAAA,EACF;AACF,CAAC;","names":[]}
|
package/dist/turbo.d.ts
ADDED
package/dist/turbo.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { GLOB_JS_TS, GLOB_JS_TS_ALL } from "@santi020k/eslint-config-core";
|
|
2
|
+
import { defineLazyConfig, loadDefault } from "./lazy.js";
|
|
3
|
+
const turbo = defineLazyConfig("turbo", async () => {
|
|
4
|
+
const pluginTurbo = await loadDefault("eslint-plugin-turbo");
|
|
5
|
+
return [
|
|
6
|
+
{
|
|
7
|
+
files: GLOB_JS_TS_ALL,
|
|
8
|
+
name: "eslint-config-turbo/plugins",
|
|
9
|
+
plugins: {
|
|
10
|
+
turbo: pluginTurbo
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
files: GLOB_JS_TS,
|
|
15
|
+
name: "eslint-config-turbo/rules",
|
|
16
|
+
rules: {
|
|
17
|
+
"turbo/no-undeclared-env-vars": "error"
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
];
|
|
21
|
+
});
|
|
22
|
+
export {
|
|
23
|
+
turbo
|
|
24
|
+
};
|
|
25
|
+
//# sourceMappingURL=turbo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/turbo.ts"],"sourcesContent":["import { GLOB_JS_TS, GLOB_JS_TS_ALL } from '@santi020k/eslint-config-core'\n\nimport type { TSESLint } from '@typescript-eslint/utils'\nimport type PluginTurbo from 'eslint-plugin-turbo'\n\nimport { defineLazyConfig, loadDefault } from './lazy.js'\n\n/**\n * Turborepo ESLint configuration\n * Validates process.env usage against turbo.json\n */\nexport const turbo: () => Promise<TSESLint.FlatConfig.ConfigArray> = defineLazyConfig('turbo', async () => {\n const pluginTurbo = await loadDefault<typeof PluginTurbo>('eslint-plugin-turbo')\n\n return [\n {\n files: GLOB_JS_TS_ALL,\n name: 'eslint-config-turbo/plugins',\n plugins: {\n turbo: pluginTurbo\n }\n },\n {\n files: GLOB_JS_TS,\n name: 'eslint-config-turbo/rules',\n rules: {\n 'turbo/no-undeclared-env-vars': 'error'\n }\n }\n ]\n})\n"],"mappings":"AAAA,SAAS,YAAY,sBAAsB;AAK3C,SAAS,kBAAkB,mBAAmB;AAMvC,MAAM,QAAwD,iBAAiB,SAAS,YAAY;AACzG,QAAM,cAAc,MAAM,YAAgC,qBAAqB;AAE/E,SAAO;AAAA,IACL;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,QACP,OAAO;AAAA,MACT;AAAA,IACF;AAAA,IACA;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,OAAO;AAAA,QACL,gCAAgC;AAAA,MAClC;AAAA,IACF;AAAA,EACF;AACF,CAAC;","names":[]}
|
package/dist/zod.d.ts
ADDED
package/dist/zod.js
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { GLOB_JS_TS } from "@santi020k/eslint-config-core";
|
|
2
|
+
import { defineLazyConfig, loadDefault } from "./lazy.js";
|
|
3
|
+
const zod = defineLazyConfig("zod", async () => {
|
|
4
|
+
const pluginZod = await loadDefault("eslint-plugin-zod");
|
|
5
|
+
return [
|
|
6
|
+
{
|
|
7
|
+
files: GLOB_JS_TS,
|
|
8
|
+
name: "eslint-config-integrations/zod",
|
|
9
|
+
plugins: {
|
|
10
|
+
zod: pluginZod
|
|
11
|
+
},
|
|
12
|
+
rules: {
|
|
13
|
+
...pluginZod.configs.recommended.rules
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
];
|
|
17
|
+
});
|
|
18
|
+
export {
|
|
19
|
+
zod
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=zod.js.map
|
package/dist/zod.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/zod.ts"],"sourcesContent":["import { GLOB_JS_TS } 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 * Zod ESLint configuration\n * Provides validation rules for Zod schemas\n */\nexport const zod: () => Promise<TSESLint.FlatConfig.ConfigArray> = defineLazyConfig('zod', async () => {\n const pluginZod = await loadDefault<PluginWithConfigs<'recommended'>>('eslint-plugin-zod')\n\n return [\n {\n files: GLOB_JS_TS,\n name: 'eslint-config-integrations/zod',\n plugins: {\n zod: pluginZod\n },\n rules: {\n ...pluginZod.configs.recommended.rules\n }\n }\n ]\n})\n"],"mappings":"AAAA,SAAS,kBAAkB;AAI3B,SAAS,kBAAkB,mBAA2C;AAM/D,MAAM,MAAsD,iBAAiB,OAAO,YAAY;AACrG,QAAM,YAAY,MAAM,YAA8C,mBAAmB;AAEzF,SAAO;AAAA,IACL;AAAA,MACE,OAAO;AAAA,MACP,MAAM;AAAA,MACN,SAAS;AAAA,QACP,KAAK;AAAA,MACP;AAAA,MACA,OAAO;AAAA,QACL,GAAG,UAAU,QAAQ,YAAY;AAAA,MACnC;AAAA,IACF;AAAA,EACF;AACF,CAAC;","names":[]}
|
package/package.json
ADDED
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@santi020k/eslint-config-libraries",
|
|
3
|
+
"version": "3.1.0",
|
|
4
|
+
"publishConfig": {
|
|
5
|
+
"access": "public",
|
|
6
|
+
"provenance": true
|
|
7
|
+
},
|
|
8
|
+
"description": "Library-specific ESLint configs for eslint-config-basic",
|
|
9
|
+
"type": "module",
|
|
10
|
+
"main": "./dist/index.js",
|
|
11
|
+
"module": "./dist/index.js",
|
|
12
|
+
"types": "./dist/index.d.ts",
|
|
13
|
+
"sideEffects": false,
|
|
14
|
+
"exports": {
|
|
15
|
+
".": {
|
|
16
|
+
"types": "./dist/index.d.ts",
|
|
17
|
+
"import": "./dist/index.js"
|
|
18
|
+
},
|
|
19
|
+
"./registry": {
|
|
20
|
+
"types": "./dist/registry.d.ts",
|
|
21
|
+
"import": "./dist/registry.js"
|
|
22
|
+
}
|
|
23
|
+
},
|
|
24
|
+
"files": [
|
|
25
|
+
"dist"
|
|
26
|
+
],
|
|
27
|
+
"dependencies": {
|
|
28
|
+
"@stencil/eslint-plugin": "^1.4.0",
|
|
29
|
+
"@tanstack/eslint-plugin-query": "^5.101.4",
|
|
30
|
+
"@tanstack/eslint-plugin-router": "^1.162.0",
|
|
31
|
+
"@typescript-eslint/utils": "^8.65.0",
|
|
32
|
+
"eslint-plugin-better-tailwindcss": "^4.7.0",
|
|
33
|
+
"eslint-plugin-i18next": "^6.1.5",
|
|
34
|
+
"eslint-plugin-storybook": "^10.5.5",
|
|
35
|
+
"eslint-plugin-turbo": "^2.10.7",
|
|
36
|
+
"eslint-plugin-vercel-ai-security": "^1.3.7",
|
|
37
|
+
"eslint-plugin-zod": "^4.9.0",
|
|
38
|
+
"@santi020k/eslint-config-core": "^3.1.0"
|
|
39
|
+
},
|
|
40
|
+
"devDependencies": {
|
|
41
|
+
"@types/node": "^26.1.2",
|
|
42
|
+
"eslint": "^10.8.0",
|
|
43
|
+
"publint": "^0.3.22",
|
|
44
|
+
"storybook": "^10.5.5",
|
|
45
|
+
"tailwindcss": "^4.3.3",
|
|
46
|
+
"tsup": "^8.5.1",
|
|
47
|
+
"typescript": "^6.0.3",
|
|
48
|
+
"zod": "^4.4.3"
|
|
49
|
+
},
|
|
50
|
+
"peerDependencies": {
|
|
51
|
+
"eslint": "^10.0.0",
|
|
52
|
+
"storybook": "^10.0.0",
|
|
53
|
+
"tailwindcss": "^3.3.0 || ^4.1.0",
|
|
54
|
+
"typescript": ">=5.0.0",
|
|
55
|
+
"zod": "^4.0.0"
|
|
56
|
+
},
|
|
57
|
+
"peerDependenciesMeta": {
|
|
58
|
+
"storybook": {
|
|
59
|
+
"optional": true
|
|
60
|
+
},
|
|
61
|
+
"tailwindcss": {
|
|
62
|
+
"optional": true
|
|
63
|
+
},
|
|
64
|
+
"typescript": {
|
|
65
|
+
"optional": true
|
|
66
|
+
},
|
|
67
|
+
"zod": {
|
|
68
|
+
"optional": true
|
|
69
|
+
}
|
|
70
|
+
},
|
|
71
|
+
"engines": {
|
|
72
|
+
"node": ">=22.19.0"
|
|
73
|
+
},
|
|
74
|
+
"repository": {
|
|
75
|
+
"type": "git",
|
|
76
|
+
"url": "git+https://github.com/santi020k/eslint-config-basic.git",
|
|
77
|
+
"directory": "packages/libraries"
|
|
78
|
+
},
|
|
79
|
+
"homepage": "https://eslint.santi020k.com/tooling/libraries",
|
|
80
|
+
"license": "MIT",
|
|
81
|
+
"scripts": {
|
|
82
|
+
"build": "tsup",
|
|
83
|
+
"check:exports": "publint",
|
|
84
|
+
"clean": "rm -rf dist",
|
|
85
|
+
"dev": "tsup --watch",
|
|
86
|
+
"lint": "eslint . --no-warn-ignored --pass-on-no-patterns",
|
|
87
|
+
"lint:fix": "eslint . --fix --no-warn-ignored --pass-on-no-patterns",
|
|
88
|
+
"typecheck": "tsc --noEmit"
|
|
89
|
+
}
|
|
90
|
+
}
|