@modulify/validator 0.2.1 → 0.3.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/CHANGELOG.md +27 -1
- package/README.md +12 -2
- package/dist/assert-BDOtHdLx.cjs +289 -0
- package/dist/assert-CzMg5aO7.mjs +206 -0
- package/dist/assert.cjs +7 -65
- package/dist/assert.d.cts +37 -0
- package/dist/assert.d.mts +37 -0
- package/dist/assert.d.ts +24 -3
- package/dist/assert.mjs +2 -66
- package/dist/assertions-DPYCHREw.mjs +297 -0
- package/dist/assertions-nfOKqcjs.cjs +476 -0
- package/dist/assertions.cjs +34 -206
- package/dist/assertions.d.cts +56 -0
- package/dist/assertions.d.mts +56 -0
- package/dist/assertions.d.ts +43 -45
- package/dist/assertions.mjs +3 -207
- package/dist/checkers.d.cts +8 -0
- package/dist/checkers.d.mts +8 -0
- package/dist/checkers.d.ts +1 -1
- package/dist/combinators.cjs +303 -304
- package/dist/combinators.d.cts +16 -0
- package/dist/combinators.d.mts +16 -0
- package/dist/combinators.d.ts +15 -16
- package/dist/combinators.mjs +304 -315
- package/dist/constraints.d.cts +4 -0
- package/dist/constraints.d.mts +4 -0
- package/dist/constraints.d.ts +2 -2
- package/dist/extractors.d.cts +2 -0
- package/dist/extractors.d.mts +2 -0
- package/dist/index.cjs +210 -213
- package/dist/index.d.cts +12 -0
- package/dist/index.d.mts +12 -0
- package/dist/index.d.ts +9 -9
- package/dist/index.mjs +165 -218
- package/dist/json-schema.cjs +364 -489
- package/dist/json-schema.d.cts +14 -0
- package/dist/json-schema.d.mts +14 -0
- package/dist/json-schema.d.ts +3 -3
- package/dist/json-schema.mjs +365 -492
- package/dist/metadata.cjs +6 -7
- package/dist/metadata.d.cts +8 -0
- package/dist/metadata.d.mts +8 -0
- package/dist/metadata.d.ts +2 -2
- package/dist/metadata.mjs +2 -8
- package/dist/predicates.cjs +98 -41
- package/dist/predicates.d.cts +77 -0
- package/dist/predicates.d.mts +77 -0
- package/dist/predicates.d.ts +25 -4
- package/dist/predicates.mjs +92 -66
- package/dist/types/index.d.cts +984 -0
- package/dist/types/index.d.mts +984 -0
- package/dist/types/index.d.ts +984 -0
- package/dist/types/json-schema.d.cts +75 -0
- package/dist/types/json-schema.d.mts +75 -0
- package/dist/types/json-schema.d.ts +75 -0
- package/dist/violations.d.cts +29 -0
- package/dist/violations.d.mts +29 -0
- package/dist/violations.d.ts +1 -1
- package/docs/RELEASING.md +66 -0
- package/docs/en/00-index.md +2 -0
- package/docs/en/01-shape-api.md +35 -10
- package/docs/en/02-metadata-and-introspection.md +2 -1
- package/docs/en/03-violations.md +1 -1
- package/docs/en/04-json-schema-export.md +5 -0
- package/docs/en/05-public-api.md +35 -3
- package/docs/en/06-common-recipes.md +2 -1
- package/docs/en/07-ai-reference.md +5 -2
- package/docs/en/08-violation-code-types.md +28 -2
- package/docs/en/09-migration.md +75 -0
- package/docs/ru/00-index.md +2 -0
- package/docs/ru/01-shape-api.md +35 -10
- package/docs/ru/02-metadata-and-introspection.md +2 -1
- package/docs/ru/03-violations.md +1 -1
- package/docs/ru/04-json-schema-export.md +5 -0
- package/docs/ru/05-public-api.md +35 -3
- package/docs/ru/06-common-recipes.md +2 -1
- package/docs/ru/07-ai-reference.md +5 -2
- package/docs/ru/08-violation-code-types.md +28 -2
- package/docs/ru/09-migration.md +76 -0
- package/docs/ru/README.md +10 -2
- package/package.json +63 -37
- package/types/index.d.ts +275 -115
- package/dist/metadata.cjs.js +0 -130
- package/dist/metadata.es.js +0 -131
package/dist/predicates.mjs
CHANGED
|
@@ -1,116 +1,142 @@
|
|
|
1
|
+
//#region src/predicates.ts
|
|
2
|
+
/** Checks if a value has a property */
|
|
1
3
|
function hasProperty(key) {
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
4
|
+
return (value) => {
|
|
5
|
+
return isObject(value) && !isNull(value) && Object.prototype.hasOwnProperty.call(value, key);
|
|
6
|
+
};
|
|
5
7
|
}
|
|
8
|
+
/** Checks if a value is an array */
|
|
6
9
|
function isArray(value) {
|
|
7
|
-
|
|
10
|
+
return Array.isArray(value);
|
|
8
11
|
}
|
|
12
|
+
/** Checks if a value is a boolean */
|
|
9
13
|
function isBoolean(value) {
|
|
10
|
-
|
|
14
|
+
return typeof value === "boolean";
|
|
11
15
|
}
|
|
16
|
+
/** Checks if a value is a bigint */
|
|
12
17
|
function isBigInt(value) {
|
|
13
|
-
|
|
18
|
+
return typeof value === "bigint";
|
|
14
19
|
}
|
|
20
|
+
/** Checks if a value is a Blob */
|
|
15
21
|
function isBlob(value) {
|
|
16
|
-
|
|
22
|
+
return typeof Blob !== "undefined" && value instanceof Blob;
|
|
17
23
|
}
|
|
24
|
+
/** Checks if value is Date */
|
|
18
25
|
function isDate(value) {
|
|
19
|
-
|
|
26
|
+
return value instanceof Date;
|
|
20
27
|
}
|
|
28
|
+
/** Checks if value is a valid Date */
|
|
29
|
+
function isValidDate(value) {
|
|
30
|
+
return isDate(value) && !Number.isNaN(value.getTime());
|
|
31
|
+
}
|
|
32
|
+
/** Checks if a value is an email */
|
|
21
33
|
function isEmail(value) {
|
|
22
|
-
|
|
23
|
-
return isString(value) && pattern.test(value);
|
|
34
|
+
return isString(value) && /^(([^<>()[\].,;:\s@"]+(\.[^<>()[\].,;:\s@"]+)*)|(".+"))@(([^<>()[\].,;:\s@"]+\.)+[^<>()[\].,;:\s@"]{2,})$/i.test(value);
|
|
24
35
|
}
|
|
36
|
+
/** Creates a predicate that checks if a value is equal to specified */
|
|
25
37
|
function isExact(exact) {
|
|
26
|
-
|
|
38
|
+
return (value) => value === exact;
|
|
27
39
|
}
|
|
40
|
+
/** Checks if a value is a File */
|
|
28
41
|
function isFile(value) {
|
|
29
|
-
|
|
42
|
+
return typeof File !== "undefined" && value instanceof File;
|
|
43
|
+
}
|
|
44
|
+
/** Checks if a value is an Error */
|
|
45
|
+
function isError(value) {
|
|
46
|
+
return value instanceof Error;
|
|
30
47
|
}
|
|
48
|
+
/** Checks if a value is a function */
|
|
31
49
|
function isFunction(value) {
|
|
32
|
-
|
|
50
|
+
return typeof value === "function";
|
|
33
51
|
}
|
|
52
|
+
/** Checks if a value is a Map */
|
|
34
53
|
function isMap(value) {
|
|
35
|
-
|
|
54
|
+
return value instanceof Map;
|
|
36
55
|
}
|
|
56
|
+
/** Checks if a value is NaN */
|
|
37
57
|
function isNaN(value) {
|
|
38
|
-
|
|
58
|
+
return typeof value === "number" && Number.isNaN(value);
|
|
39
59
|
}
|
|
60
|
+
/** Checks if a value is null */
|
|
40
61
|
function isNull(value) {
|
|
41
|
-
|
|
62
|
+
return value === null;
|
|
42
63
|
}
|
|
64
|
+
/** Checks if a value is a number */
|
|
43
65
|
function isNumber(value) {
|
|
44
|
-
|
|
66
|
+
return typeof value === "number" && !isNaN(value);
|
|
67
|
+
}
|
|
68
|
+
/** Checks if a value is a finite number */
|
|
69
|
+
function isFiniteNumber(value) {
|
|
70
|
+
return isNumber(value) && Number.isFinite(value);
|
|
71
|
+
}
|
|
72
|
+
/** Checks if a value is an integer */
|
|
73
|
+
function isInteger(value) {
|
|
74
|
+
return isNumber(value) && Number.isInteger(value);
|
|
45
75
|
}
|
|
76
|
+
/** Checks if a value is an object, excluding null value */
|
|
46
77
|
function isObject(value) {
|
|
47
|
-
|
|
78
|
+
return typeof value === "object" && value !== null;
|
|
48
79
|
}
|
|
80
|
+
/** Checks if a value is promise-like */
|
|
81
|
+
function isPromiseLike(value) {
|
|
82
|
+
return (isObject(value) || isFunction(value)) && "then" in value && isFunction(value.then);
|
|
83
|
+
}
|
|
84
|
+
/** Checks if a value is a regular expression */
|
|
85
|
+
function isRegExp(value) {
|
|
86
|
+
return value instanceof RegExp;
|
|
87
|
+
}
|
|
88
|
+
/** Check if a value is a record like Record<PropertyKey, unknown> */
|
|
49
89
|
function isRecord(value) {
|
|
50
|
-
|
|
90
|
+
return isObject(value) && !isNull(value) && constructorOf(value) === Object && Object.keys(prototypeOf(value)).length === 0;
|
|
51
91
|
}
|
|
92
|
+
/** Checks if a value is a safe integer */
|
|
93
|
+
function isSafeInteger(value) {
|
|
94
|
+
return isNumber(value) && Number.isSafeInteger(value);
|
|
95
|
+
}
|
|
96
|
+
/** Checks if a value is a Set */
|
|
52
97
|
function isSet(value) {
|
|
53
|
-
|
|
98
|
+
return value instanceof Set;
|
|
54
99
|
}
|
|
100
|
+
/** Checks if a value is a string */
|
|
55
101
|
function isString(value) {
|
|
56
|
-
|
|
102
|
+
return typeof value === "string";
|
|
57
103
|
}
|
|
104
|
+
/** Checks if a value is a symbol */
|
|
58
105
|
function isSymbol(value) {
|
|
59
|
-
|
|
106
|
+
return typeof value === "symbol";
|
|
60
107
|
}
|
|
108
|
+
/** Checks if a value is undefined */
|
|
61
109
|
function isUndefined(value) {
|
|
62
|
-
|
|
110
|
+
return typeof value === "undefined";
|
|
63
111
|
}
|
|
64
112
|
function constructorOf(value) {
|
|
65
|
-
|
|
113
|
+
return prototypeOf(value).constructor;
|
|
66
114
|
}
|
|
67
115
|
function prototypeOf(value) {
|
|
68
|
-
|
|
116
|
+
return Object.getPrototypeOf(value);
|
|
69
117
|
}
|
|
70
118
|
function And(...predicates) {
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
119
|
+
return (value) => {
|
|
120
|
+
return predicates.every((predicate) => predicate(value));
|
|
121
|
+
};
|
|
74
122
|
}
|
|
75
123
|
function Or(...predicates) {
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
124
|
+
return (value) => {
|
|
125
|
+
return predicates.some((predicate) => predicate(value));
|
|
126
|
+
};
|
|
79
127
|
}
|
|
80
128
|
function Not(predicate) {
|
|
81
|
-
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
And,
|
|
93
|
-
Not,
|
|
94
|
-
Or,
|
|
95
|
-
hasProperty,
|
|
96
|
-
isArray,
|
|
97
|
-
isBigInt,
|
|
98
|
-
isBlob,
|
|
99
|
-
isBoolean,
|
|
100
|
-
isDate,
|
|
101
|
-
isEmail,
|
|
102
|
-
isExact,
|
|
103
|
-
isFile,
|
|
104
|
-
isFunction,
|
|
105
|
-
isMap,
|
|
106
|
-
isNaN,
|
|
107
|
-
isNull,
|
|
108
|
-
isNumber,
|
|
109
|
-
isObject,
|
|
110
|
-
isRecord,
|
|
111
|
-
isSet,
|
|
112
|
-
isShape,
|
|
113
|
-
isString,
|
|
114
|
-
isSymbol,
|
|
115
|
-
isUndefined
|
|
129
|
+
return (value) => !predicate(value);
|
|
130
|
+
}
|
|
131
|
+
/** Checks present fields with their predicates; optional fields may be absent. */
|
|
132
|
+
var isShape = (shape) => {
|
|
133
|
+
const properties = Object.keys(shape);
|
|
134
|
+
return (value) => isObject(value) && properties.every((p) => {
|
|
135
|
+
const config = shape[p];
|
|
136
|
+
const [predicate, required] = isArray(config) ? config : [config, true];
|
|
137
|
+
if (!(p in value)) return !required;
|
|
138
|
+
return predicate(value[p]);
|
|
139
|
+
});
|
|
116
140
|
};
|
|
141
|
+
//#endregion
|
|
142
|
+
export { And, Not, Or, hasProperty, isArray, isBigInt, isBlob, isBoolean, isDate, isEmail, isError, isExact, isFile, isFiniteNumber, isFunction, isInteger, isMap, isNaN, isNull, isNumber, isObject, isPromiseLike, isRecord, isRegExp, isSafeInteger, isSet, isShape, isString, isSymbol, isUndefined, isValidDate };
|