@fookiejs/eslint-plugin 0.1.2 → 0.1.4

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/dist/index.d.ts CHANGED
@@ -28,7 +28,7 @@ declare const plugin: {
28
28
  "same-type-comparison": import("@typescript-eslint/utils/ts-eslint").RuleModule<"mismatchedTypes", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
29
29
  name: string;
30
30
  };
31
- "no-any": import("@typescript-eslint/utils/ts-eslint").RuleModule<"noAny", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
31
+ "no-any": import("@typescript-eslint/utils/ts-eslint").RuleModule<"noAny" | "noObject" | "noObjectConstructorType" | "noEmptyObjectType", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
32
32
  name: string;
33
33
  };
34
34
  "no-type-assertion": import("@typescript-eslint/utils/ts-eslint").RuleModule<"noTypeAssertion", [], unknown, import("@typescript-eslint/utils/ts-eslint").RuleListener> & {
@@ -1,5 +1,7 @@
1
1
  import { ESLintUtils } from "@typescript-eslint/utils";
2
- export declare const noAny: ESLintUtils.RuleModule<"noAny", [], unknown, ESLintUtils.RuleListener> & {
2
+ type MessageIds = "noAny" | "noObject" | "noObjectConstructorType" | "noEmptyObjectType";
3
+ export declare const noAny: ESLintUtils.RuleModule<MessageIds, [], unknown, ESLintUtils.RuleListener> & {
3
4
  name: string;
4
5
  };
6
+ export {};
5
7
  //# sourceMappingURL=no-any.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"no-any.d.ts","sourceRoot":"","sources":["../../src/rules/no-any.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAY,MAAM,0BAA0B,CAAA;AAUhE,eAAO,MAAM,KAAK;;CAgBhB,CAAA"}
1
+ {"version":3,"file":"no-any.d.ts","sourceRoot":"","sources":["../../src/rules/no-any.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAY,MAAM,0BAA0B,CAAA;AAQhE,KAAK,UAAU,GAAG,OAAO,GAAG,UAAU,GAAG,yBAAyB,GAAG,mBAAmB,CAAA;AAExF,eAAO,MAAM,KAAK;;CAkChB,CAAA"}
@@ -4,9 +4,14 @@ export const noAny = createRule({
4
4
  name: "no-any",
5
5
  meta: {
6
6
  type: "problem",
7
- docs: { description: "Disallow the any type" },
7
+ docs: { description: "Disallow the any and object types" },
8
8
  schema: [],
9
- messages: { noAny: "Do not use 'any'. Use a specific type instead." },
9
+ messages: {
10
+ noAny: "Do not use 'any'. Use a specific type instead.",
11
+ noObject: "Do not use 'object'. It is nearly as broad as 'any' — use a specific interface or Record<K, V> instead.",
12
+ noObjectConstructorType: "Do not use 'Object' as a type. Use a specific interface or Record<K, V> instead. (Object.keys() etc. are fine.)",
13
+ noEmptyObjectType: "Do not use '{}' as a type. Use a specific interface or unknown instead.",
14
+ },
10
15
  },
11
16
  defaultOptions: [],
12
17
  create(context) {
@@ -14,6 +19,19 @@ export const noAny = createRule({
14
19
  TSAnyKeyword(node) {
15
20
  context.report({ node, messageId: "noAny" });
16
21
  },
22
+ TSObjectKeyword(node) {
23
+ context.report({ node, messageId: "noObject" });
24
+ },
25
+ TSTypeReference(node) {
26
+ if (node.typeName.type === "Identifier" && node.typeName.name === "Object") {
27
+ context.report({ node, messageId: "noObjectConstructorType" });
28
+ }
29
+ },
30
+ TSTypeLiteral(node) {
31
+ if (node.members.length === 0) {
32
+ context.report({ node, messageId: "noEmptyObjectType" });
33
+ }
34
+ },
17
35
  };
18
36
  },
19
37
  });
@@ -1 +1 @@
1
- {"version":3,"file":"no-any.js","sourceRoot":"","sources":["../../src/rules/no-any.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CACxC,CAAC,IAAI,EAAE,EAAE,CACP,yEAAyE,IAAI,KAAK,CACrF,CAAA;AAKD,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAsB;IACnD,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,EAAE,WAAW,EAAE,uBAAuB,EAAE;QAC9C,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE,EAAE,KAAK,EAAE,gDAAgD,EAAE;KACtE;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,YAAY,CAAC,IAA2B;gBACtC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;YAC9C,CAAC;SACF,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"no-any.js","sourceRoot":"","sources":["../../src/rules/no-any.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CACxC,CAAC,IAAI,EAAE,EAAE,CACP,yEAAyE,IAAI,KAAK,CACrF,CAAA;AAKD,MAAM,CAAC,MAAM,KAAK,GAAG,UAAU,CAAsB;IACnD,IAAI,EAAE,QAAQ;IACd,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,EAAE,WAAW,EAAE,mCAAmC,EAAE;QAC1D,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,KAAK,EAAE,gDAAgD;YACvD,QAAQ,EAAE,yGAAyG;YACnH,uBAAuB,EAAE,iHAAiH;YAC1I,iBAAiB,EAAE,yEAAyE;SAC7F;KACF;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,YAAY,CAAC,IAA2B;gBACtC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;YAC9C,CAAC;YACD,eAAe,CAAC,IAA8B;gBAC5C,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC,CAAA;YACjD,CAAC;YACD,eAAe,CAAC,IAA8B;gBAC5C,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC3E,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,yBAAyB,EAAE,CAAC,CAAA;gBAChE,CAAC;YACH,CAAC;YACD,aAAa,CAAC,IAA4B;gBACxC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC9B,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAA;gBAC1D,CAAC;YACH,CAAC;SACF,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"no-null-undefined.d.ts","sourceRoot":"","sources":["../../src/rules/no-null-undefined.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAY,MAAM,0BAA0B,CAAA;AAQhE,KAAK,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,YAAY,CAAA;AAEzD,eAAO,MAAM,eAAe;;CAmC1B,CAAA"}
1
+ {"version":3,"file":"no-null-undefined.d.ts","sourceRoot":"","sources":["../../src/rules/no-null-undefined.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAY,MAAM,0BAA0B,CAAA;AAQhE,KAAK,UAAU,GAAG,QAAQ,GAAG,aAAa,GAAG,YAAY,CAAA;AAEzD,eAAO,MAAM,eAAe;;CAuC1B,CAAA"}
@@ -20,6 +20,9 @@ export const noNullUndefined = createRule({
20
20
  "Literal[value=null]"(node) {
21
21
  context.report({ node, messageId: "noNull" });
22
22
  },
23
+ TSNullKeyword(node) {
24
+ context.report({ node, messageId: "noNull" });
25
+ },
23
26
  "Identifier[name='undefined']"(node) {
24
27
  context.report({ node, messageId: "noUndefined" });
25
28
  },
@@ -1 +1 @@
1
- {"version":3,"file":"no-null-undefined.js","sourceRoot":"","sources":["../../src/rules/no-null-undefined.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CACxC,CAAC,IAAI,EAAE,EAAE,CACP,yEAAyE,IAAI,KAAK,CACrF,CAAA;AAKD,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAsB;IAC7D,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,0DAA0D;SACxE;QACD,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,MAAM,EACJ,mFAAmF;YACrF,WAAW,EACT,gFAAgF;YAClF,UAAU,EACR,sFAAsF;SACzF;KACF;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,qBAAqB,CAAC,IAAsB;gBAC1C,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAA;YAC/C,CAAC;YAED,8BAA8B,CAAC,IAAyB;gBACtD,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAA;YACpD,CAAC;YAED,eAAe,CAAC,IAA8B;gBAC5C,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;oBAC7B,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAA;gBACnD,CAAC;YACH,CAAC;SACF,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
1
+ {"version":3,"file":"no-null-undefined.js","sourceRoot":"","sources":["../../src/rules/no-null-undefined.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEhE,MAAM,UAAU,GAAG,WAAW,CAAC,WAAW,CACxC,CAAC,IAAI,EAAE,EAAE,CACP,yEAAyE,IAAI,KAAK,CACrF,CAAA;AAKD,MAAM,CAAC,MAAM,eAAe,GAAG,UAAU,CAAsB;IAC7D,IAAI,EAAE,mBAAmB;IACzB,IAAI,EAAE;QACJ,IAAI,EAAE,SAAS;QACf,IAAI,EAAE;YACJ,WAAW,EAAE,0DAA0D;SACxE;QACD,MAAM,EAAE,EAAE;QACV,QAAQ,EAAE;YACR,MAAM,EACJ,mFAAmF;YACrF,WAAW,EACT,gFAAgF;YAClF,UAAU,EACR,sFAAsF;SACzF;KACF;IACD,cAAc,EAAE,EAAE;IAClB,MAAM,CAAC,OAAO;QACZ,OAAO;YACL,qBAAqB,CAAC,IAAsB;gBAC1C,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAA;YAC/C,CAAC;YAED,aAAa,CAAC,IAA4B;gBACxC,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC,CAAA;YAC/C,CAAC;YAED,8BAA8B,CAAC,IAAyB;gBACtD,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,aAAa,EAAE,CAAC,CAAA;YACpD,CAAC;YAED,eAAe,CAAC,IAA8B;gBAC5C,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;oBAC7B,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC,CAAA;gBACnD,CAAC;YACH,CAAC;SACF,CAAA;IACH,CAAC;CACF,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fookiejs/eslint-plugin",
3
- "version": "0.1.2",
3
+ "version": "0.1.4",
4
4
  "description": "ESLint plugin for TypeScript code quality — naming, structure, type safety.",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",