eslint-plugin-zod 3.5.1 → 3.5.3

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 (138) hide show
  1. package/dist/_virtual/_rolldown/runtime.cjs +23 -0
  2. package/dist/index.cjs +94 -83
  3. package/dist/index.d.cts +17 -16
  4. package/dist/index.d.mts +24 -0
  5. package/dist/index.mjs +98 -0
  6. package/dist/meta.cjs +11 -11
  7. package/dist/meta.mjs +10 -0
  8. package/dist/rules/array-style.cjs +88 -101
  9. package/dist/rules/array-style.mjs +89 -0
  10. package/dist/rules/consistent-import-source.cjs +59 -66
  11. package/dist/rules/consistent-import-source.mjs +60 -0
  12. package/dist/rules/consistent-import.cjs +146 -172
  13. package/dist/rules/consistent-import.mjs +152 -0
  14. package/dist/rules/consistent-object-schema-type.cjs +81 -84
  15. package/dist/rules/consistent-object-schema-type.mjs +81 -0
  16. package/dist/rules/no-any-schema.cjs +62 -67
  17. package/dist/rules/no-any-schema.mjs +62 -0
  18. package/dist/rules/no-empty-custom-schema.cjs +34 -40
  19. package/dist/rules/no-empty-custom-schema.mjs +36 -0
  20. package/dist/rules/no-number-schema-with-int.cjs +56 -62
  21. package/dist/rules/no-number-schema-with-int.mjs +57 -0
  22. package/dist/rules/no-optional-and-default-together.cjs +69 -80
  23. package/dist/rules/no-optional-and-default-together.mjs +71 -0
  24. package/dist/rules/no-string-schema-with-uuid.cjs +57 -63
  25. package/dist/rules/no-string-schema-with-uuid.mjs +58 -0
  26. package/dist/rules/no-throw-in-refine.cjs +69 -87
  27. package/dist/rules/no-throw-in-refine.mjs +69 -0
  28. package/dist/rules/no-unknown-schema.cjs +29 -35
  29. package/dist/rules/no-unknown-schema.mjs +31 -0
  30. package/dist/rules/prefer-enum-over-literal-union.cjs +63 -79
  31. package/dist/rules/prefer-enum-over-literal-union.mjs +63 -0
  32. package/dist/rules/prefer-meta-last.cjs +47 -63
  33. package/dist/rules/prefer-meta-last.mjs +49 -0
  34. package/dist/rules/prefer-meta.cjs +38 -48
  35. package/dist/rules/prefer-meta.mjs +40 -0
  36. package/dist/rules/prefer-namespace-import.cjs +110 -142
  37. package/dist/rules/prefer-namespace-import.mjs +116 -0
  38. package/dist/rules/prefer-string-schema-with-trim.cjs +45 -52
  39. package/dist/rules/prefer-string-schema-with-trim.mjs +47 -0
  40. package/dist/rules/require-brand-type-parameter.cjs +47 -60
  41. package/dist/rules/require-brand-type-parameter.mjs +49 -0
  42. package/dist/rules/require-error-message.cjs +84 -102
  43. package/dist/rules/require-error-message.mjs +84 -0
  44. package/dist/rules/require-schema-suffix.cjs +67 -78
  45. package/dist/rules/require-schema-suffix.mjs +67 -0
  46. package/dist/rules/schema-error-property-style.cjs +95 -107
  47. package/dist/rules/schema-error-property-style.mjs +94 -0
  48. package/dist/utils/build-zod-chain-replacement-fix.cjs +28 -29
  49. package/dist/utils/build-zod-chain-replacement-fix.mjs +30 -0
  50. package/dist/utils/create-plugin-rule.cjs +6 -6
  51. package/dist/utils/create-plugin-rule.mjs +6 -0
  52. package/dist/utils/detect-zod-schema-root-node.cjs +94 -96
  53. package/dist/utils/detect-zod-schema-root-node.mjs +101 -0
  54. package/dist/utils/is-zod-import-source.cjs +14 -18
  55. package/dist/utils/is-zod-import-source.mjs +16 -0
  56. package/dist/utils/track-zod-schema-imports.cjs +61 -63
  57. package/dist/utils/track-zod-schema-imports.mjs +64 -0
  58. package/package.json +14 -17
  59. package/dist/index.d.ts +0 -22
  60. package/dist/index.js +0 -84
  61. package/dist/meta.d.cts +0 -3
  62. package/dist/meta.d.ts +0 -3
  63. package/dist/meta.js +0 -8
  64. package/dist/rules/array-style.d.cts +0 -11
  65. package/dist/rules/array-style.d.ts +0 -11
  66. package/dist/rules/array-style.js +0 -99
  67. package/dist/rules/consistent-import-source.d.cts +0 -11
  68. package/dist/rules/consistent-import-source.d.ts +0 -11
  69. package/dist/rules/consistent-import-source.js +0 -64
  70. package/dist/rules/consistent-import.d.cts +0 -12
  71. package/dist/rules/consistent-import.d.ts +0 -12
  72. package/dist/rules/consistent-import.js +0 -176
  73. package/dist/rules/consistent-object-schema-type.d.cts +0 -13
  74. package/dist/rules/consistent-object-schema-type.d.ts +0 -13
  75. package/dist/rules/consistent-object-schema-type.js +0 -82
  76. package/dist/rules/no-any-schema.d.cts +0 -6
  77. package/dist/rules/no-any-schema.d.ts +0 -6
  78. package/dist/rules/no-any-schema.js +0 -65
  79. package/dist/rules/no-empty-custom-schema.d.cts +0 -5
  80. package/dist/rules/no-empty-custom-schema.d.ts +0 -5
  81. package/dist/rules/no-empty-custom-schema.js +0 -38
  82. package/dist/rules/no-number-schema-with-int.d.cts +0 -5
  83. package/dist/rules/no-number-schema-with-int.d.ts +0 -5
  84. package/dist/rules/no-number-schema-with-int.js +0 -60
  85. package/dist/rules/no-optional-and-default-together.d.cts +0 -12
  86. package/dist/rules/no-optional-and-default-together.d.ts +0 -12
  87. package/dist/rules/no-optional-and-default-together.js +0 -78
  88. package/dist/rules/no-string-schema-with-uuid.d.cts +0 -5
  89. package/dist/rules/no-string-schema-with-uuid.d.ts +0 -5
  90. package/dist/rules/no-string-schema-with-uuid.js +0 -61
  91. package/dist/rules/no-throw-in-refine.d.cts +0 -5
  92. package/dist/rules/no-throw-in-refine.d.ts +0 -5
  93. package/dist/rules/no-throw-in-refine.js +0 -85
  94. package/dist/rules/no-unknown-schema.d.cts +0 -5
  95. package/dist/rules/no-unknown-schema.d.ts +0 -5
  96. package/dist/rules/no-unknown-schema.js +0 -33
  97. package/dist/rules/prefer-enum-over-literal-union.d.cts +0 -5
  98. package/dist/rules/prefer-enum-over-literal-union.d.ts +0 -5
  99. package/dist/rules/prefer-enum-over-literal-union.js +0 -77
  100. package/dist/rules/prefer-meta-last.d.cts +0 -5
  101. package/dist/rules/prefer-meta-last.d.ts +0 -5
  102. package/dist/rules/prefer-meta-last.js +0 -61
  103. package/dist/rules/prefer-meta.d.cts +0 -5
  104. package/dist/rules/prefer-meta.d.ts +0 -5
  105. package/dist/rules/prefer-meta.js +0 -46
  106. package/dist/rules/prefer-namespace-import.d.cts +0 -5
  107. package/dist/rules/prefer-namespace-import.d.ts +0 -5
  108. package/dist/rules/prefer-namespace-import.js +0 -146
  109. package/dist/rules/prefer-string-schema-with-trim.d.cts +0 -5
  110. package/dist/rules/prefer-string-schema-with-trim.d.ts +0 -5
  111. package/dist/rules/prefer-string-schema-with-trim.js +0 -50
  112. package/dist/rules/require-brand-type-parameter.d.cts +0 -6
  113. package/dist/rules/require-brand-type-parameter.d.ts +0 -6
  114. package/dist/rules/require-brand-type-parameter.js +0 -58
  115. package/dist/rules/require-error-message.d.cts +0 -5
  116. package/dist/rules/require-error-message.d.ts +0 -5
  117. package/dist/rules/require-error-message.js +0 -100
  118. package/dist/rules/require-schema-suffix.d.cts +0 -9
  119. package/dist/rules/require-schema-suffix.d.ts +0 -9
  120. package/dist/rules/require-schema-suffix.js +0 -76
  121. package/dist/rules/schema-error-property-style.d.cts +0 -10
  122. package/dist/rules/schema-error-property-style.d.ts +0 -10
  123. package/dist/rules/schema-error-property-style.js +0 -102
  124. package/dist/utils/build-zod-chain-replacement-fix.d.cts +0 -12
  125. package/dist/utils/build-zod-chain-replacement-fix.d.ts +0 -12
  126. package/dist/utils/build-zod-chain-replacement-fix.js +0 -28
  127. package/dist/utils/create-plugin-rule.d.cts +0 -13
  128. package/dist/utils/create-plugin-rule.d.ts +0 -13
  129. package/dist/utils/create-plugin-rule.js +0 -3
  130. package/dist/utils/detect-zod-schema-root-node.d.cts +0 -10
  131. package/dist/utils/detect-zod-schema-root-node.d.ts +0 -10
  132. package/dist/utils/detect-zod-schema-root-node.js +0 -101
  133. package/dist/utils/is-zod-import-source.d.cts +0 -4
  134. package/dist/utils/is-zod-import-source.d.ts +0 -4
  135. package/dist/utils/is-zod-import-source.js +0 -17
  136. package/dist/utils/track-zod-schema-imports.d.cts +0 -18
  137. package/dist/utils/track-zod-schema-imports.d.ts +0 -18
  138. package/dist/utils/track-zod-schema-imports.js +0 -64
