UNPKG

@fenge/eslint-config

Version:

A super strict eslint config for linting js/ts/package.json.

71 lines 12.6 kB
import { base } from "./config/base.js"; import { html } from "./config/html.js"; import { javascript } from "./config/javascript.js"; import { packagejson } from "./config/packagejson.js"; import { typescript } from "./config/typescript.js"; export class Builder { configs = []; options; enabled = new Set(); constructor(options = {}) { this.options = options; } toConfig() { return [...base(this.options, this.enabled), ...this.configs]; } setup(configItems, { pick, omit }) { const match = (pattern, ruleKey) => { if (pattern === ruleKey) return true; if (pattern.endsWith("/*")) return ruleKey.startsWith(pattern.slice(0, -1)); return false; }; const select = (ruleKey) => { let result = true; if (pick) { result &&= pick.some((pattern) => match(pattern, ruleKey)); } if (omit) { result &&= !omit.some((pattern) => match(pattern, ruleKey)); } return result; }; const result = configItems.map((configItem) => ({ ...configItem, rules: Object.fromEntries(Object.entries(configItem.rules).filter(([ruleKey]) => select(ruleKey))), })); this.configs.push(...result); return this; } // We must use generics instead of removing them and directly using `options: Options<TsRuleKey[], TsRuleKey[]>`, // otherwise `NoDuplicate` will not work, allowing users to pass duplicate values, e.g.: `enableTypeScript({ pick: ['no-var', 'no-var'] })` enableTypeScript(options = {}) { this.enabled.add("ts"); return this.setup(typescript(), options); } enableJavaScript(options = {}) { this.enabled.add("js"); return this.setup(javascript(), options); } enablePackageJson(options = {}) { this.enabled.add("pkg"); return this.setup(packagejson(), options); } enableHtml(options = {}) { this.enabled.add("html"); return this.setup(html(), options); } enableAll(options) { return this.enableHtml(options?.html) .enablePackageJson(options?.packagejson) .enableJavaScript(options?.javascript) .enableTypeScript(options?.typescript); } append(config) { this.configs.push(config); return this; } } export default new Builder().enableAll().toConfig(); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNsaW50LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9lc2xpbnQuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxJQUFJLEVBQW9CLE1BQU0sa0JBQWtCLENBQUM7QUFDMUQsT0FBTyxFQUFFLElBQUksRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ3hDLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSx3QkFBd0IsQ0FBQztBQUNwRCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0seUJBQXlCLENBQUM7QUFDdEQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBd0NwRCxNQUFNLE9BQU8sT0FBTztJQUNELE9BQU8sR0FBbUIsRUFBRSxDQUFDO0lBQzdCLE9BQU8sQ0FBaUI7SUFFeEIsT0FBTyxHQUFHLElBQUksR0FBRyxFQUFnQyxDQUFDO0lBRW5FLFlBQVksVUFBMEIsRUFBRTtRQUN0QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztJQUN6QixDQUFDO0lBRUQsUUFBUTtRQUNOLE9BQU8sQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztJQUNoRSxDQUFDO0lBRU8sS0FBSyxDQUNYLFdBQXlDLEVBQ3pDLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBK0I7UUFFM0MsTUFBTSxLQUFLLEdBQUcsQ0FBQyxPQUFlLEVBQUUsT0FBZSxFQUFFLEVBQUU7WUFDakQsSUFBSSxPQUFPLEtBQUssT0FBTztnQkFBRSxPQUFPLElBQUksQ0FBQztZQUNyQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDO2dCQUN4QixPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FB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dCB0eXBlIHsgTGludGVyIH0gZnJvbSBcImVzbGludFwiO1xuaW1wb3J0IHsgYmFzZSwgdHlwZSBCYXNlT3B0aW9ucyB9IGZyb20gXCIuL2NvbmZpZy9iYXNlLnRzXCI7XG5pbXBvcnQgeyBodG1sIH0gZnJvbSBcIi4vY29uZmlnL2h0bWwudHNcIjtcbmltcG9ydCB7IGphdmFzY3JpcHQgfSBmcm9tIFwiLi9jb25maWcvamF2YXNjcmlwdC50c1wiO1xuaW1wb3J0IHsgcGFja2FnZWpzb24gfSBmcm9tIFwiLi9jb25maWcvcGFja2FnZWpzb24udHNcIjtcbmltcG9ydCB7IHR5cGVzY3JpcHQgfSBmcm9tIFwiLi9jb25maWcvdHlwZXNjcmlwdC50c1wiO1xuXG50eXBlIE5vRHVwbGljYXRlPEEgZXh0ZW5kcyB1bmtub3duW10+ID0ge1xuICBbSSBpbiBrZXlvZiBBXTogdHJ1ZSBleHRlbmRzIHtcbiAgICBbSiBpbiBrZXlvZiBBXTogSiBleHRlbmRzIEkgPyBmYWxzZSA6IEFbSl0gZXh0ZW5kcyBBW0ldID8gdHJ1ZSA6IGZhbHNlO1xuICB9W251bWJlcl1cbiAgICA/IG5ldmVyXG4gICAgOiBBW0ldO1xufTtcblxudHlwZSBPcmlnaW5Kc1J1bGVLZXkgPSBrZXlvZiBSZXR1cm5UeXBlPHR5cGVvZiBqYXZhc2NyaXB0PlswXVtcInJ1bGVzXCJdO1xudHlwZSBPcmlnaW5Uc1J1bGVLZXkgPSBrZXlvZiBSZXR1cm5UeXBlPHR5cGVvZiB0eXBlc2NyaXB0PlswXVtcInJ1bGVzXCJdO1xudHlwZSBPcmlnaW5Qa2dSdWxlS2V5ID0ga2V5b2YgUmV0dXJuVHlwZTx0eXBlb2YgcGFja2FnZWpzb24+WzBdW1wicnVsZXNcIl07XG50eXBlIE9yaWdpbkh0bWxSdWxlS2V5ID0ga2V5b2YgUmV0dXJuVHlwZTx0eXBlb2YgaHRtbD5bMF1bXCJydWxlc1wiXTtcblxudHlwZSBHZXRQbHVnaW5zPFQgZXh0ZW5kcyBzdHJpbmc+ID0gVCBleHRlbmRzIGAke2luZmVyIExlZnR9LyR7c3RyaW5nfWBcbiAgPyBMZWZ0XG4gIDogbmV2ZXI7XG5cbnR5cGUgSnNSdWxlS2V5ID0gT3JpZ2luSnNSdWxlS2V5IHwgYCR7R2V0UGx1Z2luczxPcmlnaW5Kc1J1bGVLZXk+fS8qYDtcbnR5cGUgVHNSdWxlS2V5ID0gT3JpZ2luVHNSdWxlS2V5IHwgYCR7R2V0UGx1Z2luczxPcmlnaW5Uc1J1bGVLZXk+fS8qYDtcbnR5cGUgUGtnUnVsZUtleSA9IE9yaWdpblBrZ1J1bGVLZXkgfCBgJHtHZXRQbHVnaW5zPE9yaWdpblBrZ1J1bGVLZXk+fS8qYDtcbnR5cGUgSHRtbFJ1bGVLZXkgPSBPcmlnaW5IdG1sUnVsZUtleSB8IGAke0dldFBsdWdpbnM8T3JpZ2luSHRtbFJ1bGVLZXk+fS8qYDtcblxudHlwZSBSdWxlVmFsdWUgPSBcImVycm9yXCIgfCBcIndhcm5cIiB8IFwib2ZmXCIgfCBbXCJlcnJvclwiIHwgXCJ3YXJuXCIsIC4uLnVua25vd25bXV07XG5pbnRlcmZhY2UgT3B0aW9uczxQIGV4dGVuZHMgc3RyaW5nW10sIE8gZXh0ZW5kcyBzdHJpbmdbXT4ge1xuICBwaWNrPzogTm9EdXBsaWNhdGU8UD47XG4gIG9taXQ/OiBOb0R1cGxpY2F0ZTxPPjtcbn1cbmludGVyZmFjZSBDb25maWdJdGVtIHtcbiAgbmFtZT86IHN0cmluZztcbiAgZmlsZXM/OiBzdHJpbmdbXTtcbiAgcGx1Z2lucz86IFJlY29yZDxzdHJpbmcsIG9iamVjdD47XG4gIHJ1bGVzOlxuICAgIHwgUGFydGlhbDxSZWNvcmQ8UGtnUnVsZUtleSB8IEpzUnVsZUtleSB8IFRzUnVsZUtleSwgUnVsZVZhbHVlPj5cbiAgICB8IFJlY29yZDxzdHJpbmcsIFJ1bGVWYWx1ZT47XG59XG5cbmV4cG9ydCB0eXBlIExpbnRlckNvbmZpZyA9IExpbnRlci5Db25maWc7XG5leHBvcnQgdHlwZSBCdWlsZGVyT3B0aW9ucyA9IEJhc2VPcHRpb25zO1xuZXhwb3J0IGNsYXNzIEJ1aWxkZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IGNvbmZpZ3M6IExpbnRlckNvbmZpZ1tdID0gW107XG4gIHByaXZhdGUgcmVhZG9ubHkgb3B0aW9uczogQnVpbGRlck9wdGlvbnM7XG5cbiAgcHJpdmF0ZSByZWFkb25seSBlbmFibGVkID0gbmV3IFNldDxcImpzXCIgfCBcInRzXCIgfCBcInBrZ1wiIHwgXCJodG1sXCI+KCk7XG5cbiAgY29uc3RydWN0b3Iob3B0aW9uczogQnVpbGRlck9wdGlvbnMgPSB7fSkge1xuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG4gIH1cblxuICB0b0NvbmZpZygpOiBMaW50ZXJDb25maWdbXSB7XG4gICAgcmV0dXJuIFsuLi5iYXNlKHRoaXMub3B0aW9ucywgdGhpcy5lbmFibGVkKSwgLi4udGhpcy5jb25maWdzXTtcbiAgfVxuXG4gIHByaXZhdGUgc2V0dXAoXG4gICAgY29uZmlnSXRlbXM6IHJlYWRvbmx5IHsgcnVsZXM6IG9iamVjdCB9W10sXG4gICAgeyBwaWNrLCBvbWl0IH06IE9wdGlvbnM8c3RyaW5nW10sIHN0cmluZ1tdPixcbiAgKSB7XG4gICAgY29uc3QgbWF0Y2ggPSAocGF0dGVybjogc3RyaW5nLCBydWxlS2V5OiBzdHJpbmcpID0+IHtcbiAgICAgIGlmIChwYXR0ZXJuID09PSBydWxlS2V5KSByZXR1cm4gdHJ1ZTtcbiAgICAgIGlmIChwYXR0ZXJuLmVuZHNXaXRoKFwiLypcIikpXG4gICAgICAgIHJldHVybiBydWxlS2V5LnN0YXJ0c1dpdGgocGF0dGVybi5zbGljZSgwLCAtMSkpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH07XG4gICAgY29uc3Qgc2VsZWN0ID0gKHJ1bGVLZXk6IHN0cmluZykgPT4ge1xuICAgICAgbGV0IHJlc3VsdCA9IHRydWU7XG4gICAgICBpZiAocGljaykge1xuICAgICAgICByZXN1bHQgJiY9IHBpY2suc29tZSgocGF0dGVybikgPT4gbWF0Y2gocGF0dGVybiwgcnVsZUtleSkpO1xuICAgICAgfVxuICAgICAgaWYgKG9taXQpIHtcbiAgICAgICAgcmVzdWx0ICYmPSAhb21pdC5zb21lKChwYXR0ZXJuKSA9PiBtYXRjaChwYXR0ZXJuLCBydWxlS2V5KSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gcmVzdWx0O1xuICAgIH07XG4gICAgY29uc3QgcmVzdWx0ID0gY29uZmlnSXRlbXMubWFwKChjb25maWdJdGVtKSA9PiAoe1xuICAgICAgLi4uY29uZmlnSXRlbSxcbiAgICAgIHJ1bGVzOiBPYmplY3QuZnJvbUVudHJpZXMoXG4gICAgICAgIE9iamVjdC5lbnRyaWVzKGNvbmZpZ0l0ZW0ucnVsZXMpLmZpbHRlcigoW3J1bGVLZXldKSA9PiBzZWxlY3QocnVsZUtleSkpLFxuICAgICAgKSxcbiAgICB9KSk7XG4gICAgdGhpcy5jb25maWdzLnB1c2goLi4ucmVzdWx0KTtcblxuICAgIHJldHVybiB0aGlzO1xuICB9XG5cbiAgLy8gV2UgbXVzdCB1c2UgZ2VuZXJpY3MgaW5zdGVhZCBvZiByZW1vdmluZyB0aGVtIGFuZCBkaXJlY3RseSB1c2luZyBgb3B0aW9uczogT3B0aW9uczxUc1J1bGVLZXlbXSwgVHNSdWxlS2V5W10+YCxcbiAgLy8gb3RoZXJ3aXNlIGBOb0R1cGxpY2F0ZWAgd2lsbCBub3Qgd29yaywgYWxsb3dpbmcgdXNlcnMgdG8gcGFzcyBkdXBsaWNhdGUgdmFsdWVzLCBlLmcuOiBgZW5hYmxlVHlwZVNjcmlwdCh7IHBpY2s6IFsnbm8tdmFyJywgJ25vLXZhciddIH0pYFxuICBlbmFibGVUeXBlU2NyaXB0PFAgZXh0ZW5kcyBUc1J1bGVLZXlbXSwgTyBleHRlbmRzIFRzUnVsZUtleVtdPihcbiAgICBvcHRpb25zOiBPcHRpb25zPFAsIE8+ID0ge30sXG4gICkge1xuICAgIHRoaXMuZW5hYmxlZC5hZGQoXCJ0c1wiKTtcbiAgICByZXR1cm4gdGhpcy5zZXR1cCh0eXBlc2NyaXB0KCksIG9wdGlvbnMpO1xuICB9XG5cbiAgZW5hYmxlSmF2YVNjcmlwdDxQIGV4dGVuZHMgSnNSdWxlS2V5W10sIE8gZXh0ZW5kcyBKc1J1bGVLZXlbXT4oXG4gICAgb3B0aW9uczogT3B0aW9uczxQLCBPPiA9IHt9LFxuICApIHtcbiAgICB0aGlzLmVuYWJsZWQuYWRkKFwianNcIik7XG4gICAgcmV0dXJuIHRoaXMuc2V0dXAoamF2YXNjcmlwdCgpLCBvcHRpb25zKTtcbiAgfVxuXG4gIGVuYWJsZVBhY2thZ2VKc29uPFAgZXh0ZW5kcyBQa2dSdWxlS2V5W10sIE8gZXh0ZW5kcyBQa2dSdWxlS2V5W10+KFxuICAgIG9wdGlvbnM6IE9wdGlvbnM8UCwgTz4gPSB7fSxcbiAgKSB7XG4gICAgdGhpcy5lbmFibGVkLmFkZChcInBrZ1wiKTtcbiAgICByZXR1cm4gdGhpcy5zZXR1cChwYWNrYWdlanNvbigpLCBvcHRpb25zKTtcbiAgfVxuXG4gIGVuYWJsZUh0bWw8UCBleHRlbmRzIEh0bWxSdWxlS2V5W10sIE8gZXh0ZW5kcyBIdG1sUnVsZUtleVtdPihcbiAgICBvcHRpb25zOiBPcHRpb25zPFAsIE8+ID0ge30sXG4gICkge1xuICAgIHRoaXMuZW5hYmxlZC5hZGQoXCJodG1sXCIpO1xuICAgIHJldHVybiB0aGlzLnNldHVwKGh0bWwoKSwgb3B0aW9ucyk7XG4gIH1cblxuICBlbmFibGVBbGw8XG4gICAgSFAgZXh0ZW5kcyBIdG1sUnVsZUtleVtdLFxuICAgIEhPIGV4dGVuZHMgSHRtbFJ1bGVLZXlbXSxcbiAgICBQUCBleHRlbmRzIFBrZ1J1bGVLZXlbXSxcbiAgICBQTyBleHRlbmRzIFBrZ1J1bGVLZXlbXSxcbiAgICBKUCBleHRlbmRzIEpzUnVsZUtleVtdLFxuICAgIEpPIGV4dGVuZHMgSnNSdWxlS2V5W10sXG4gICAgVFAgZXh0ZW5kcyBUc1J1bGVLZXlbXSxcbiAgICBUTyBleHRlbmRzIFRzUnVsZUtleVtdLFxuICA+KG9wdGlvbnM/OiB7XG4gICAgaHRtbD86IE9wdGlvbnM8SFAsIEhPPjtcbiAgICBwYWNrYWdlanNvbj86IE9wdGlvbnM8UFAsIFBPPjtcbiAgICBqYXZhc2NyaXB0PzogT3B0aW9uczxKUCwgSk8+O1xuICAgIHR5cGVzY3JpcHQ/OiBPcHRpb25zPFRQLCBUTz47XG4gIH0pIHtcbiAgICByZXR1cm4gdGhpcy5lbmFibGVIdG1sKG9wdGlvbnM/Lmh0bWwpXG4gICAgICAuZW5hYmxlUGFja2FnZUpzb24ob3B0aW9ucz8ucGFja2FnZWpzb24pXG4gICAgICAuZW5hYmxlSmF2YVNjcmlwdChvcHRpb25zPy5qYXZhc2NyaXB0KVxuICAgICAgLmVuYWJsZVR5cGVTY3JpcHQob3B0aW9ucz8udHlwZXNjcmlwdCk7XG4gIH1cblxuICBhcHBlbmQoY29uZmlnOiBDb25maWdJdGVtKSB7XG4gICAgdGhpcy5jb25maWdzLnB1c2goY29uZmlnKTtcbiAgICByZXR1cm4gdGhpcztcbiAgfVxufVxuXG5leHBvcnQgZGVmYXVsdCBuZXcgQnVpbGRlcigpLmVuYWJsZUFsbCgpLnRvQ29uZmlnKCk7XG4iXX0=