@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.
- package/README.md +58 -0
- package/dist/build-metadata.json +3 -3
- package/dist/index.d.ts +7 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +605 -250
- package/dist/index.js.map +45 -42
- package/dist/rules/ban-instances.d.ts +6 -7
- package/dist/rules/ban-instances.d.ts.map +1 -1
- package/dist/rules/ban-react-fc.d.ts +4 -7
- package/dist/rules/ban-react-fc.d.ts.map +1 -1
- package/dist/rules/enforce-ianitor-check-type.d.ts +7 -3
- package/dist/rules/enforce-ianitor-check-type.d.ts.map +1 -1
- package/dist/rules/no-async-constructor.d.ts +4 -5
- package/dist/rules/no-async-constructor.d.ts.map +1 -1
- package/dist/rules/no-color3-constructor.d.ts +4 -3
- package/dist/rules/no-color3-constructor.d.ts.map +1 -1
- package/dist/rules/no-commented-code.d.ts.map +1 -1
- package/dist/rules/no-god-components.d.ts.map +1 -1
- package/dist/rules/no-identity-map.d.ts +4 -2
- package/dist/rules/no-identity-map.d.ts.map +1 -1
- package/dist/rules/no-instance-methods-without-this.d.ts +4 -9
- package/dist/rules/no-instance-methods-without-this.d.ts.map +1 -1
- package/dist/rules/no-print.d.ts +4 -3
- package/dist/rules/no-print.d.ts.map +1 -1
- package/dist/rules/no-useless-use-spring.d.ts +4 -4
- package/dist/rules/no-useless-use-spring.d.ts.map +1 -1
- package/dist/rules/no-warn.d.ts +4 -3
- package/dist/rules/no-warn.d.ts.map +1 -1
- package/dist/rules/prefer-class-properties.d.ts +4 -3
- package/dist/rules/prefer-class-properties.d.ts.map +1 -1
- package/dist/rules/prefer-early-return.d.ts +4 -4
- package/dist/rules/prefer-early-return.d.ts.map +1 -1
- package/dist/rules/prefer-module-scope-constants.d.ts +4 -2
- package/dist/rules/prefer-module-scope-constants.d.ts.map +1 -1
- package/dist/rules/prefer-pascal-case-enums.d.ts +4 -4
- package/dist/rules/prefer-pascal-case-enums.d.ts.map +1 -1
- package/dist/rules/prefer-pattern-replacements.d.ts +6 -11
- package/dist/rules/prefer-pattern-replacements.d.ts.map +1 -1
- package/dist/rules/prefer-sequence-overloads.d.ts +4 -7
- package/dist/rules/prefer-sequence-overloads.d.ts.map +1 -1
- package/dist/rules/prefer-singular-enums.d.ts +4 -4
- package/dist/rules/prefer-singular-enums.d.ts.map +1 -1
- package/dist/rules/react-hooks-strict-return.d.ts +4 -3
- package/dist/rules/react-hooks-strict-return.d.ts.map +1 -1
- package/dist/rules/require-named-effect-functions.d.ts.map +1 -1
- package/dist/rules/require-react-component-keys.d.ts +4 -5
- package/dist/rules/require-react-component-keys.d.ts.map +1 -1
- package/dist/rules/require-react-display-names.d.ts +11 -0
- package/dist/rules/require-react-display-names.d.ts.map +1 -0
- package/dist/rules/strict-component-boundaries.d.ts +4 -8
- package/dist/rules/strict-component-boundaries.d.ts.map +1 -1
- package/dist/utilities/configure-utilities.d.ts +7 -0
- package/dist/utilities/configure-utilities.d.ts.map +1 -1
- package/dist/utilities/create-rule.d.ts +9 -0
- package/dist/utilities/create-rule.d.ts.map +1 -0
- 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.
|
package/dist/build-metadata.json
CHANGED
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
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,
|
|
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:
|
|
63
|
+
readonly rules: ReadonlyRecord<string, LooseRuleDefinition>;
|
|
63
64
|
readonly configs: {
|
|
64
65
|
readonly recommended: PluginConfig;
|
|
65
66
|
};
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,
|
|
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"}
|