@fenge/eslint-config
Version:
A super strict eslint config for linting js/ts/package.json.
44 lines • 5.61 kB
JavaScript
import childProcess from "node:child_process";
export function base(options, enabled) {
const filesMap = {
js: "**/*.{js,cjs,mjs,jsx}",
ts: "**/*.{ts,cts,mts,tsx}",
pkg: "package.json",
};
const files = [...enabled].map((key) => filesMap[key]);
return [
// Global ignore. Refer: https://eslint.org/docs/latest/use/configure/configuration-files#specifying-files-and-ignores.
{
name: "fenge/gitignore",
// There are 2 kinds of exception when running `git ls-files`:
// 1. Git is not installed. The `stdout` will be null.
// 2. The running directory is not initialized by `git init` command. The `stdout` will an empty string.
ignores: (childProcess.spawnSync("git", [
"ls-files",
"--others",
"--ignored",
"--exclude-standard",
"--directory",
], { encoding: "utf8" }).stdout || "")
.split("\n")
.filter(Boolean),
},
{
name: "fenge/common",
files,
linterOptions: options,
},
// Ignore unsupported files.
// This config is for suppressing error when linting a directory which does not contain supported files.
{
name: "fenge/ignore",
files: ["**"], // I've tried all. Only '**' works.
ignores: files,
processor: {
preprocess: (_text, _filename) => [""],
postprocess: (_messages) => [], // Returning empty array to ignore all errors
},
},
];
}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmFzZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb25maWcvYmFzZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLFlBQVksTUFBTSxvQkFBb0IsQ0FBQztBQUs5QyxNQUFNLFVBQVUsSUFBSSxDQUNsQixPQUFvQixFQUNwQixPQUFpQztJQUVqQyxNQUFNLFFBQVEsR0FBRztRQUNmLEVBQUUsRUFBRSx1QkFBdUI7UUFDM0IsRUFBRSxFQUFFLHVCQUF1QjtRQUMzQixHQUFHLEVBQUUsY0FBYztLQUNYLENBQUM7SUFDWCxNQUFNLEtBQUssR0FBRyxDQUFDLEdBQUcsT0FBTyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUN2RCxPQUFPO1FBQ0wsdUhBQXVIO1FBQ3ZIO1lBQ0UsSUFBSSxFQUFFLGlCQUFpQjtZQUN2Qiw4REFBOEQ7WUFDOUQsc0RBQXNEO1lBQ3RELHdHQUF3RztZQUN4RyxPQUFPLEVBQUUsQ0FDUCxZQUFZLENBQUMsU0FBUyxDQUNwQixLQUFLLEVBQ0w7Z0JBQ0UsVUFBVTtnQkFDVixVQUFVO2dCQUNWLFdBQVc7Z0JBQ1gsb0JBQW9CO2dCQUNwQixhQUFhO2FBQ2QsRUFDRCxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsQ0FDckIsQ0FBQyxNQUFNLElBQUksRUFBRSxDQUNmO2lCQUNFLEtBQUssQ0FBQyxJQUFJLENBQUM7aUJBQ1gsTUFBTSxDQUFDLE9BQU8sQ0FBQztTQUNuQjtRQUNEO1lBQ0UsSUFBSSxFQUFFLGNBQWM7WUFDcEIsS0FBSztZQUNMLGFBQWEsRUFBRSxPQUFPO1NBQ3ZCO1FBQ0QsNEJBQTRCO1FBQzVCLHdHQUF3RztRQUN4RztZQUNFLElBQUksRUFBRSxjQUFjO1lBQ3BCLEtBQUssRUFBRSxDQUFDLElBQUksQ0FBQyxFQUFFLG1DQUFtQztZQUNsRCxPQUFPLEVBQUUsS0FBSztZQUNkLFNBQVMsRUFBRTtnQkFDVCxVQUFVLEVBQUUsQ0FBQyxLQUFhLEVBQUUsU0FBaUIsRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ3RELFdBQVcsRUFBRSxDQUFDLFNBQXNCLEVBQUUsRUFBRSxDQUFDLEVBQUUsRUFBRSw2Q0FBNkM7YUFDM0Y7U0FDRjtLQUNPLENBQUM7QUFDYixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNoaWxkUHJvY2VzcyBmcm9tIFwibm9kZTpjaGlsZF9wcm9jZXNzXCI7XG5pbXBvcnQgdHlwZSB7IExpbnRlciB9IGZyb20gXCJlc2xpbnRcIjtcblxuZXhwb3J0IHR5cGUgQmFzZU9wdGlvbnMgPSBMaW50ZXIuTGludGVyT3B0aW9ucztcblxuZXhwb3J0IGZ1bmN0aW9uIGJhc2UoXG4gIG9wdGlvbnM6IEJhc2VPcHRpb25zLFxuICBlbmFibGVkOiBTZXQ8XCJqc1wiIHwgXCJ0c1wiIHwgXCJwa2dcIj4sXG4pOiBMaW50ZXIuQ29uZmlnW10ge1xuICBjb25zdCBmaWxlc01hcCA9IHtcbiAgICBqczogXCIqKi8qLntqcyxjanMsbWpzLGpzeH1cIixcbiAgICB0czogXCIqKi8qLnt0cyxjdHMsbXRzLHRzeH1cIixcbiAgICBwa2c6IFwicGFja2FnZS5qc29uXCIsXG4gIH0gYXMgY29uc3Q7XG4gIGNvbnN0IGZpbGVzID0gWy4uLmVuYWJsZWRdLm1hcCgoa2V5KSA9PiBmaWxlc01hcFtrZXldKTtcbiAgcmV0dXJuIFtcbiAgICAvLyBHbG9iYWwgaWdub3JlLiBSZWZlcjogaHR0cHM6Ly9lc2xpbnQub3JnL2RvY3MvbGF0ZXN0L3VzZS9jb25maWd1cmUvY29uZmlndXJhdGlvbi1maWxlcyNzcGVjaWZ5aW5nLWZpbGVzLWFuZC1pZ25vcmVzLlxuICAgIHtcbiAgICAgIG5hbWU6IFwiZmVuZ2UvZ2l0aWdub3JlXCIsXG4gICAgICAvLyBUaGVyZSBhcmUgMiBraW5kcyBvZiBleGNlcHRpb24gd2hlbiBydW5uaW5nIGBnaXQgbHMtZmlsZXNgOlxuICAgICAgLy8gMS4gR2l0IGlzIG5vdCBpbnN0YWxsZWQuIFRoZSBgc3Rkb3V0YCB3aWxsIGJlIG51bGwuXG4gICAgICAvLyAyLiBUaGUgcnVubmluZyBkaXJlY3RvcnkgaXMgbm90IGluaXRpYWxpemVkIGJ5IGBnaXQgaW5pdGAgY29tbWFuZC4gVGhlIGBzdGRvdXRgIHdpbGwgYW4gZW1wdHkgc3RyaW5nLlxuICAgICAgaWdub3JlczogKFxuICAgICAgICBjaGlsZFByb2Nlc3Muc3Bhd25TeW5jKFxuICAgICAgICAgIFwiZ2l0XCIsXG4gICAgICAgICAgW1xuICAgICAgICAgICAgXCJscy1maWxlc1wiLFxuICAgICAgICAgICAgXCItLW90aGVyc1wiLFxuICAgICAgICAgICAgXCItLWlnbm9yZWRcIixcbiAgICAgICAgICAgIFwiLS1leGNsdWRlLXN0YW5kYXJkXCIsXG4gICAgICAgICAgICBcIi0tZGlyZWN0b3J5XCIsXG4gICAgICAgICAgXSxcbiAgICAgICAgICB7IGVuY29kaW5nOiBcInV0ZjhcIiB9LFxuICAgICAgICApLnN0ZG91dCB8fCBcIlwiXG4gICAgICApXG4gICAgICAgIC5zcGxpdChcIlxcblwiKVxuICAgICAgICAuZmlsdGVyKEJvb2xlYW4pLFxuICAgIH0sXG4gICAge1xuICAgICAgbmFtZTogXCJmZW5nZS9jb21tb25cIixcbiAgICAgIGZpbGVzLFxuICAgICAgbGludGVyT3B0aW9uczogb3B0aW9ucyxcbiAgICB9LFxuICAgIC8vIElnbm9yZSB1bnN1cHBvcnRlZCBmaWxlcy5cbiAgICAvLyBUaGlzIGNvbmZpZyBpcyBmb3Igc3VwcHJlc3NpbmcgZXJyb3Igd2hlbiBsaW50aW5nIGEgZGlyZWN0b3J5IHdoaWNoIGRvZXMgbm90IGNvbnRhaW4gc3VwcG9ydGVkIGZpbGVzLlxuICAgIHtcbiAgICAgIG5hbWU6IFwiZmVuZ2UvaWdub3JlXCIsXG4gICAgICBmaWxlczogW1wiKipcIl0sIC8vIEkndmUgdHJpZWQgYWxsLiBPbmx5ICcqKicgd29ya3MuXG4gICAgICBpZ25vcmVzOiBmaWxlcyxcbiAgICAgIHByb2Nlc3Nvcjoge1xuICAgICAgICBwcmVwcm9jZXNzOiAoX3RleHQ6IHN0cmluZywgX2ZpbGVuYW1lOiBzdHJpbmcpID0+IFtcIlwiXSxcbiAgICAgICAgcG9zdHByb2Nlc3M6IChfbWVzc2FnZXM6IHVua25vd25bXVtdKSA9PiBbXSwgLy8gUmV0dXJuaW5nIGVtcHR5IGFycmF5IHRvIGlnbm9yZSBhbGwgZXJyb3JzXG4gICAgICB9LFxuICAgIH0sXG4gIF0gYXMgY29uc3Q7XG59XG4iXX0=