@pobammer-ts/eslint-cease-nonsense-rules 1.11.0 → 1.12.0

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.
Files changed (56) hide show
  1. package/README.md +58 -0
  2. package/dist/build-metadata.json +3 -3
  3. package/dist/index.d.ts +7 -6
  4. package/dist/index.d.ts.map +1 -1
  5. package/dist/index.js +605 -250
  6. package/dist/index.js.map +45 -42
  7. package/dist/rules/ban-instances.d.ts +6 -7
  8. package/dist/rules/ban-instances.d.ts.map +1 -1
  9. package/dist/rules/ban-react-fc.d.ts +4 -7
  10. package/dist/rules/ban-react-fc.d.ts.map +1 -1
  11. package/dist/rules/enforce-ianitor-check-type.d.ts +7 -3
  12. package/dist/rules/enforce-ianitor-check-type.d.ts.map +1 -1
  13. package/dist/rules/no-async-constructor.d.ts +4 -5
  14. package/dist/rules/no-async-constructor.d.ts.map +1 -1
  15. package/dist/rules/no-color3-constructor.d.ts +4 -3
  16. package/dist/rules/no-color3-constructor.d.ts.map +1 -1
  17. package/dist/rules/no-commented-code.d.ts.map +1 -1
  18. package/dist/rules/no-god-components.d.ts.map +1 -1
  19. package/dist/rules/no-identity-map.d.ts +4 -2
  20. package/dist/rules/no-identity-map.d.ts.map +1 -1
  21. package/dist/rules/no-instance-methods-without-this.d.ts +4 -9
  22. package/dist/rules/no-instance-methods-without-this.d.ts.map +1 -1
  23. package/dist/rules/no-print.d.ts +4 -3
  24. package/dist/rules/no-print.d.ts.map +1 -1
  25. package/dist/rules/no-useless-use-spring.d.ts +4 -4
  26. package/dist/rules/no-useless-use-spring.d.ts.map +1 -1
  27. package/dist/rules/no-warn.d.ts +4 -3
  28. package/dist/rules/no-warn.d.ts.map +1 -1
  29. package/dist/rules/prefer-class-properties.d.ts +4 -3
  30. package/dist/rules/prefer-class-properties.d.ts.map +1 -1
  31. package/dist/rules/prefer-early-return.d.ts +4 -4
  32. package/dist/rules/prefer-early-return.d.ts.map +1 -1
  33. package/dist/rules/prefer-module-scope-constants.d.ts +4 -2
  34. package/dist/rules/prefer-module-scope-constants.d.ts.map +1 -1
  35. package/dist/rules/prefer-pascal-case-enums.d.ts +4 -4
  36. package/dist/rules/prefer-pascal-case-enums.d.ts.map +1 -1
  37. package/dist/rules/prefer-pattern-replacements.d.ts +6 -11
  38. package/dist/rules/prefer-pattern-replacements.d.ts.map +1 -1
  39. package/dist/rules/prefer-sequence-overloads.d.ts +4 -7
  40. package/dist/rules/prefer-sequence-overloads.d.ts.map +1 -1
  41. package/dist/rules/prefer-singular-enums.d.ts +4 -4
  42. package/dist/rules/prefer-singular-enums.d.ts.map +1 -1
  43. package/dist/rules/react-hooks-strict-return.d.ts +4 -3
  44. package/dist/rules/react-hooks-strict-return.d.ts.map +1 -1
  45. package/dist/rules/require-named-effect-functions.d.ts.map +1 -1
  46. package/dist/rules/require-react-component-keys.d.ts +4 -5
  47. package/dist/rules/require-react-component-keys.d.ts.map +1 -1
  48. package/dist/rules/require-react-display-names.d.ts +11 -0
  49. package/dist/rules/require-react-display-names.d.ts.map +1 -0
  50. package/dist/rules/strict-component-boundaries.d.ts +4 -8
  51. package/dist/rules/strict-component-boundaries.d.ts.map +1 -1
  52. package/dist/utilities/configure-utilities.d.ts +7 -0
  53. package/dist/utilities/configure-utilities.d.ts.map +1 -1
  54. package/dist/utilities/create-rule.d.ts +9 -0
  55. package/dist/utilities/create-rule.d.ts.map +1 -0
  56. package/package.json +17 -17
