@fenge/eslint-config 0.2.0 → 0.2.1
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/CHANGELOG.md +6 -0
- package/dist/eslint.config.d.ts +12 -7
- package/dist/eslint.config.d.ts.map +1 -1
- package/dist/eslint.config.js +1 -1
- package/package.json +1 -1
- package/src/eslint.config.ts +21 -8
package/CHANGELOG.md
CHANGED
package/dist/eslint.config.d.ts
CHANGED
|
@@ -1,24 +1,29 @@
|
|
|
1
1
|
import { javascript } from "./config/javascript.js";
|
|
2
2
|
import { packagejson } from "./config/packagejson.js";
|
|
3
3
|
import { typescript } from "./config/typescript.js";
|
|
4
|
+
type NoDuplicate<A extends unknown[]> = {
|
|
5
|
+
[I in keyof A]: true extends {
|
|
6
|
+
[J in keyof A]: J extends I ? false : A[J] extends A[I] ? true : false;
|
|
7
|
+
}[number] ? never : A[I];
|
|
8
|
+
};
|
|
4
9
|
type JsRuleKey = keyof ReturnType<typeof javascript>[0]["rules"];
|
|
5
10
|
type TsRuleKey = keyof ReturnType<typeof typescript>[0]["rules"];
|
|
6
11
|
type PkgRuleKey = keyof ReturnType<typeof packagejson>[0]["rules"];
|
|
7
|
-
interface Options<T extends string> {
|
|
8
|
-
pick?: T
|
|
9
|
-
omit?: T
|
|
12
|
+
interface Options<T extends string[]> {
|
|
13
|
+
pick?: NoDuplicate<T>;
|
|
14
|
+
omit?: NoDuplicate<T>;
|
|
10
15
|
extend?: Record<string, "error" | "warn" | "off" | ["error" | "warn", ...unknown[]]>;
|
|
11
|
-
override?: Partial<Record<T, "error" | "warn" | "off" | ["error" | "warn", ...unknown[]]>>;
|
|
16
|
+
override?: Partial<Record<T[number], "error" | "warn" | "off" | ["error" | "warn", ...unknown[]]>>;
|
|
12
17
|
}
|
|
13
18
|
export declare class Builder {
|
|
14
19
|
private readonly configs;
|
|
15
20
|
toConfig(): object[];
|
|
16
21
|
private setup;
|
|
17
|
-
enableTypescript(options?: Options<
|
|
22
|
+
enableTypescript<T extends TsRuleKey[]>(options?: Options<T> & {
|
|
18
23
|
project?: string;
|
|
19
24
|
}): this;
|
|
20
|
-
enableJavascript(options?: Options<
|
|
21
|
-
enablePackagejson(options?: Options<
|
|
25
|
+
enableJavascript<T extends JsRuleKey[]>(options?: Options<T>): this;
|
|
26
|
+
enablePackagejson<T extends PkgRuleKey[]>(options?: Options<T>): this;
|
|
22
27
|
}
|
|
23
28
|
declare const _default: object[];
|
|
24
29
|
export default _default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"eslint.config.d.ts","sourceRoot":"","sources":["../src/eslint.config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,KAAK,SAAS,GAAG,MAAM,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACjE,KAAK,SAAS,GAAG,MAAM,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACjE,KAAK,UAAU,GAAG,MAAM,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAEnE,UAAU,OAAO,CAAC,CAAC,SAAS,MAAM;
|
|
1
|
+
{"version":3,"file":"eslint.config.d.ts","sourceRoot":"","sources":["../src/eslint.config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AAEpD,KAAK,WAAW,CAAC,CAAC,SAAS,OAAO,EAAE,IAAI;KACrC,CAAC,IAAI,MAAM,CAAC,GAAG,IAAI,SAAS;SAC1B,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,KAAK;KACvE,CAAC,MAAM,CAAC,GACL,KAAK,GACL,CAAC,CAAC,CAAC,CAAC;CACT,CAAC;AAEF,KAAK,SAAS,GAAG,MAAM,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACjE,KAAK,SAAS,GAAG,MAAM,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AACjE,KAAK,UAAU,GAAG,MAAM,UAAU,CAAC,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;AAEnE,UAAU,OAAO,CAAC,CAAC,SAAS,MAAM,EAAE;IAClC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACtB,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,CAAC,EAAE,MAAM,CACb,MAAM,EACN,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAC5D,CAAC;IACF,QAAQ,CAAC,EAAE,OAAO,CAChB,MAAM,CACJ,CAAC,CAAC,MAAM,CAAC,EACT,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,CAAC,OAAO,GAAG,MAAM,EAAE,GAAG,OAAO,EAAE,CAAC,CAC5D,CACF,CAAC;CACH;AAED,qBAAa,OAAO;IAClB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2C;IAEnE,QAAQ;IAIR,OAAO,CAAC,KAAK;IAqDb,gBAAgB,CAAC,CAAC,SAAS,SAAS,EAAE,EACpC,OAAO,GAAE,OAAO,CAAC,CAAC,CAAC,GAAG;QAAE,OAAO,CAAC,EAAE,MAAM,CAAA;KAAO;IAKjD,gBAAgB,CAAC,CAAC,SAAS,SAAS,EAAE,EAAE,OAAO,GAAE,OAAO,CAAC,CAAC,CAAM;IAIhE,iBAAiB,CAAC,CAAC,SAAS,UAAU,EAAE,EAAE,OAAO,GAAE,OAAO,CAAC,CAAC,CAAM;CAGnE;;AAED,wBAIc"}
|
package/dist/eslint.config.js
CHANGED
|
@@ -65,4 +65,4 @@ export default new Builder()
|
|
|
65
65
|
.enableJavascript()
|
|
66
66
|
.enableTypescript()
|
|
67
67
|
.toConfig();
|
|
68
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXNsaW50LmNvbmZpZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9lc2xpbnQuY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQ3BELE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQztBQUN0RCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUE2QnBELE1BQU0sT0FBTyxPQUFPO0lBQ0QsT0FBTyxHQUFhLENBQUMsR0FBRyxTQUFTLEVBQUUsRUFBRSxHQUFHLE1BQU0sRUFBRSxDQUFDLENBQUM7SUFFbkUsUUFBUTtRQUNOLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztJQUN0QixDQUFDO0lBRU8sS0FBSyxDQUNYLENBQUMsVUFBVSxFQUFFLEdBQUcsWUFBWSxDQUczQixFQUNELEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxNQUFNLEdBQUcsRUFBRSxFQUFFLFFBQVEsR0FBRyxFQUFFLEVBQXFCO1FBRTdELE1BQU0sTUFBTSxHQUFHLENBQUMsT0FBZSxFQUFFLEVBQUU7WUFDakMsSUFBSSxDQUFDLElBQUksSUFBSSxDQUFDLElBQUksRUFBRSxDQUFDO2dCQUNuQixPQUFPLElBQUksQ0FBQztZQUNkLENBQUM7aUJBQU0sSUFBSSxJQUFJLElBQUksQ0FBQyxJQUFJLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxJQUFJLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ2hDLENBQUM7aUJBQU0sSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUM7WUFD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LENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBnaXRpZ25vcmUgfSBmcm9tIFwiLi9jb25maWcvZ2l0aWdub3JlLmpzXCI7XG5pbXBvcnQgeyBpZ25vcmUgfSBmcm9tIFwiLi9jb25maWcvaWdub3JlLmpzXCI7XG5pbXBvcnQgeyBqYXZhc2NyaXB0IH0gZnJvbSBcIi4vY29uZmlnL2phdmFzY3JpcHQuanNcIjtcbmltcG9ydCB7IHBhY2thZ2Vqc29uIH0gZnJvbSBcIi4vY29uZmlnL3BhY2thZ2Vqc29uLmpzXCI7XG5pbXBvcnQgeyB0eXBlc2NyaXB0IH0gZnJvbSBcIi4vY29uZmlnL3R5cGVzY3JpcHQuanNcIjtcblxudHlwZSBOb0R1cGxpY2F0ZTxBIGV4dGVuZHMgdW5rbm93bltdPiA9IHtcbiAgW0kgaW4ga2V5b2YgQV06IHRydWUgZXh0ZW5kcyB7XG4gICAgW0ogaW4ga2V5b2YgQV06IEogZXh0ZW5kcyBJID8gZmFsc2UgOiBBW0pdIGV4dGVuZHMgQVtJXSA/IHRydWUgOiBmYWxzZTtcbiAgfVtudW1iZXJdXG4gICAgPyBuZXZlclxuICAgIDogQVtJXTtcbn07XG5cbnR5cGUgSnNSdWxlS2V5ID0ga2V5b2YgUmV0dXJuVHlwZTx0eXBlb2YgamF2YXNjcmlwdD5bMF1bXCJydWxlc1wiXTtcbnR5cGUgVHNSdWxlS2V5ID0ga2V5b2YgUmV0dXJuVHlwZTx0eXBlb2YgdHlwZXNjcmlwdD5bMF1bXCJydWxlc1wiXTtcbnR5cGUgUGtnUnVsZUtleSA9IGtleW9mIFJldHVyblR5cGU8dHlwZW9mIHBhY2thZ2Vqc29uPlswXVtcInJ1bGVzXCJdO1xuXG5pbnRlcmZhY2UgT3B0aW9uczxUIGV4dGVuZHMgc3RyaW5nW10+IHtcbiAgcGljaz86IE5vRHVwbGljYXRlPFQ+O1xuICBvbWl0PzogTm9EdXBsaWNhdGU8VD47XG4gIGV4dGVuZD86IFJlY29yZDxcbiAgICBzdHJpbmcsXG4gICAgXCJlcnJvclwiIHwgXCJ3YXJuXCIgfCBcIm9mZlwiIHwgW1wiZXJyb3JcIiB8IFwid2FyblwiLCAuLi51bmtub3duW11dXG4gID47XG4gIG92ZXJyaWRlPzogUGFydGlhbDxcbiAgICBSZWNvcmQ8XG4gICAgICBUW251bWJlcl0sXG4gICAgICBcImVycm9yXCIgfCBcIndhcm5cIiB8IFwib2ZmXCIgfCBbXCJlcnJvclwiIHwgXCJ3YXJuXCIsIC4uLnVua25vd25bXV1cbiAgICA+XG4gID47XG59XG5cbmV4cG9ydCBjbGFzcyBCdWlsZGVyIHtcbiAgcHJpdmF0ZSByZWFkb25seSBjb25maWdzOiBvYmplY3RbXSA9IFsuLi5naXRpZ25vcmUoKSwgLi4uaWdub3JlKCldO1xuXG4gIHRvQ29uZmlnKCkge1xuICAgIHJldHVybiB0aGlzLmNvbmZpZ3M7XG4gIH1cblxuICBwcml2YXRlIHNldHVwKFxuICAgIFttYWluQ29uZmlnLCAuLi5vdGhlckNvbmZpZ3NdOiByZWFkb25seSBbXG4gICAgICB7IHBsdWdpbnM6IG9iamVjdDsgcnVsZXM6IG9iamVjdCB9LFxuICAgICAgLi4ub2JqZWN0W10sXG4gICAgXSxcbiAgICB7IHBpY2ssIG9taXQsIGV4dGVuZCA9IHt9LCBvdmVycmlkZSA9IHt9IH06IE9wdGlvbnM8c3RyaW5nW10+LFxuICApIHtcbiAgICBjb25zdCBzZWxlY3QgPSAocnVsZUtleTogc3RyaW5nKSA9PiB7XG4gICAgICBpZiAoIXBpY2sgJiYgIW9taXQpIHtcbiAgICAgICAgcmV0dXJuIHRydWU7XG4gICAgICB9IGVsc2UgaWYgKHBpY2sgJiYgIW9taXQpIHtcbiAgICAgICAgcmV0dXJuIHBpY2suaW5jbHVkZXMocnVsZUtleSk7XG4gICAgICB9IGVsc2UgaWYgKCFwaWNrICYmIG9taXQpIHtcbiAgICAgICAgcmV0dXJuICFvbWl0LmluY2x1ZGVzKHJ1bGVLZXkpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiWW91IGNhbm5vdCBzcGVjaWZ5IGJvdGggcGljayBhbmQgb21pdFwiKTtcbiAgICAgIH1cbiAgICB9O1xuICAgIGNvbnN0IHJ1bGVzID0gT2JqZWN0LmZyb21FbnRyaWVzKFxuICAgICAgT2JqZWN0LmVudHJpZXMobWFpbkNvbmZpZy5ydWxlcykuZmlsdGVyKChbcnVsZUtleV0pID0+IHNlbGVjdChydWxlS2V5KSksXG4gICAgKTtcbiAgICAvLyBjaGVjayBgb3ZlcnJpZGVgIGZpZWxkXG4gICAgT2JqZWN0LmtleXMob3ZlcnJpZGUpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKCEoa2V5IGluIHJ1bGVzKSkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBvdmVycmlkaW5nIHJ1bGUga2V5ICR7a2V5fSBpcyBub3QgZXhpc3RpbmcuYCk7XG4gICAgICB9XG4gICAgfSk7XG4gICAgLy8gY2hlY2sgYGV4dGVuZGAgZmllbGRcbiAgICBPYmplY3Qua2V5cyhleHRlbmQpLmZvckVhY2goKGtleSkgPT4ge1xuICAgICAgaWYgKGtleSBpbiBydWxlcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFRoZSBleHRlbmRpbmcgcnVsZSBrZXkgJHtrZXl9IGlzIGFscmVhZHkgZXhpc3RpbmcuYCk7XG4gICAgICB9XG4gICAgICBpZiAoa2V5LmluY2x1ZGVzKFwiL1wiKSkge1xuICAgICAgICBjb25zdCBwbHVnaW5OYW1lID0ga2V5LnNwbGl0KFwiL1wiKVswXTtcbiAgICAgICAgaWYgKCFwbHVnaW5OYW1lKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgVGhlIGV4dGVuZGluZyBydWxlIGtleSAnJHtrZXl9JyBpcyBpbnZhbGlkYCk7XG4gICAgICAgIGlmICghKHBsdWdpbk5hbWUgaW4gbWFpbkNvbmZpZy5wbHVnaW5zKSkge1xuICAgICAgICAgIGNvbnN0IHN1cHBvcnRlZFBsdWdpbnMgPSBPYmplY3Qua2V5cyhtYWluQ29uZmlnLnBsdWdpbnMpXG4gICAgICAgICAgICAubWFwKChrKSA9PiBgJyR7a30nYClcbiAgICAgICAgICAgIC5qb2luKFwiLFwiKTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICAgICBgVGhlIHBsdWdpbiBuYW1lICcke3BsdWdpbk5hbWV9JyBvZiBleHRlbmRpbmcgcnVsZSBrZXkgJyR7a2V5fScgaXMgbm90IHN1cHBvcnRlZC4gT25seSAke3N1cHBvcnRlZFBsdWdpbnN9IHBsdWdpbnMgYXJlIHN1cHBvcnRlZC5gLFxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLmNvbmZpZ3MucHVzaChcbiAgICAgIHsgLi4ubWFpbkNvbmZpZywgcnVsZXM6IHsgLi4ucnVsZXMsIC4uLm92ZXJyaWRlLCAuLi5leHRlbmQgfSB9LFxuICAgICAgLi4ub3RoZXJDb25maWdzLFxuICAgICk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICBlbmFibGVUeXBlc2NyaXB0PFQgZXh0ZW5kcyBUc1J1bGVLZXlbXT4oXG4gICAgb3B0aW9uczogT3B0aW9uczxUPiAmIHsgcHJvamVjdD86IHN0cmluZyB9ID0ge30sXG4gICkge1xuICAgIHJldHVybiB0aGlzLnNldHVwKHR5cGVzY3JpcHQob3B0aW9ucy5wcm9qZWN0KSwgb3B0aW9ucyk7XG4gIH1cblxuICBlbmFibGVKYXZhc2NyaXB0PFQgZXh0ZW5kcyBKc1J1bGVLZXlbXT4ob3B0aW9uczogT3B0aW9uczxUPiA9IHt9KSB7XG4gICAgcmV0dXJuIHRoaXMuc2V0dXAoamF2YXNjcmlwdCgpLCBvcHRpb25zKTtcbiAgfVxuXG4gIGVuYWJsZVBhY2thZ2Vqc29uPFQgZXh0ZW5kcyBQa2dSdWxlS2V5W10+KG9wdGlvbnM6IE9wdGlvbnM8VD4gPSB7fSkge1xuICAgIHJldHVybiB0aGlzLnNldHVwKHBhY2thZ2Vqc29uKCksIG9wdGlvbnMpO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IG5ldyBCdWlsZGVyKClcbiAgLmVuYWJsZVBhY2thZ2Vqc29uKClcbiAgLmVuYWJsZUphdmFzY3JpcHQoKVxuICAuZW5hYmxlVHlwZXNjcmlwdCgpXG4gIC50b0NvbmZpZygpO1xuIl19
|
package/package.json
CHANGED
package/src/eslint.config.ts
CHANGED
|
@@ -4,19 +4,30 @@ import { javascript } from "./config/javascript.js";
|
|
|
4
4
|
import { packagejson } from "./config/packagejson.js";
|
|
5
5
|
import { typescript } from "./config/typescript.js";
|
|
6
6
|
|
|
7
|
+
type NoDuplicate<A extends unknown[]> = {
|
|
8
|
+
[I in keyof A]: true extends {
|
|
9
|
+
[J in keyof A]: J extends I ? false : A[J] extends A[I] ? true : false;
|
|
10
|
+
}[number]
|
|
11
|
+
? never
|
|
12
|
+
: A[I];
|
|
13
|
+
};
|
|
14
|
+
|
|
7
15
|
type JsRuleKey = keyof ReturnType<typeof javascript>[0]["rules"];
|
|
8
16
|
type TsRuleKey = keyof ReturnType<typeof typescript>[0]["rules"];
|
|
9
17
|
type PkgRuleKey = keyof ReturnType<typeof packagejson>[0]["rules"];
|
|
10
18
|
|
|
11
|
-
interface Options<T extends string> {
|
|
12
|
-
pick?: T
|
|
13
|
-
omit?: T
|
|
19
|
+
interface Options<T extends string[]> {
|
|
20
|
+
pick?: NoDuplicate<T>;
|
|
21
|
+
omit?: NoDuplicate<T>;
|
|
14
22
|
extend?: Record<
|
|
15
23
|
string,
|
|
16
24
|
"error" | "warn" | "off" | ["error" | "warn", ...unknown[]]
|
|
17
25
|
>;
|
|
18
26
|
override?: Partial<
|
|
19
|
-
Record<
|
|
27
|
+
Record<
|
|
28
|
+
T[number],
|
|
29
|
+
"error" | "warn" | "off" | ["error" | "warn", ...unknown[]]
|
|
30
|
+
>
|
|
20
31
|
>;
|
|
21
32
|
}
|
|
22
33
|
|
|
@@ -32,7 +43,7 @@ export class Builder {
|
|
|
32
43
|
{ plugins: object; rules: object },
|
|
33
44
|
...object[],
|
|
34
45
|
],
|
|
35
|
-
{ pick, omit, extend = {}, override = {} }: Options<string>,
|
|
46
|
+
{ pick, omit, extend = {}, override = {} }: Options<string[]>,
|
|
36
47
|
) {
|
|
37
48
|
const select = (ruleKey: string) => {
|
|
38
49
|
if (!pick && !omit) {
|
|
@@ -80,15 +91,17 @@ export class Builder {
|
|
|
80
91
|
return this;
|
|
81
92
|
}
|
|
82
93
|
|
|
83
|
-
enableTypescript
|
|
94
|
+
enableTypescript<T extends TsRuleKey[]>(
|
|
95
|
+
options: Options<T> & { project?: string } = {},
|
|
96
|
+
) {
|
|
84
97
|
return this.setup(typescript(options.project), options);
|
|
85
98
|
}
|
|
86
99
|
|
|
87
|
-
enableJavascript(options: Options<
|
|
100
|
+
enableJavascript<T extends JsRuleKey[]>(options: Options<T> = {}) {
|
|
88
101
|
return this.setup(javascript(), options);
|
|
89
102
|
}
|
|
90
103
|
|
|
91
|
-
enablePackagejson(options: Options<
|
|
104
|
+
enablePackagejson<T extends PkgRuleKey[]>(options: Options<T> = {}) {
|
|
92
105
|
return this.setup(packagejson(), options);
|
|
93
106
|
}
|
|
94
107
|
}
|