eslint-plugin-zod 3.5.0 → 3.5.2
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/_virtual/_rolldown/runtime.cjs +23 -0
- package/dist/index.cjs +94 -83
- package/dist/index.d.cts +17 -16
- package/dist/index.d.mts +24 -0
- package/dist/index.mjs +98 -0
- package/dist/meta.cjs +11 -11
- package/dist/meta.mjs +10 -0
- package/dist/rules/array-style.cjs +88 -101
- package/dist/rules/array-style.mjs +89 -0
- package/dist/rules/consistent-import-source.cjs +59 -66
- package/dist/rules/consistent-import-source.mjs +60 -0
- package/dist/rules/consistent-import.cjs +146 -172
- package/dist/rules/consistent-import.mjs +152 -0
- package/dist/rules/consistent-object-schema-type.cjs +81 -84
- package/dist/rules/consistent-object-schema-type.mjs +81 -0
- package/dist/rules/no-any-schema.cjs +62 -67
- package/dist/rules/no-any-schema.mjs +62 -0
- package/dist/rules/no-empty-custom-schema.cjs +32 -40
- package/dist/rules/no-empty-custom-schema.mjs +34 -0
- package/dist/rules/no-number-schema-with-int.cjs +56 -62
- package/dist/rules/no-number-schema-with-int.mjs +57 -0
- package/dist/rules/no-optional-and-default-together.cjs +69 -80
- package/dist/rules/no-optional-and-default-together.mjs +71 -0
- package/dist/rules/no-string-schema-with-uuid.cjs +57 -63
- package/dist/rules/no-string-schema-with-uuid.mjs +58 -0
- package/dist/rules/no-throw-in-refine.cjs +69 -87
- package/dist/rules/no-throw-in-refine.mjs +69 -0
- package/dist/rules/no-unknown-schema.cjs +29 -35
- package/dist/rules/no-unknown-schema.mjs +31 -0
- package/dist/rules/prefer-enum-over-literal-union.cjs +63 -79
- package/dist/rules/prefer-enum-over-literal-union.mjs +63 -0
- package/dist/rules/prefer-meta-last.cjs +47 -63
- package/dist/rules/prefer-meta-last.mjs +49 -0
- package/dist/rules/prefer-meta.cjs +38 -48
- package/dist/rules/prefer-meta.mjs +40 -0
- package/dist/rules/prefer-namespace-import.cjs +110 -142
- package/dist/rules/prefer-namespace-import.mjs +116 -0
- package/dist/rules/prefer-string-schema-with-trim.cjs +45 -52
- package/dist/rules/prefer-string-schema-with-trim.mjs +47 -0
- package/dist/rules/require-brand-type-parameter.cjs +47 -60
- package/dist/rules/require-brand-type-parameter.mjs +49 -0
- package/dist/rules/require-error-message.cjs +83 -102
- package/dist/rules/require-error-message.mjs +83 -0
- package/dist/rules/require-schema-suffix.cjs +67 -74
- package/dist/rules/require-schema-suffix.mjs +67 -0
- package/dist/rules/schema-error-property-style.cjs +95 -107
- package/dist/rules/schema-error-property-style.mjs +94 -0
- package/dist/utils/build-zod-chain-replacement-fix.cjs +28 -29
- package/dist/utils/build-zod-chain-replacement-fix.mjs +30 -0
- package/dist/utils/create-plugin-rule.cjs +6 -6
- package/dist/utils/create-plugin-rule.mjs +6 -0
- package/dist/utils/detect-zod-schema-root-node.cjs +94 -96
- package/dist/utils/detect-zod-schema-root-node.mjs +101 -0
- package/dist/utils/is-zod-import-source.cjs +14 -18
- package/dist/utils/is-zod-import-source.mjs +16 -0
- package/dist/utils/track-zod-schema-imports.cjs +61 -64
- package/dist/utils/track-zod-schema-imports.mjs +64 -0
- package/package.json +16 -19
- package/dist/index.d.ts +0 -22
- package/dist/index.js +0 -84
- package/dist/meta.d.cts +0 -3
- package/dist/meta.d.ts +0 -3
- package/dist/meta.js +0 -8
- package/dist/rules/array-style.d.cts +0 -11
- package/dist/rules/array-style.d.ts +0 -11
- package/dist/rules/array-style.js +0 -99
- package/dist/rules/consistent-import-source.d.cts +0 -11
- package/dist/rules/consistent-import-source.d.ts +0 -11
- package/dist/rules/consistent-import-source.js +0 -64
- package/dist/rules/consistent-import.d.cts +0 -12
- package/dist/rules/consistent-import.d.ts +0 -12
- package/dist/rules/consistent-import.js +0 -176
- package/dist/rules/consistent-object-schema-type.d.cts +0 -13
- package/dist/rules/consistent-object-schema-type.d.ts +0 -13
- package/dist/rules/consistent-object-schema-type.js +0 -82
- package/dist/rules/no-any-schema.d.cts +0 -6
- package/dist/rules/no-any-schema.d.ts +0 -6
- package/dist/rules/no-any-schema.js +0 -65
- package/dist/rules/no-empty-custom-schema.d.cts +0 -5
- package/dist/rules/no-empty-custom-schema.d.ts +0 -5
- package/dist/rules/no-empty-custom-schema.js +0 -38
- package/dist/rules/no-number-schema-with-int.d.cts +0 -5
- package/dist/rules/no-number-schema-with-int.d.ts +0 -5
- package/dist/rules/no-number-schema-with-int.js +0 -60
- package/dist/rules/no-optional-and-default-together.d.cts +0 -12
- package/dist/rules/no-optional-and-default-together.d.ts +0 -12
- package/dist/rules/no-optional-and-default-together.js +0 -78
- package/dist/rules/no-string-schema-with-uuid.d.cts +0 -5
- package/dist/rules/no-string-schema-with-uuid.d.ts +0 -5
- package/dist/rules/no-string-schema-with-uuid.js +0 -61
- package/dist/rules/no-throw-in-refine.d.cts +0 -5
- package/dist/rules/no-throw-in-refine.d.ts +0 -5
- package/dist/rules/no-throw-in-refine.js +0 -85
- package/dist/rules/no-unknown-schema.d.cts +0 -5
- package/dist/rules/no-unknown-schema.d.ts +0 -5
- package/dist/rules/no-unknown-schema.js +0 -33
- package/dist/rules/prefer-enum-over-literal-union.d.cts +0 -5
- package/dist/rules/prefer-enum-over-literal-union.d.ts +0 -5
- package/dist/rules/prefer-enum-over-literal-union.js +0 -77
- package/dist/rules/prefer-meta-last.d.cts +0 -5
- package/dist/rules/prefer-meta-last.d.ts +0 -5
- package/dist/rules/prefer-meta-last.js +0 -61
- package/dist/rules/prefer-meta.d.cts +0 -5
- package/dist/rules/prefer-meta.d.ts +0 -5
- package/dist/rules/prefer-meta.js +0 -46
- package/dist/rules/prefer-namespace-import.d.cts +0 -5
- package/dist/rules/prefer-namespace-import.d.ts +0 -5
- package/dist/rules/prefer-namespace-import.js +0 -146
- package/dist/rules/prefer-string-schema-with-trim.d.cts +0 -5
- package/dist/rules/prefer-string-schema-with-trim.d.ts +0 -5
- package/dist/rules/prefer-string-schema-with-trim.js +0 -50
- package/dist/rules/require-brand-type-parameter.d.cts +0 -6
- package/dist/rules/require-brand-type-parameter.d.ts +0 -6
- package/dist/rules/require-brand-type-parameter.js +0 -58
- package/dist/rules/require-error-message.d.cts +0 -5
- package/dist/rules/require-error-message.d.ts +0 -5
- package/dist/rules/require-error-message.js +0 -100
- package/dist/rules/require-schema-suffix.d.cts +0 -9
- package/dist/rules/require-schema-suffix.d.ts +0 -9
- package/dist/rules/require-schema-suffix.js +0 -72
- package/dist/rules/schema-error-property-style.d.cts +0 -10
- package/dist/rules/schema-error-property-style.d.ts +0 -10
- package/dist/rules/schema-error-property-style.js +0 -102
- package/dist/utils/build-zod-chain-replacement-fix.d.cts +0 -12
- package/dist/utils/build-zod-chain-replacement-fix.d.ts +0 -12
- package/dist/utils/build-zod-chain-replacement-fix.js +0 -28
- package/dist/utils/create-plugin-rule.d.cts +0 -13
- package/dist/utils/create-plugin-rule.d.ts +0 -13
- package/dist/utils/create-plugin-rule.js +0 -3
- package/dist/utils/detect-zod-schema-root-node.d.cts +0 -10
- package/dist/utils/detect-zod-schema-root-node.d.ts +0 -10
- package/dist/utils/detect-zod-schema-root-node.js +0 -101
- package/dist/utils/is-zod-import-source.d.cts +0 -4
- package/dist/utils/is-zod-import-source.d.ts +0 -4
- package/dist/utils/is-zod-import-source.js +0 -17
- package/dist/utils/track-zod-schema-imports.d.cts +0 -18
- package/dist/utils/track-zod-schema-imports.d.ts +0 -18
- 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
|
-
|
|
2
|
-
|
|
3
|
-
const
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
19
|
-
const
|
|
20
|
-
const
|
|
21
|
-
const
|
|
22
|
-
|
|
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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
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
|
-
|
|
54
|
-
|
|
55
|
-
|
|
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 =
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
3
|
+
name?: string;
|
|
4
|
+
rules?: object;
|
|
5
|
+
plugins?: Record<string, CompatiblePlugin>;
|
|
5
6
|
}
|
|
6
7
|
interface CompatiblePlugin {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
8
|
+
meta: {
|
|
9
|
+
name: string;
|
|
10
|
+
version: string;
|
|
11
|
+
};
|
|
11
12
|
}
|
|
12
13
|
declare const _default: {
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
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;
|
package/dist/index.d.mts
ADDED
|
@@ -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
|
-
"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
const
|
|
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
|
-
|
|
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
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
const
|
|
5
|
-
const
|
|
6
|
-
const
|
|
7
|
-
const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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;
|