eslint-plugin-zod-mini 1.5.0 → 1.6.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 CHANGED
@@ -49,6 +49,7 @@ Find out more about [Oxlint's `jsPLugins`](https://oxc.rs/docs/guide/usage/linte
49
49
  | [no-unnecessary-readonly](docs/rules/no-unnecessary-readonly.md) | Disallow `z.readonly()` on schemas whose output is already immutable | | 🔧 | |
50
50
  | [prefer-enum-over-literal-union](docs/rules/prefer-enum-over-literal-union.md) | Prefer `z.enum()` over `z.union()` when all members are string literals. | ✅ | 🔧 | |
51
51
  | [prefer-meta](docs/rules/prefer-meta.md) | Enforce usage of `z.meta()` over `z.describe()` | ✅ | 🔧 | |
52
+ | [prefer-nullish](docs/rules/prefer-nullish.md) | Enforce `z.nullish()` instead of combining `z.optional()` and `z.nullable()` | ✅ | 🔧 | |
52
53
  | [prefer-tuple-over-array-length](docs/rules/prefer-tuple-over-array-length.md) | Prefer `z.tuple()` over a length-constrained `z.array()` so the length is preserved in the inferred type. | | 🔧 | |
53
54
  | [require-brand-type-parameter](docs/rules/require-brand-type-parameter.md) | Require type parameter on `.brand()` functions | ✅ | | 💡 |
54
55
  | [require-error-message](docs/rules/require-error-message.md) | Enforce that custom refinements include an error message | ✅ | 🔧 | |
package/dist/index.cjs CHANGED
@@ -15,6 +15,7 @@ const require_no_unknown_schema = require("./rules/no-unknown-schema.cjs");
15
15
  const require_no_unnecessary_readonly = require("./rules/no-unnecessary-readonly.cjs");
16
16
  const require_prefer_enum_over_literal_union = require("./rules/prefer-enum-over-literal-union.cjs");
17
17
  const require_prefer_meta = require("./rules/prefer-meta.cjs");
18
+ const require_prefer_nullish = require("./rules/prefer-nullish.cjs");
18
19
  const require_prefer_tuple_over_array_length = require("./rules/prefer-tuple-over-array-length.cjs");
19
20
  const require_require_brand_type_parameter = require("./rules/require-brand-type-parameter.cjs");
20
21
  const require_require_error_message = require("./rules/require-error-message.cjs");
@@ -42,6 +43,7 @@ const eslintPluginZodMini = {
42
43
  "no-unnecessary-readonly": require_no_unnecessary_readonly.noUnnecessaryReadonly,
43
44
  "prefer-enum-over-literal-union": require_prefer_enum_over_literal_union.preferEnumOverLiteralUnion,
44
45
  "prefer-meta": require_prefer_meta.preferMeta,
46
+ "prefer-nullish": require_prefer_nullish.preferNullish,
45
47
  "prefer-tuple-over-array-length": require_prefer_tuple_over_array_length.preferTupleOverArrayLength,
46
48
  "require-brand-type-parameter": require_require_brand_type_parameter.requireBrandTypeParameter,
47
49
  "require-error-message": require_require_error_message.requireErrorMessage,
@@ -62,6 +64,7 @@ const recommendedConfig = {
62
64
  "zod-mini/no-throw-in-refine": "error",
63
65
  "zod-mini/prefer-enum-over-literal-union": "error",
64
66
  "zod-mini/prefer-meta": "error",
67
+ "zod-mini/prefer-nullish": "error",
65
68
  "zod-mini/require-brand-type-parameter": "error",
66
69
  "zod-mini/require-error-message": "error"
67
70
  }
package/dist/index.mjs CHANGED
@@ -15,6 +15,7 @@ import { noUnknownSchema } from "./rules/no-unknown-schema.mjs";
15
15
  import { noUnnecessaryReadonly } from "./rules/no-unnecessary-readonly.mjs";
16
16
  import { preferEnumOverLiteralUnion } from "./rules/prefer-enum-over-literal-union.mjs";
17
17
  import { preferMeta } from "./rules/prefer-meta.mjs";
18
+ import { preferNullish } from "./rules/prefer-nullish.mjs";
18
19
  import { preferTupleOverArrayLength } from "./rules/prefer-tuple-over-array-length.mjs";
19
20
  import { requireBrandTypeParameter } from "./rules/require-brand-type-parameter.mjs";
20
21
  import { requireErrorMessage } from "./rules/require-error-message.mjs";
@@ -42,6 +43,7 @@ const eslintPluginZodMini = {
42
43
  "no-unnecessary-readonly": noUnnecessaryReadonly,
43
44
  "prefer-enum-over-literal-union": preferEnumOverLiteralUnion,
44
45
  "prefer-meta": preferMeta,
46
+ "prefer-nullish": preferNullish,
45
47
  "prefer-tuple-over-array-length": preferTupleOverArrayLength,
46
48
  "require-brand-type-parameter": requireBrandTypeParameter,
47
49
  "require-error-message": requireErrorMessage,
@@ -62,6 +64,7 @@ const recommendedConfig = {
62
64
  "zod-mini/no-throw-in-refine": "error",
63
65
  "zod-mini/prefer-enum-over-literal-union": "error",
64
66
  "zod-mini/prefer-meta": "error",
67
+ "zod-mini/prefer-nullish": "error",
65
68
  "zod-mini/require-brand-type-parameter": "error",
66
69
  "zod-mini/require-error-message": "error"
67
70
  }
@@ -0,0 +1,18 @@
1
+ const require_create_plugin_rule = require("../utils/create-plugin-rule.cjs");
2
+ let _eslint_zod_utils = require("@eslint-zod/utils");
3
+ let _eslint_zod_utils_rule_builders_prefer_nullish = require("@eslint-zod/utils/rule-builders/prefer-nullish");
4
+ //#region src/rules/prefer-nullish.ts
5
+ const preferNullish = require_create_plugin_rule.createZodMiniPluginRule({
6
+ name: "prefer-nullish",
7
+ meta: {
8
+ type: "suggestion",
9
+ fixable: "code",
10
+ docs: { description: "Enforce `z.nullish()` instead of combining `z.optional()` and `z.nullable()`" },
11
+ messages: { preferNullish: "Combining `z.optional()` and `z.nullable()` is redundant. Use `z.nullish()` instead." },
12
+ schema: []
13
+ },
14
+ defaultOptions: [],
15
+ create: (0, _eslint_zod_utils_rule_builders_prefer_nullish.buildPreferNullishCreate)(_eslint_zod_utils.zodMiniImportScope)
16
+ });
17
+ //#endregion
18
+ exports.preferNullish = preferNullish;
@@ -0,0 +1,18 @@
1
+ import { createZodMiniPluginRule } from "../utils/create-plugin-rule.mjs";
2
+ import { zodMiniImportScope } from "@eslint-zod/utils";
3
+ import { buildPreferNullishCreate } from "@eslint-zod/utils/rule-builders/prefer-nullish";
4
+ //#region src/rules/prefer-nullish.ts
5
+ const preferNullish = createZodMiniPluginRule({
6
+ name: "prefer-nullish",
7
+ meta: {
8
+ type: "suggestion",
9
+ fixable: "code",
10
+ docs: { description: "Enforce `z.nullish()` instead of combining `z.optional()` and `z.nullable()`" },
11
+ messages: { preferNullish: "Combining `z.optional()` and `z.nullable()` is redundant. Use `z.nullish()` instead." },
12
+ schema: []
13
+ },
14
+ defaultOptions: [],
15
+ create: buildPreferNullishCreate(zodMiniImportScope)
16
+ });
17
+ //#endregion
18
+ export { preferNullish };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eslint-plugin-zod-mini",
3
- "version": "1.5.0",
3
+ "version": "1.6.0",
4
4
  "description": "ESLint plugin that adds custom linting rules to enforce best practices when using Zod Mini",
5
5
  "keywords": [
6
6
  "eslint",
@@ -39,7 +39,7 @@
39
39
  },
40
40
  "dependencies": {
41
41
  "@typescript-eslint/utils": "^8.62.0",
42
- "@eslint-zod/utils": "2.4.0"
42
+ "@eslint-zod/utils": "2.5.0"
43
43
  },
44
44
  "devDependencies": {
45
45
  "@marcalexiei/prettier-config": "2.0.0",