@@ -0,0 +1,23 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
10
+ key = keys[i];
11
+ if (!__hasOwnProp.call(to, key) && key !== except) __defProp(to, key, {
12
+ get: ((k) => from[k]).bind(null, key),
13
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
14
+ });
15
+ }
16
+ return to;
17
+ };
18
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
19
+ value: mod,
20
+ enumerable: true
21
+ }) : target, mod));
22
+ //#endregion
23
+ exports.__toESM = __toESM;
package/dist/index.cjs CHANGED
@@ -1,87 +1,98 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- const meta_js_1 = require("./meta.cjs");
4
- const array_style_js_1 = require("./rules/array-style.cjs");
5
- const consistent_import_source_js_1 = require("./rules/consistent-import-source.cjs");
6
- const consistent_import_js_1 = require("./rules/consistent-import.cjs");
7
- const consistent_object_schema_type_js_1 = require("./rules/consistent-object-schema-type.cjs");
8
- const no_any_schema_js_1 = require("./rules/no-any-schema.cjs");
9
- const no_empty_custom_schema_js_1 = require("./rules/no-empty-custom-schema.cjs");
10
- const no_number_schema_with_int_js_1 = require("./rules/no-number-schema-with-int.cjs");
11
- const no_optional_and_default_together_js_1 = require("./rules/no-optional-and-default-together.cjs");
12
- const no_string_schema_with_uuid_js_1 = require("./rules/no-string-schema-with-uuid.cjs");
13
- const no_throw_in_refine_js_1 = require("./rules/no-throw-in-refine.cjs");
14
- const no_unknown_schema_js_1 = require("./rules/no-unknown-schema.cjs");
15
- const prefer_enum_over_literal_union_js_1 = require("./rules/prefer-enum-over-literal-union.cjs");
16
- const prefer_meta_last_js_1 = require("./rules/prefer-meta-last.cjs");
17
- const prefer_meta_js_1 = require("./rules/prefer-meta.cjs");
18
- const prefer_namespace_import_js_1 = require("./rules/prefer-namespace-import.cjs");
19
- const prefer_string_schema_with_trim_js_1 = require("./rules/prefer-string-schema-with-trim.cjs");
20
- const require_brand_type_parameter_js_1 = require("./rules/require-brand-type-parameter.cjs");
21
- const require_error_message_js_1 = require("./rules/require-error-message.cjs");
22
- const require_schema_suffix_js_1 = require("./rules/require-schema-suffix.cjs");
23
- const schema_error_property_style_js_1 = require("./rules/schema-error-property-style.cjs");
1
+ const require_meta = require("./meta.cjs");
2
+ const require_array_style = require("./rules/array-style.cjs");
3
+ const require_consistent_import_source = require("./rules/consistent-import-source.cjs");
4
+ const require_consistent_import = require("./rules/consistent-import.cjs");
5
+ const require_consistent_object_schema_type = require("./rules/consistent-object-schema-type.cjs");
6
+ const require_no_any_schema = require("./rules/no-any-schema.cjs");
7
+ const require_no_empty_custom_schema = require("./rules/no-empty-custom-schema.cjs");
8
+ const require_no_number_schema_with_int = require("./rules/no-number-schema-with-int.cjs");
9
+ const require_no_optional_and_default_together = require("./rules/no-optional-and-default-together.cjs");
10
+ const require_no_string_schema_with_uuid = require("./rules/no-string-schema-with-uuid.cjs");
11
+ const require_no_throw_in_refine = require("./rules/no-throw-in-refine.cjs");
12
+ const require_no_unknown_schema = require("./rules/no-unknown-schema.cjs");
13
+ const require_prefer_enum_over_literal_union = require("./rules/prefer-enum-over-literal-union.cjs");
14
+ const require_prefer_meta_last = require("./rules/prefer-meta-last.cjs");
15
+ const require_prefer_meta = require("./rules/prefer-meta.cjs");
16
+ const require_prefer_namespace_import = require("./rules/prefer-namespace-import.cjs");
17
+ const require_prefer_string_schema_with_trim = require("./rules/prefer-string-schema-with-trim.cjs");
18
+ const require_require_brand_type_parameter = require("./rules/require-brand-type-parameter.cjs");
19
+ const require_require_error_message = require("./rules/require-error-message.cjs");
20
+ const require_require_schema_suffix = require("./rules/require-schema-suffix.cjs");
21
+ const require_schema_error_property_style = require("./rules/schema-error-property-style.cjs");
22
+ //#region src/index.ts
24
23
  const eslintPluginZod = {
25
- meta: {
26
- name: meta_js_1.PLUGIN_NAME,
27
- version: meta_js_1.PLUGIN_VERSION,
28
- },
29
- rules: {
30
- 'array-style': array_style_js_1.arrayStyle,
31
- 'consistent-import-source': consistent_import_source_js_1.consistentImportSource,
32
- 'consistent-import': consistent_import_js_1.consistentImport,
33
- 'consistent-object-schema-type': consistent_object_schema_type_js_1.consistentObjectSchemaType,
34
- 'no-any-schema': no_any_schema_js_1.noAnySchema,
35
- 'no-empty-custom-schema': no_empty_custom_schema_js_1.noEmptyCustomSchema,
36
- 'no-number-schema-with-int': no_number_schema_with_int_js_1.noNumberSchemaWithInt,
37
- 'no-string-schema-with-uuid': no_string_schema_with_uuid_js_1.noStringSchemaWithUuid,
38
- 'no-optional-and-default-together': no_optional_and_default_together_js_1.noOptionalAndDefaultTogether,
39
- 'no-throw-in-refine': no_throw_in_refine_js_1.noThrowInRefine,
40
- 'no-unknown-schema': no_unknown_schema_js_1.noUnknownSchema,
41
- 'prefer-enum-over-literal-union': prefer_enum_over_literal_union_js_1.preferEnumOverLiteralUnion,
42
- 'prefer-meta': prefer_meta_js_1.preferMeta,
43
- 'prefer-meta-last': prefer_meta_last_js_1.preferMetaLast,
44
- 'prefer-namespace-import': prefer_namespace_import_js_1.preferNamespaceImport,
45
- 'prefer-string-schema-with-trim': prefer_string_schema_with_trim_js_1.preferStringSchemaWithTrim,
46
- 'require-brand-type-parameter': require_brand_type_parameter_js_1.requireBrandTypeParameter,
47
- 'require-error-message': require_error_message_js_1.requireErrorMessage,
48
- 'require-schema-suffix': require_schema_suffix_js_1.requireSchemaSuffix,
49
- 'schema-error-property-style': schema_error_property_style_js_1.schemaErrorPropertyStyle,
50
- },
24
+ meta: {
25
+ name: require_meta.PLUGIN_NAME,
26
+ version: require_meta.PLUGIN_VERSION
27
+ },
28
+ rules: {
29
+ "array-style": require_array_style.arrayStyle,
30
+ "consistent-import-source": require_consistent_import_source.consistentImportSource,
31
+ "consistent-import": require_consistent_import.consistentImport,
32
+ "consistent-object-schema-type": require_consistent_object_schema_type.consistentObjectSchemaType,
33
+ "no-any-schema": require_no_any_schema.noAnySchema,
34
+ "no-empty-custom-schema": require_no_empty_custom_schema.noEmptyCustomSchema,
35
+ "no-number-schema-with-int": require_no_number_schema_with_int.noNumberSchemaWithInt,
36
+ "no-string-schema-with-uuid": require_no_string_schema_with_uuid.noStringSchemaWithUuid,
37
+ "no-optional-and-default-together": require_no_optional_and_default_together.noOptionalAndDefaultTogether,
38
+ "no-throw-in-refine": require_no_throw_in_refine.noThrowInRefine,
39
+ "no-unknown-schema": require_no_unknown_schema.noUnknownSchema,
40
+ "prefer-enum-over-literal-union": require_prefer_enum_over_literal_union.preferEnumOverLiteralUnion,
41
+ "prefer-meta": require_prefer_meta.preferMeta,
42
+ "prefer-meta-last": require_prefer_meta_last.preferMetaLast,
43
+ "prefer-namespace-import": require_prefer_namespace_import.preferNamespaceImport,
44
+ "prefer-string-schema-with-trim": require_prefer_string_schema_with_trim.preferStringSchemaWithTrim,
45
+ "require-brand-type-parameter": require_require_brand_type_parameter.requireBrandTypeParameter,
46
+ "require-error-message": require_require_error_message.requireErrorMessage,
47
+ "require-schema-suffix": require_require_schema_suffix.requireSchemaSuffix,
48
+ "schema-error-property-style": require_schema_error_property_style.schemaErrorPropertyStyle
49
+ }
51
50
  };