package/README.md CHANGED
@@ -65,6 +65,7 @@ export default [
65
65
  "cease-nonsense/require-named-effect-functions": "error",
66
66
  "cease-nonsense/require-paired-calls": "error",
67
67
  "cease-nonsense/require-react-component-keys": "error",
68
+ "cease-nonsense/require-react-display-names": "error",
68
69
  "cease-nonsense/strict-component-boundaries": "error",
69
70
  "cease-nonsense/use-exhaustive-dependencies": "error",
70
71
  "cease-nonsense/use-hook-at-top-level": "error",
@@ -428,6 +429,63 @@ function UserProfile({ userId }) {
428
429
  }
429
430
  ```
430
431
 
432
+ #### `require-react-display-names`
433
+
434
+ Require `displayName` property on exported `React.memo` components and `React.createContext` contexts for better debugging.
435
+
436
+ **Configuration**
437
+
438
+ ```typescript
439
+ {
440
+ "cease-nonsense/require-react-display-names": ["error", {
441
+ "environment": "roblox-ts" // or "standard" for regular React
442
+ }]
443
+ }
444
+ ```
445
+
446
+ **❌ Bad**
447
+
448
+ ```typescript
449
+ import { memo } from "@rbxts/react";
450
+
451
+ function CoolFrameNoMemo() {
452
+ return <frame />;
453
+ }
454
+
455
+ // Direct export without displayName
456
+ export default memo(CoolFrameNoMemo);
457
+ ```
458
+
459
+ ```typescript
460
+ import React from "@rbxts/react";
461
+
462
+ // Missing displayName
463
+ const ErrorBoundaryContext = React.createContext<unknown>(undefined);
464
+ export default ErrorBoundaryContext;
465
+ ```
466
+
467
+ **✅ Good**
468
+
469
+ ```typescript
470
+ import { memo } from "@rbxts/react";
471
+
472
+ function CoolFrameNoMemo() {
473
+ return <frame />;
474
+ }
475
+
476
+ export const CoolFrame = memo(CoolFrameNoMemo);
477
+ CoolFrame.displayName = "CoolFrame";
478
+ export default CoolFrame;
479
+ ```
480
+
481
+ ```typescript
482
+ import React from "@rbxts/react";
483
+
484
+ const ErrorBoundaryContext = React.createContext<unknown>(undefined);
485
+ ErrorBoundaryContext.displayName = "ErrorBoundaryContext";
486
+ export default ErrorBoundaryContext;
487
+ ```
488
+
431
489
  #### `react-hooks-strict-return`
432
490
 
433
491
  React hooks must return a tuple of ≤2 elements or a single object. Prevents unwieldy hook return types.
@@ -1,5 +1,5 @@
1
1
  {
2
- "commit": "33b03ad58201aa1a174c1516a9b52a659f746afc",
3
- "time": "2025-12-28T16:15:11.008Z",
4
- "version": "1.11.0"
2
+ "commit": "0c941c22d06cca23db96491078c85d1b80fb0191",
3
+ "time": "2026-01-01T05:26:31.863Z",
4
+ "version": "1.12.0"
5
5
  }
package/dist/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- import type { TSESLint } from "@typescript-eslint/utils";
2
- import type { Rule } from "eslint";
3
- type AnyRuleModule = Rule.RuleModule | TSESLint.AnyRuleModuleWithMetaDocs;
1
+ import type { LooseRuleDefinition } from "@typescript-eslint/utils/ts-eslint";
2
+ import type { ReadonlyRecord } from "./types/utility-types.d";
4
3
  export type { BanInstancesOptions } from "./rules/ban-instances";
5
4
  export type { ComplexityConfiguration } from "./rules/enforce-ianitor-check-type";
6
5
  export type { NoGodComponentsOptions } from "./rules/no-god-components";
@@ -11,8 +10,9 @@ export type { NoUselessUseSpringOptions } from "./rules/no-useless-use-spring";
11
10
  export type { EffectFunctionOptions, EnvironmentMode, HookConfiguration } from "./rules/require-named-effect-functions";
12
11
  export type { PairConfiguration, RequirePairedCallsOptions } from "./rules/require-paired-calls";
13
12
  export type { ReactKeysOptions } from "./rules/require-react-component-keys";
13
+ export type { RequireReactDisplayNamesOptions } from "./rules/require-react-display-names";
14
14
  export type { HookEntry, UseExhaustiveDependenciesOptions } from "./rules/use-exhaustive-dependencies";
15
- export { createBanInstancesOptions, createComplexityConfiguration, createEffectFunctionOptions, createHookConfiguration, createNoGodComponentsOptions, createNoInstanceMethodsOptions, createNoShorthandOptions, createNoUselessUseSpringOptions, createPairConfiguration, createPreferPatternReplacementsOptions, createReactKeysOptions, createRequirePairedCallsOptions, createUseExhaustiveDependenciesOptions, createUseHookAtTopLevelOptions, defaultRobloxProfilePair, } from "./utilities/configure-utilities";
15
+ export { createBanInstancesOptions, createComplexityConfiguration, createEffectFunctionOptions, createHookConfiguration, createNoGodComponentsOptions, createNoInstanceMethodsOptions, createNoShorthandOptions, createNoUselessUseSpringOptions, createPairConfiguration, createPreferPatternReplacementsOptions, createReactKeysOptions, createRequirePairedCallsOptions, createRequireReactDisplayNamesOptions, createUseExhaustiveDependenciesOptions, createUseHookAtTopLevelOptions, defaultRobloxProfilePair, } from "./utilities/configure-utilities";
16
16
  export type { Pattern, PreferPatternReplacementsOptions } from "./utilities/pattern-replacement";
17
17
  export { pattern } from "./utilities/pattern-replacement";
18
18
  /**
@@ -34,7 +34,7 @@ export { pattern } from "./utilities/pattern-replacement";
34
34
  declare const recommended: {
35
35
  readonly plugins: {
36
36
  readonly "cease-nonsense": {
37
- readonly rules: Readonly<Record<string, AnyRuleModule>>;
37
+ readonly rules: Readonly<Record<string, LooseRuleDefinition>>;
38
38
  };
39
39
  };
40
40
  readonly rules: {
@@ -53,13 +53,14 @@ declare const recommended: {
53
53
  readonly "cease-nonsense/prefer-udim2-shorthand": "error";
54
54
  readonly "cease-nonsense/require-named-effect-functions": "error";
55
55
  readonly "cease-nonsense/require-react-component-keys": "error";
56
+ readonly "cease-nonsense/require-react-display-names": "error";
56
57
  readonly "cease-nonsense/use-exhaustive-dependencies": "error";
57
58
  readonly "cease-nonsense/use-hook-at-top-level": "error";
58
59
  };
59
60
  };
60
61
  type PluginConfig = typeof recommended;
61
62
  interface Plugin {
62
- readonly rules: Readonly<Record<string, AnyRuleModule>>;
63
+ readonly rules: ReadonlyRecord<string, LooseRuleDefinition>;
63
64
  readonly configs: {
64
65
  readonly recommended: PluginConfig;
65
66
  };
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AA+BnC,KAAK,aAAa,GAAG,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,yBAAyB,CAAC;AAE1E,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,YAAY,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAClF,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,YAAY,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACzF,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,YAAY,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AACxH,YAAY,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACjG,YAAY,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,YAAY,EAAE,SAAS,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AACvG,OAAO,EACN,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,EAC3B,uBAAuB,EACvB,4BAA4B,EAC5B,8BAA8B,EAC9B,wBAAwB,EACxB,+BAA+B,EAC/B,uBAAuB,EACvB,sCAAsC,EACtC,sBAAsB,EACtB,+BAA+B,EAC/B,sCAAsC,EACtC,8BAA8B,EAC9B,wBAAwB,GACxB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAuC1D;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;CAuBP,CAAC;AAEX,KAAK,YAAY,GAAG,OAAO,WAAW,CAAC;AAEvC,UAAU,MAAM;IACf,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC;IACxD,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAA;KAAE,CAAC;CACzD;AAED,QAAA,MAAM,MAAM,EAAE,MAGJ,CAAC;AAEX,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AA+B9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAE9D,YAAY,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AACjE,YAAY,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAClF,YAAY,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AACxE,YAAY,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACpE,YAAY,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AACzF,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,YAAY,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,YAAY,EAAE,qBAAqB,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,wCAAwC,CAAC;AACxH,YAAY,EAAE,iBAAiB,EAAE,yBAAyB,EAAE,MAAM,8BAA8B,CAAC;AACjG,YAAY,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAC7E,YAAY,EAAE,+BAA+B,EAAE,MAAM,qCAAqC,CAAC;AAC3F,YAAY,EAAE,SAAS,EAAE,gCAAgC,EAAE,MAAM,qCAAqC,CAAC;AACvG,OAAO,EACN,yBAAyB,EACzB,6BAA6B,EAC7B,2BAA2B,EAC3B,uBAAuB,EACvB,4BAA4B,EAC5B,8BAA8B,EAC9B,wBAAwB,EACxB,+BAA+B,EAC/B,uBAAuB,EACvB,sCAAsC,EACtC,sBAAsB,EACtB,+BAA+B,EAC/B,qCAAqC,EACrC,sCAAsC,EACtC,8BAA8B,EAC9B,wBAAwB,GACxB,MAAM,iCAAiC,CAAC;AACzC,YAAY,EAAE,OAAO,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AACjG,OAAO,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAwC1D;;;;;;;;;;;;;;;GAeG;AACH,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;CAwBP,CAAC;AAEX,KAAK,YAAY,GAAG,OAAO,WAAW,CAAC;AAEvC,UAAU,MAAM;IACf,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAC5D,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,WAAW,EAAE,YAAY,CAAA;KAAE,CAAC;CACzD;AAED,QAAA,MAAM,MAAM,EAAE,MAGJ,CAAC;AAEX,eAAe,MAAM,CAAC"}