Skip to content

Commit 3f3a87c

Browse files
committed
Expose flat configs from package root as .configs['flat/*'].
1 parent db48411 commit 3f3a87c

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

src/index.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,8 @@ const pluginLegacy = {
3333
},
3434
rules: typescriptConfig.rules,
3535
},
36+
"flat/recommended": recommendedConfig,
37+
"flat/typescript": typescriptConfig,
3638
},
3739
};
3840

src/plugin.ts

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,11 @@ import styleProp from "./rules/style-prop";
2828
import noArrayHandlers from "./rules/no-array-handlers";
2929
// import validateJsxNesting from "./rules/validate-jsx-nesting";
3030

31+
// Use require() so that `package.json` doesn't get copied to `dist`
32+
// eslint-disable-next-line @typescript-eslint/no-var-requires
33+
const { name, version } = require("../package.json");
34+
const meta = { name, version };
35+
3136
const allRules = {
3237
"components-return-once": componentsReturnOnce,
3338
"event-handlers": eventHandlers,
@@ -52,4 +57,4 @@ const allRules = {
5257
// "validate-jsx-nesting": validateJsxNesting
5358
};
5459

55-
export const plugin = { rules: allRules };
60+
export const plugin = { meta, rules: allRules };

test/fixture.test.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { FlatESLint } from "eslint/use-at-your-own-risk";
66
import * as tsParser from "@typescript-eslint/parser";
77
import recommendedConfig from "eslint-plugin-solid/configs/recommended";
88
import typescriptConfig from "eslint-plugin-solid/configs/typescript";
9+
import plugin from "eslint-plugin-solid";
910

1011
const cwd = path.resolve("test", "fixture");
1112
const validDir = path.join(cwd, "valid");
@@ -66,3 +67,24 @@ test.concurrent("fixture (flat)", async () => {
6667

6768
expect(results.filter((result) => result.filePath === jsxUndefPath).length).toBe(1);
6869
});
70+
71+
describe("config format", () => {
72+
test("flat config has meta", () => {
73+
expect(recommendedConfig.plugins.solid.meta.name).toBe("eslint-plugin-solid");
74+
expect(recommendedConfig.plugins.solid.meta.version).toEqual(expect.any(String));
75+
expect(typescriptConfig.plugins.solid.meta.name).toBe("eslint-plugin-solid");
76+
expect(typescriptConfig.plugins.solid.meta.version).toEqual(expect.any(String));
77+
});
78+
79+
test('flat configs are also exposed on plugin.configs["flat/*"]', () => {
80+
// include flat configs on legacy config object with `flat/` prefix. The `fixture (flat)` test
81+
// passing means that an equivalent config using `configs["flat/*"]` will also pass.
82+
expect(plugin.configs["flat/recommended"]).toBe(recommendedConfig);
83+
expect(plugin.configs["flat/typescript"]).toBe(typescriptConfig);
84+
});
85+
86+
test("legacy configs use strings, not modules", () => {
87+
expect(plugin.configs.recommended.plugins).toStrictEqual(["solid"]);
88+
expect(plugin.configs.typescript.plugins).toStrictEqual(["solid"]);
89+
});
90+
});

0 commit comments

Comments
 (0)