52
51
  const baseConfig = {
53
- name: `${meta_js_1.PLUGIN_NAME}/recommended`,
54
- files: ['**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}'],
55
- plugins: {
56
- zod: eslintPluginZod,
57
- },
52
+ name: `${require_meta.PLUGIN_NAME}/recommended`,
53
+ files: ["**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}"],
54
+ plugins: { zod: eslintPluginZod }
58
55
  };
59
- const recommendedConfig = Object.assign(Object.assign({}, baseConfig), { rules: {
60
- 'zod/array-style': 'error',
61
- 'zod/consistent-import': 'error',
62
- 'zod/no-any-schema': 'error',
63
- 'zod/no-empty-custom-schema': 'error',
64
- 'zod/no-number-schema-with-int': 'error',
65
- 'zod/no-string-schema-with-uuid': 'error',
66
- 'zod/no-optional-and-default-together': 'error',
67
- 'zod/no-throw-in-refine': 'error',
68
- 'zod/prefer-enum-over-literal-union': 'error',
69
- 'zod/prefer-meta': 'error',
70
- 'zod/prefer-meta-last': 'error',
71
- 'zod/prefer-string-schema-with-trim': 'error',
72
- 'zod/require-brand-type-parameter': 'error',
73
- 'zod/require-error-message': 'error',
74
- 'zod/require-schema-suffix': 'error',
75
- } });
76
- const recommendedConfigMini = Object.assign(Object.assign({}, baseConfig), { rules: {
77
- 'zod/no-any-schema': 'error',
78
- 'zod/prefer-meta': 'error',
79
- 'zod/require-brand-type-parameter': 'error',
80
- 'zod/require-error-message': 'error',
81
- 'zod/require-schema-suffix': 'error',
82
- } });
83
- exports.default = Object.assign(Object.assign({}, eslintPluginZod), { configs: {
84
- recommended: recommendedConfig,
85
- recommendedMini: recommendedConfigMini,
86
- } });
87
- module.exports = exports.default;
56
+ const recommendedConfig = {
57
+ ...baseConfig,
58
+ rules: {
59
+ "zod/array-style": "error",
60
+ "zod/consistent-import": "error",
61
+ "zod/no-any-schema": "error",
62
+ "zod/no-empty-custom-schema": "error",
63
+ "zod/no-number-schema-with-int": "error",
64
+ "zod/no-string-schema-with-uuid": "error",
65
+ "zod/no-optional-and-default-together": "error",
66
+ "zod/no-throw-in-refine": "error",
67
+ "zod/prefer-enum-over-literal-union": "error",
68
+ "zod/prefer-meta": "error",
69
+ "zod/prefer-meta-last": "error",
70
+ "zod/prefer-string-schema-with-trim": "error",
71
+ "zod/require-brand-type-parameter": "error",
72
+ "zod/require-error-message": "error",
73
+ "zod/require-schema-suffix": "error"
74
+ }
75
+ };
76
+ const recommendedConfigMini = {
77
+ ...baseConfig,
78
+ rules: {
79
+ "zod/no-any-schema": "error",
80
+ "zod/prefer-meta": "error",
81
+ "zod/require-brand-type-parameter": "error",
82
+ "zod/require-error-message": "error",
83
+ "zod/require-schema-suffix": "error"
84
+ }
85
+ };
86
+ var src_default = {
87
+ ...eslintPluginZod,
88
+ configs: {
89
+ recommended: recommendedConfig,
90
+ recommendedMini: recommendedConfigMini
91
+ }
92
+ };
93
+ /**
94
+ * why `satisfies`?
95
+ * @see https://github.com/marcalexiei/eslint-plugin-zod/issues/49
96
+ */
97
+ //#endregion
98
+ module.exports = src_default;
package/dist/index.d.cts CHANGED
@@ -1,22 +1,23 @@
1
+ //#region src/index.d.ts
1
2
  interface CompatibleConfig {
2
- name?: string;
3
- rules?: object;
4
- plugins?: Record<string, CompatiblePlugin>;
3
+ name?: string;
4
+ rules?: object;
5
+ plugins?: Record<string, CompatiblePlugin>;
5
6
  }
6
7
  interface CompatiblePlugin {
7
- meta: {
8
- name: string;
9
- version: string;
10
- };
8
+ meta: {
9
+ name: string;
10
+ version: string;
11
+ };
11
12
  }
12
13
  declare const _default: {
13
- configs: {
14
- recommended: CompatibleConfig;
15
- recommendedMini: CompatibleConfig;
16
- };
17
- meta: {
18
- name: string;
19
- version: string;
20
- };
14
+ configs: {
15
+ recommended: CompatibleConfig;
16
+ recommendedMini: CompatibleConfig;
17
+ };
18
+ meta: {
19
+ name: string;
20
+ version: string;
21
+ };
21
22
  };
22
- export = _default;
23
+ export = _default;
@@ -0,0 +1,24 @@
1
+ //#region src/index.d.ts
2
+ interface CompatibleConfig {
3
+ name?: string;
4
+ rules?: object;
5
+ plugins?: Record<string, CompatiblePlugin>;
6
+ }
7
+ interface CompatiblePlugin {
8
+ meta: {
9
+ name: string;
10
+ version: string;
11
+ };
12
+ }
13
+ declare const _default: {
14
+ configs: {
15
+ recommended: CompatibleConfig;
16
+ recommendedMini: CompatibleConfig;
17
+ };
18
+ meta: {
19
+ name: string;
20
+ version: string;
21
+ };
22
+ };
23
+ //#endregion
24
+ export { _default as default };
package/dist/index.mjs ADDED
@@ -0,0 +1,98 @@
1
+ import { PLUGIN_NAME, PLUGIN_VERSION } from "./meta.mjs";
2
+ import { arrayStyle } from "./rules/array-style.mjs";
3
+ import { consistentImportSource } from "./rules/consistent-import-source.mjs";
4
+ import { consistentImport } from "./rules/consistent-import.mjs";
5
+ import { consistentObjectSchemaType } from "./rules/consistent-object-schema-type.mjs";
6
+ import { noAnySchema } from "./rules/no-any-schema.mjs";
7
+ import { noEmptyCustomSchema } from "./rules/no-empty-custom-schema.mjs";
8
+ import { noNumberSchemaWithInt } from "./rules/no-number-schema-with-int.mjs";
9
+ import { noOptionalAndDefaultTogether } from "./rules/no-optional-and-default-together.mjs";
10
+ import { noStringSchemaWithUuid } from "./rules/no-string-schema-with-uuid.mjs";
11
+ import { noThrowInRefine } from "./rules/no-throw-in-refine.mjs";
12
+ import { noUnknownSchema } from "./rules/no-unknown-schema.mjs";
13
+ import { preferEnumOverLiteralUnion } from "./rules/prefer-enum-over-literal-union.mjs";
14
+ import { preferMetaLast } from "./rules/prefer-meta-last.mjs";
15
+ import { preferMeta } from "./rules/prefer-meta.mjs";
16
+ import { preferNamespaceImport } from "./rules/prefer-namespace-import.mjs";
17
+ import { preferStringSchemaWithTrim } from "./rules/prefer-string-schema-with-trim.mjs";
18
+ import { requireBrandTypeParameter } from "./rules/require-brand-type-parameter.mjs";
19
+ import { requireErrorMessage } from "./rules/require-error-message.mjs";
20
+ import { requireSchemaSuffix } from "./rules/require-schema-suffix.mjs";
21
+ import { schemaErrorPropertyStyle } from "./rules/schema-error-property-style.mjs";
22
+ //#region src/index.ts
23
+ const eslintPluginZod = {
24
+ meta: {
25
+ name: PLUGIN_NAME,
26
+ version: PLUGIN_VERSION
27
+ },
28
+ rules: {
29
+ "array-style": arrayStyle,
30
+ "consistent-import-source": consistentImportSource,
31
+ "consistent-import": consistentImport,
32
+ "consistent-object-schema-type": consistentObjectSchemaType,
33
+ "no-any-schema": noAnySchema,
34
+ "no-empty-custom-schema": noEmptyCustomSchema,
35
+ "no-number-schema-with-int": noNumberSchemaWithInt,
36
+ "no-string-schema-with-uuid": noStringSchemaWithUuid,
37
+ "no-optional-and-default-together": noOptionalAndDefaultTogether,
38
+ "no-throw-in-refine": noThrowInRefine,
39
+ "no-unknown-schema": noUnknownSchema,
40
+ "prefer-enum-over-literal-union": preferEnumOverLiteralUnion,
41
+ "prefer-meta": preferMeta,
42
+ "prefer-meta-last": preferMetaLast,
43
+ "prefer-namespace-import": preferNamespaceImport,
44
+ "prefer-string-schema-with-trim": preferStringSchemaWithTrim,
45
+ "require-brand-type-parameter": requireBrandTypeParameter,
46
+ "require-error-message": requireErrorMessage,
47
+ "require-schema-suffix": requireSchemaSuffix,
48
+ "schema-error-property-style": schemaErrorPropertyStyle
49
+ }
50
+ };
51
+ const baseConfig = {
52
+ name: `${PLUGIN_NAME}/recommended`,
53
+ files: ["**/*.{js,mjs,cjs,jsx,mjsx,ts,tsx,mtsx}"],
54
+ plugins: { zod: eslintPluginZod }
55
+ };
56
+ const recommendedConfig = {
57
+ ...baseConfig,
58
+ rules: {
59
+ "zod/array-style": "error",
60
+ "zod/consistent-import": "error",
61
+ "zod/no-any-schema": "error",
62
+ "zod/no-empty-custom-schema": "error",
63
+ "zod/no-number-schema-with-int": "error",
64
+ "zod/no-string-schema-with-uuid": "error",
65
+ "zod/no-optional-and-default-together": "error",
66
+ "zod/no-throw-in-refine": "error",
67
+ "zod/prefer-enum-over-literal-union": "error",
68
+ "zod/prefer-meta": "error",
69
+ "zod/prefer-meta-last": "error",
70
+ "zod/prefer-string-schema-with-trim": "error",
71
+ "zod/require-brand-type-parameter": "error",
72
+ "zod/require-error-message": "error",
73
+ "zod/require-schema-suffix": "error"
74
+ }
75
+ };
76
+ const recommendedConfigMini = {
77
+ ...baseConfig,
78
+ rules: {
79
+ "zod/no-any-schema": "error",
80
+ "zod/prefer-meta": "error",
81
+ "zod/require-brand-type-parameter": "error",
82
+ "zod/require-error-message": "error",
83
+ "zod/require-schema-suffix": "error"
84
+ }
85
+ };
86
+ var src_default = {
87
+ ...eslintPluginZod,
88
+ configs: {
89
+ recommended: recommendedConfig,
90
+ recommendedMini: recommendedConfigMini
91
+ }
92
+ };
93
+ /**
94
+ * why `satisfies`?
95
+ * @see https://github.com/marcalexiei/eslint-plugin-zod/issues/49
96
+ */
97
+ //#endregion
98
+ export { src_default as default };
package/dist/meta.cjs CHANGED
@@ -1,13 +1,13 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.PLUGIN_VERSION = exports.PLUGIN_NAME = void 0;
4
- exports.getRuleURL = getRuleURL;
5
- const node_fs_1 = require("node:fs");
6
- const packageJSON = JSON.parse((0, node_fs_1.readFileSync)(new URL('../package.json', require("url").pathToFileURL(__filename)), 'utf8'));
7
- const { name: PLUGIN_NAME, version: PLUGIN_VERSION, homepage, } = packageJSON;
8
- exports.PLUGIN_NAME = PLUGIN_NAME;
9
- exports.PLUGIN_VERSION = PLUGIN_VERSION;
10
- const PLUGIN_HOMEPAGE = homepage.replace(/#[^#]*$/, '');
1
+ require("./_virtual/_rolldown/runtime.cjs");
2
+ let node_fs = require("node:fs");
3
+ //#region src/meta.ts
4
+ const { name: PLUGIN_NAME, version: PLUGIN_VERSION, homepage } = JSON.parse((0, node_fs.readFileSync)(new URL("../package.json", require("url").pathToFileURL(__filename).href), "utf8"));
5
+ /** @see https://github.com/marcalexiei/eslint-plugin-zod/pull/97 */
6
+ const PLUGIN_HOMEPAGE = homepage.replace(/#[^#]*$/, "");
11
7
  function getRuleURL(ruleID) {
12
- return `${PLUGIN_HOMEPAGE}/blob/HEAD/docs/rules/${ruleID}.md`;
8
+ return `${PLUGIN_HOMEPAGE}/blob/HEAD/docs/rules/${ruleID}.md`;
13
9
  }
10
+ //#endregion
11
+ exports.PLUGIN_NAME = PLUGIN_NAME;
12
+ exports.PLUGIN_VERSION = PLUGIN_VERSION;
13
+ exports.getRuleURL = getRuleURL;
package/dist/meta.mjs ADDED
@@ -0,0 +1,10 @@
1
+ import { readFileSync } from "node:fs";
2
+ //#region src/meta.ts
3
+ const { name: PLUGIN_NAME, version: PLUGIN_VERSION, homepage } = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf8"));
4
+ /** @see https://github.com/marcalexiei/eslint-plugin-zod/pull/97 */
5
+ const PLUGIN_HOMEPAGE = homepage.replace(/#[^#]*$/, "");
6
+ function getRuleURL(ruleID) {
7
+ return `${PLUGIN_HOMEPAGE}/blob/HEAD/docs/rules/${ruleID}.md`;
8
+ }
9
+ //#endregion
10
+ export { PLUGIN_NAME, PLUGIN_VERSION, getRuleURL };
@@ -1,102 +1,89 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.arrayStyle = void 0;
4
- const create_plugin_rule_js_1 = require("../utils/create-plugin-rule.cjs");
5
- const track_zod_schema_imports_js_1 = require("../utils/track-zod-schema-imports.cjs");
6
- const ZOD_ARRAY_STYLES = ['function', 'method'];
7
- const defaultOptions = { style: 'function' };
8
- const { zodImportAllowedSource, trackZodSchemaImports, } = (0, track_zod_schema_imports_js_1.createZodSchemaImportTrack)('zod');
9
- exports.arrayStyle = (0, create_plugin_rule_js_1.createZodPluginRule)({
10
- name: 'array-style',
11
- meta: {
12
- type: 'suggestion',
13
- fixable: 'code',
14
- docs: {
15
- zodImportAllowedSource,
16
- description: 'Enforce consistent Zod array style',
17
- },
18
- messages: {
19
- useFunction: 'Use z.array(schema) instead of schema.array().',
20
- useMethod: 'Use schema.array() instead of z.array(schema).',
21
- },
22
- schema: [
23
- {
24
- type: 'object',
25
- properties: {
26
- style: {
27
- description: 'Decides which style for zod array function',
28
- type: 'string',
29
- enum: ZOD_ARRAY_STYLES,
30
- },
31
- },
32
- additionalProperties: false,
33
- },
34
- ],
35
- },
36
- defaultOptions: [defaultOptions],
37
- create(context, [{ style }]) {
38
- const { sourceCode } = context;
39
- const { importDeclarationListener, detectZodSchemaRootNode, collectZodChainMethods, } = trackZodSchemaImports();
40
- return {
41
- ImportDeclaration: importDeclarationListener,
42
- CallExpression(node) {
43
- const zodSchema = detectZodSchemaRootNode(node);
44
- if (!zodSchema) {
45
- return;
46
- }
47
- const { schemaDecl, schemaType } = zodSchema;
48
- if (style === 'method') {
49
- if (schemaType === 'array') {
50
- if (schemaDecl === 'namespace') {
51
- context.report({
52
- node,
53
- messageId: 'useMethod',
54
- fix(fixer) {
55
- const chain = collectZodChainMethods(node);
56
- const arrayCall = chain.find((c) => c.name === 'array');
57
- if (!arrayCall) {
58
- return null;
59
- }
60
- const arg = arrayCall.node.arguments.at(0);
61
- if (!arg) {
62
- return null;
63
- }
64
- const argText = sourceCode.getText(arg);
65
- return fixer.replaceText(arrayCall.node, `${argText}.array()`);
66
- },
67
- });
68
- return;
69
- }
70
- context.report({
71
- node,
72
- messageId: 'useMethod',
73
- });
74
- }
75
- return;
76
- }
77
- const methods = collectZodChainMethods(node);
78
- const arrayMethod = methods.find((it) => it.name === 'array' &&
79
- it.node.arguments.length === 0);
80
- if (arrayMethod) {
81
- const arrayNode = arrayMethod.node;
82
- if (schemaDecl === 'namespace') {
83
- context.report({
84
- node,
85
- messageId: 'useFunction',
86
- fix(fixer) {
87
- const callee = arrayNode.callee;
88
- const objText = sourceCode.getText(callee.object);
89
- return fixer.replaceText(node, `z.array(${objText})`);
90
- },
91
- });
92
- return;
93
- }
94
- context.report({
95
- node,
96
- messageId: 'useFunction',
97
- });
98
- }
99
- },
100
- };
101
- },
1
+ const require_create_plugin_rule = require("../utils/create-plugin-rule.cjs");
2
+ const require_track_zod_schema_imports = require("../utils/track-zod-schema-imports.cjs");
3
+ //#region src/rules/array-style.ts
4
+ const ZOD_ARRAY_STYLES = ["function", "method"];
5
+ const defaultOptions = { style: "function" };
6
+ const { zodImportAllowedSource, trackZodSchemaImports } = require_track_zod_schema_imports.createZodSchemaImportTrack("zod");
7
+ const arrayStyle = require_create_plugin_rule.createZodPluginRule({
8
+ name: "array-style",
9
+ meta: {
10
+ type: "suggestion",
11
+ fixable: "code",
12
+ docs: {
13
+ zodImportAllowedSource,
14
+ description: "Enforce consistent Zod array style"
15
+ },
16
+ messages: {
17
+ useFunction: "Use z.array(schema) instead of schema.array().",
18
+ useMethod: "Use schema.array() instead of z.array(schema)."
19
+ },
20
+ schema: [{
21
+ type: "object",
22
+ properties: { style: {
23
+ description: "Decides which style for zod array function",
24
+ type: "string",
25
+ enum: ZOD_ARRAY_STYLES
26
+ } },
27
+ additionalProperties: false
28
+ }]
29
+ },
30
+ defaultOptions: [defaultOptions],
31
+ create(context, [{ style }]) {
32
+ const { sourceCode } = context;
33
+ const { importDeclarationListener, detectZodSchemaRootNode, collectZodChainMethods } = trackZodSchemaImports();
34
+ return {
35
+ ImportDeclaration: importDeclarationListener,
36
+ CallExpression(node) {
37
+ const zodSchema = detectZodSchemaRootNode(node);
38
+ if (!zodSchema) return;
39
+ const { schemaDecl, schemaType } = zodSchema;
40
+ if (style === "method") {
41
+ if (schemaType === "array") {
42
+ if (schemaDecl === "namespace") {
43
+ context.report({
44
+ node,
45
+ messageId: "useMethod",
46
+ fix(fixer) {
47
+ const arrayCall = collectZodChainMethods(node).find((c) => c.name === "array");
48
+ if (!arrayCall) return null;
49
+ const arg = arrayCall.node.arguments.at(0);
50
+ if (!arg) return null;
51
+ const argText = sourceCode.getText(arg);
52
+ return fixer.replaceText(arrayCall.node, `${argText}.array()`);
53
+ }
54
+ });
55
+ return;
56
+ }
57
+ context.report({
58
+ node,
59
+ messageId: "useMethod"
60
+ });
61
+ }
62
+ return;
63
+ }
64
+ const arrayMethod = collectZodChainMethods(node).find((it) => it.name === "array" && it.node.arguments.length === 0);
65
+ if (arrayMethod) {
66
+ const arrayNode = arrayMethod.node;
67
+ if (schemaDecl === "namespace") {
68
+ context.report({
69
+ node,
70
+ messageId: "useFunction",
71
+ fix(fixer) {
72
+ const callee = arrayNode.callee;
73
+ const objText = sourceCode.getText(callee.object);
74
+ return fixer.replaceText(arrayNode, `z.array(${objText})`);
75
+ }
76
+ });
77
+ return;
78
+ }
79
+ context.report({
80
+ node,
81
+ messageId: "useFunction"
82
+ });
83
+ }
84
+ }
85
+ };
86
+ }
102
87
  });
88
+ //#endregion
89
+ exports.arrayStyle = arrayStyle;