umt 2.9.1 → 2.10.1
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/module/Validate/index.d.ts +1 -0
- package/module/Validate/index.js +1 -0
- package/module/Validate/index.js.map +1 -1
- package/module/Validate/object/core.d.ts +3 -2
- package/module/Validate/object/core.js +5 -0
- package/module/Validate/object/core.js.map +1 -1
- package/module/Validate/object/index.d.ts +1 -0
- package/module/Validate/object/index.js +1 -0
- package/module/Validate/object/index.js.map +1 -1
- package/module/Validate/object/optional.d.ts +2 -0
- package/module/Validate/object/optional.js +15 -0
- package/module/Validate/object/optional.js.map +1 -0
- package/module/Validate/type.d.ts +9 -2
- package/module/es5/String/hasNoLetters.js +1 -1
- package/module/es5/Validate/index.d.ts +1 -0
- package/module/es5/Validate/index.js +11 -0
- package/module/es5/Validate/object/core.d.ts +3 -2
- package/module/es5/Validate/object/core.js +5 -0
- package/module/es5/Validate/object/index.d.ts +1 -0
- package/module/es5/Validate/object/index.js +11 -0
- package/module/es5/Validate/object/optional.d.ts +2 -0
- package/module/es5/Validate/object/optional.js +20 -0
- package/module/es5/Validate/type.d.ts +9 -2
- package/module/es5/tsconfig.tsbuildinfo +1 -1
- package/module/es5/types/object/index.d.ts +1 -0
- package/module/es5/types/object/index.js +11 -0
- package/module/es5/types/object/pickPartial.d.ts +6 -0
- package/module/es5/types/object/pickPartial.js +5 -0
- package/module/types/object/index.d.ts +1 -0
- package/module/types/object/index.js +1 -0
- package/module/types/object/index.js.map +1 -1
- package/module/types/object/pickPartial.d.ts +6 -0
- package/module/types/object/pickPartial.js +2 -0
- package/module/types/object/pickPartial.js.map +1 -0
- package/package.json +81 -1
package/module/Validate/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Validate/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/Validate/index.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,QAAQ,CAAC;AAEvB,iBAAiB;AACjB,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,aAAa,CAAC;AAC5B,cAAc,SAAS,CAAC;AACxB,cAAc,sBAAsB,CAAC;AACrC,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC;AAC3B,cAAc,mBAAmB,CAAC;AAClC,cAAc,iBAAiB,CAAC;AAChC,cAAc,YAAY,CAAC;AAC3B,cAAc,cAAc,CAAC"}
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* Object validation core module
|
|
3
3
|
* Provides validation functionality for objects with type-specific validation rules for each property
|
|
4
4
|
*/
|
|
5
|
-
import type {
|
|
5
|
+
import type { PickPartial } from "../../types/object";
|
|
6
|
+
import type { OptionalKeys, ValidateCoreReturnType, ValidateType } from "../../Validate/type";
|
|
6
7
|
/**
|
|
7
8
|
* Creates an object validator with property-specific validation rules
|
|
8
9
|
* @template T - Object type containing validation functions for each property
|
|
@@ -12,4 +13,4 @@ import type { Types, ValidateCoreReturnType, ValidateType } from "../../Validate
|
|
|
12
13
|
*/
|
|
13
14
|
export declare const object: <T extends {
|
|
14
15
|
[key: string]: (value: any) => ValidateCoreReturnType<any>;
|
|
15
|
-
}>(option?: T, message?: string) => (value:
|
|
16
|
+
}, U = { [key in keyof T]: ValidateType<ReturnType<T[key]>["type"]>; }>(option?: T, message?: string) => (value: { [key in keyof PickPartial<U, OptionalKeys<U>>]: PickPartial<U, OptionalKeys<U>>[key]; }) => ValidateCoreReturnType<{ [key in keyof PickPartial<U, OptionalKeys<U>>]: PickPartial<U, OptionalKeys<U>>[key]; }>;
|
|
@@ -16,14 +16,18 @@ export const object = (option = {}, message) => {
|
|
|
16
16
|
return {
|
|
17
17
|
validate: false,
|
|
18
18
|
message: message || "",
|
|
19
|
+
// biome-ignore lint/suspicious/noExplicitAny: Type assertion needed for return type compatibility
|
|
19
20
|
type: value,
|
|
20
21
|
};
|
|
21
22
|
}
|
|
22
23
|
for (const validate in option) {
|
|
24
|
+
// biome-ignore lint/suspicious/noExplicitAny: Index access requires any cast
|
|
23
25
|
if (!option[validate](value[validate]).validate) {
|
|
24
26
|
return {
|
|
25
27
|
validate: false,
|
|
28
|
+
// biome-ignore lint/suspicious/noExplicitAny: Index access requires any cast
|
|
26
29
|
message: option[validate](value).message,
|
|
30
|
+
// biome-ignore lint/suspicious/noExplicitAny: Type assertion needed for return type compatibility
|
|
27
31
|
type: value,
|
|
28
32
|
};
|
|
29
33
|
}
|
|
@@ -31,6 +35,7 @@ export const object = (option = {}, message) => {
|
|
|
31
35
|
return {
|
|
32
36
|
validate: true,
|
|
33
37
|
message: "",
|
|
38
|
+
// biome-ignore lint/suspicious/noExplicitAny: Type assertion needed for return type compatibility
|
|
34
39
|
type: value,
|
|
35
40
|
};
|
|
36
41
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/Validate/object/core.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/Validate/object/core.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAOnE;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,MAAM,GAAG,CASpB,SAAY,EAAO,EACnB,OAAgB,EAChB,EAAE;IACF,OAAO,CACL,KAKC,EAMA,EAAE;QACH,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO;gBACL,QAAQ,EAAE,KAAK;gBACf,OAAO,EAAE,OAAO,IAAI,EAAE;gBACtB,kGAAkG;gBAClG,IAAI,EAAE,KAAY;aACnB,CAAC;QACJ,CAAC;QACD,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,6EAA6E;YAC7E,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAE,KAAa,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACzD,OAAO;oBACL,QAAQ,EAAE,KAAK;oBACf,6EAA6E;oBAC7E,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAY,CAAC,CAAC,OAAO;oBAC/C,kGAAkG;oBAClG,IAAI,EAAE,KAAY;iBACnB,CAAC;YACJ,CAAC;QACH,CAAC;QAED,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,OAAO,EAAE,EAAE;YACX,kGAAkG;YAClG,IAAI,EAAE,KAAY;SACnB,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Validate/object/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/Validate/object/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export const optional = (validator) => {
|
|
2
|
+
const optionalValidator = (value) => {
|
|
3
|
+
if (value === undefined) {
|
|
4
|
+
return {
|
|
5
|
+
validate: true,
|
|
6
|
+
message: "",
|
|
7
|
+
type: "undefined",
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
const result = validator(value);
|
|
11
|
+
return result;
|
|
12
|
+
};
|
|
13
|
+
return optionalValidator;
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=optional.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"optional.js","sourceRoot":"","sources":["../../../src/Validate/object/optional.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,QAAQ,GAAG,CACtB,SAAkD,EACM,EAAE;IAC1D,MAAM,iBAAiB,GAAG,CACxB,KAAS,EAC8B,EAAE;QACzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO;gBACL,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,EAAE;gBACX,IAAI,EAAE,WAAW;aAClB,CAAC;QACJ,CAAC;QACD,MAAM,MAAM,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC;QAChC,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IAEF,OAAO,iBAAiB,CAAC;AAC3B,CAAC,CAAC"}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
export type _Types<T> = T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T;
|
|
2
|
+
export type _Types2<T> = T extends undefined ? "undefined" : T extends null ? "null" : T;
|
|
1
3
|
/**
|
|
2
4
|
* Maps TypeScript types to their string literal representations
|
|
3
5
|
* @template T - The type to map
|
|
4
6
|
* @returns "string" for string, "number" for number, "boolean" for boolean, or the original type T otherwise
|
|
5
7
|
*/
|
|
6
|
-
export type Types<T> = T extends string
|
|
8
|
+
export type Types<T> = T extends string | number | boolean ? _Types<T> : T extends undefined | null ? _Types2<T> : T;
|
|
7
9
|
/**
|
|
8
10
|
* Core validation result type including validation status, message, and type information
|
|
9
11
|
* @template T - The type being validated
|
|
@@ -27,10 +29,15 @@ export interface ValidateReturnType<T> {
|
|
|
27
29
|
* @template T - The type of value to validate
|
|
28
30
|
*/
|
|
29
31
|
export type ValidateFunctionType<T> = (value: T) => boolean;
|
|
32
|
+
export type _ValidateType<T> = T extends "string" ? string : T extends "number" ? number : T extends "boolean" ? boolean : T;
|
|
33
|
+
export type _ValidateType2<T> = T extends "undefined" ? undefined : T extends "null" ? null : T;
|
|
30
34
|
/**
|
|
31
35
|
* Maps string literal type names back to their TypeScript types
|
|
32
36
|
* @template T - The string literal type name ("string", "number", "boolean")
|
|
33
37
|
* @returns The corresponding TypeScript type (string, number, boolean) or the original type T
|
|
34
38
|
*/
|
|
35
|
-
export type ValidateType<T> = T extends "string"
|
|
39
|
+
export type ValidateType<T> = T extends "string" | "number" | "boolean" ? _ValidateType<T> : T extends "undefined" | "null" ? _ValidateType2<T> : T;
|
|
36
40
|
export type SchemaToInterface<T extends (value: any) => ValidateCoreReturnType<any>> = ReturnType<T>["type"];
|
|
41
|
+
export type OptionalKeys<T> = {
|
|
42
|
+
[K in keyof T]: undefined extends T[K] ? K : never;
|
|
43
|
+
}[keyof T];
|
|
@@ -19,6 +19,6 @@ var hasNoLetters = exports.hasNoLetters = function hasNoLetters(text) {
|
|
|
19
19
|
// Uses Unicode pattern:
|
|
20
20
|
// \p{L} matches any Unicode letter
|
|
21
21
|
// [^\p{L}]* matches zero or more non-letter characters
|
|
22
|
-
var nonTextPattern = /^(?:[\0-@\[-`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u036F\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482-\u0489\u0530\u0557\u0558\u055A-\u055F\u0589-\u05CF\u05EB-\u05EE\u05F3-\u061F\u064B-\u066D\u0670\u06D4\u06D6-\u06E4\u06E7-\u06ED\u06F0-\u06F9\u06FD\u06FE\u0700-\u070F\u0711\u0730-\u074C\u07A6-\u07B0\u07B2-\u07C9\u07EB-\u07F3\u07F6-\u07F9\u07FB-\u07FF\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u083F\u0859-\u085F\u086B-\u086F\u0888\
|
|
22
|
+
var nonTextPattern = /^(?:[\0-@\[-`\{-\xA9\xAB-\xB4\xB6-\xB9\xBB-\xBF\xD7\xF7\u02C2-\u02C5\u02D2-\u02DF\u02E5-\u02EB\u02ED\u02EF-\u036F\u0375\u0378\u0379\u037E\u0380-\u0385\u0387\u038B\u038D\u03A2\u03F6\u0482-\u0489\u0530\u0557\u0558\u055A-\u055F\u0589-\u05CF\u05EB-\u05EE\u05F3-\u061F\u064B-\u066D\u0670\u06D4\u06D6-\u06E4\u06E7-\u06ED\u06F0-\u06F9\u06FD\u06FE\u0700-\u070F\u0711\u0730-\u074C\u07A6-\u07B0\u07B2-\u07C9\u07EB-\u07F3\u07F6-\u07F9\u07FB-\u07FF\u0816-\u0819\u081B-\u0823\u0825-\u0827\u0829-\u083F\u0859-\u085F\u086B-\u086F\u0888\u088F-\u089F\u08CA-\u0903\u093A-\u093C\u093E-\u094F\u0951-\u0957\u0962-\u0970\u0981-\u0984\u098D\u098E\u0991\u0992\u09A9\u09B1\u09B3-\u09B5\u09BA-\u09BC\u09BE-\u09CD\u09CF-\u09DB\u09DE\u09E2-\u09EF\u09F2-\u09FB\u09FD-\u0A04\u0A0B-\u0A0E\u0A11\u0A12\u0A29\u0A31\u0A34\u0A37\u0A3A-\u0A58\u0A5D\u0A5F-\u0A71\u0A75-\u0A84\u0A8E\u0A92\u0AA9\u0AB1\u0AB4\u0ABA-\u0ABC\u0ABE-\u0ACF\u0AD1-\u0ADF\u0AE2-\u0AF8\u0AFA-\u0B04\u0B0D\u0B0E\u0B11\u0B12\u0B29\u0B31\u0B34\u0B3A-\u0B3C\u0B3E-\u0B5B\u0B5E\u0B62-\u0B70\u0B72-\u0B82\u0B84\u0B8B-\u0B8D\u0B91\u0B96-\u0B98\u0B9B\u0B9D\u0BA0-\u0BA2\u0BA5-\u0BA7\u0BAB-\u0BAD\u0BBA-\u0BCF\u0BD1-\u0C04\u0C0D\u0C11\u0C29\u0C3A-\u0C3C\u0C3E-\u0C57\u0C5B\u0C5C\u0C5E\u0C5F\u0C62-\u0C7F\u0C81-\u0C84\u0C8D\u0C91\u0CA9\u0CB4\u0CBA-\u0CBC\u0CBE-\u0CDC\u0CDF\u0CE2-\u0CF0\u0CF3-\u0D03\u0D0D\u0D11\u0D3B\u0D3C\u0D3E-\u0D4D\u0D4F-\u0D53\u0D57-\u0D5E\u0D62-\u0D79\u0D80-\u0D84\u0D97-\u0D99\u0DB2\u0DBC\u0DBE\u0DBF\u0DC7-\u0E00\u0E31\u0E34-\u0E3F\u0E47-\u0E80\u0E83\u0E85\u0E8B\u0EA4\u0EA6\u0EB1\u0EB4-\u0EBC\u0EBE\u0EBF\u0EC5\u0EC7-\u0EDB\u0EE0-\u0EFF\u0F01-\u0F3F\u0F48\u0F6D-\u0F87\u0F8D-\u0FFF\u102B-\u103E\u1040-\u104F\u1056-\u1059\u105E-\u1060\u1062-\u1064\u1067-\u106D\u1071-\u1074\u1082-\u108D\u108F-\u109F\u10C6\u10C8-\u10CC\u10CE\u10CF\u10FB\u1249\u124E\u124F\u1257\u1259\u125E\u125F\u1289\u128E\u128F\u12B1\u12B6\u12B7\u12BF\u12C1\u12C6\u12C7\u12D7\u1311\u1316\u1317\u135B-\u137F\u1390-\u139F\u13F6\u13F7\u13FE-\u1400\u166D\u166E\u1680\u169B-\u169F\u16EB-\u16F0\u16F9-\u16FF\u1712-\u171E\u1732-\u173F\u1752-\u175F\u176D\u1771-\u177F\u17B4-\u17D6\u17D8-\u17DB\u17DD-\u181F\u1879-\u187F\u1885\u1886\u18A9\u18AB-\u18AF\u18F6-\u18FF\u191F-\u194F\u196E\u196F\u1975-\u197F\u19AC-\u19AF\u19CA-\u19FF\u1A17-\u1A1F\u1A55-\u1AA6\u1AA8-\u1B04\u1B34-\u1B44\u1B4D-\u1B82\u1BA1-\u1BAD\u1BB0-\u1BB9\u1BE6-\u1BFF\u1C24-\u1C4C\u1C50-\u1C59\u1C7E\u1C7F\u1C8B-\u1C8F\u1CBB\u1CBC\u1CC0-\u1CE8\u1CED\u1CF4\u1CF7-\u1CF9\u1CFB-\u1CFF\u1DC0-\u1DFF\u1F16\u1F17\u1F1E\u1F1F\u1F46\u1F47\u1F4E\u1F4F\u1F58\u1F5A\u1F5C\u1F5E\u1F7E\u1F7F\u1FB5\u1FBD\u1FBF-\u1FC1\u1FC5\u1FCD-\u1FCF\u1FD4\u1FD5\u1FDC-\u1FDF\u1FED-\u1FF1\u1FF5\u1FFD-\u2070\u2072-\u207E\u2080-\u208F\u209D-\u2101\u2103-\u2106\u2108\u2109\u2114\u2116-\u2118\u211E-\u2123\u2125\u2127\u2129\u212E\u213A\u213B\u2140-\u2144\u214A-\u214D\u214F-\u2182\u2185-\u2BFF\u2CE5-\u2CEA\u2CEF-\u2CF1\u2CF4-\u2CFF\u2D26\u2D28-\u2D2C\u2D2E\u2D2F\u2D68-\u2D6E\u2D70-\u2D7F\u2D97-\u2D9F\u2DA7\u2DAF\u2DB7\u2DBF\u2DC7\u2DCF\u2DD7\u2DDF-\u2E2E\u2E30-\u3004\u3007-\u3030\u3036-\u303A\u303D-\u3040\u3097-\u309C\u30A0\u30FB\u3100-\u3104\u3130\u318F-\u319F\u31C0-\u31EF\u3200-\u33FF\u4DC0-\u4DFF\uA48D-\uA4CF\uA4FE\uA4FF\uA60D-\uA60F\uA620-\uA629\uA62C-\uA63F\uA66F-\uA67E\uA69E\uA69F\uA6E6-\uA716\uA720\uA721\uA789\uA78A\uA7CE\uA7CF\uA7D2\uA7D4\uA7DD-\uA7F1\uA802\uA806\uA80B\uA823-\uA83F\uA874-\uA881\uA8B4-\uA8F1\uA8F8-\uA8FA\uA8FC\uA8FF-\uA909\uA926-\uA92F\uA947-\uA95F\uA97D-\uA983\uA9B3-\uA9CE\uA9D0-\uA9DF\uA9E5\uA9F0-\uA9F9\uA9FF\uAA29-\uAA3F\uAA43\uAA4C-\uAA5F\uAA77-\uAA79\uAA7B-\uAA7D\uAAB0\uAAB2-\uAAB4\uAAB7\uAAB8\uAABE\uAABF\uAAC1\uAAC3-\uAADA\uAADE\uAADF\uAAEB-\uAAF1\uAAF5-\uAB00\uAB07\uAB08\uAB0F\uAB10\uAB17-\uAB1F\uAB27\uAB2F\uAB5B\uAB6A-\uAB6F\uABE3-\uABFF\uD7A4-\uD7AF\uD7C7-\uD7CA\uD7FC-\uD7FF\uE000-\uF8FF\uFA6E\uFA6F\uFADA-\uFAFF\uFB07-\uFB12\uFB18-\uFB1C\uFB1E\uFB29\uFB37\uFB3D\uFB3F\uFB42\uFB45\uFBB2-\uFBD2\uFD3E-\uFD4F\uFD90\uFD91\uFDC8-\uFDEF\uFDFC-\uFE6F\uFE75\uFEFD-\uFF20\uFF3B-\uFF40\uFF5B-\uFF65\uFFBF-\uFFC1\uFFC8\uFFC9\uFFD0\uFFD1\uFFD8\uFFD9\uFFDD-\uFFFF]|\uD800[\uDC0C\uDC27\uDC3B\uDC3E\uDC4E\uDC4F\uDC5E-\uDC7F\uDCFB-\uDE7F\uDE9D-\uDE9F\uDED1-\uDEFF\uDF20-\uDF2C\uDF41\uDF4A-\uDF4F\uDF76-\uDF7F\uDF9E\uDF9F\uDFC4-\uDFC7\uDFD0-\uDFFF]|\uD801[\uDC9E-\uDCAF\uDCD4-\uDCD7\uDCFC-\uDCFF\uDD28-\uDD2F\uDD64-\uDD6F\uDD7B\uDD8B\uDD93\uDD96\uDDA2\uDDB2\uDDBA\uDDBD-\uDDBF\uDDF4-\uDDFF\uDF37-\uDF3F\uDF56-\uDF5F\uDF68-\uDF7F\uDF86\uDFB1\uDFBB-\uDFFF]|\uD802[\uDC06\uDC07\uDC09\uDC36\uDC39-\uDC3B\uDC3D\uDC3E\uDC56-\uDC5F\uDC77-\uDC7F\uDC9F-\uDCDF\uDCF3\uDCF6-\uDCFF\uDD16-\uDD1F\uDD3A-\uDD7F\uDDB8-\uDDBD\uDDC0-\uDDFF\uDE01-\uDE0F\uDE14\uDE18\uDE36-\uDE5F\uDE7D-\uDE7F\uDE9D-\uDEBF\uDEC8\uDEE5-\uDEFF\uDF36-\uDF3F\uDF56-\uDF5F\uDF73-\uDF7F\uDF92-\uDFFF]|\uD803[\uDC49-\uDC7F\uDCB3-\uDCBF\uDCF3-\uDCFF\uDD24-\uDD49\uDD66-\uDD6E\uDD86-\uDE7F\uDEAA-\uDEAF\uDEB2-\uDEC1\uDEC5-\uDEFF\uDF1D-\uDF26\uDF28-\uDF2F\uDF46-\uDF6F\uDF82-\uDFAF\uDFC5-\uDFDF\uDFF7-\uDFFF]|\uD804[\uDC00-\uDC02\uDC38-\uDC70\uDC73\uDC74\uDC76-\uDC82\uDCB0-\uDCCF\uDCE9-\uDD02\uDD27-\uDD43\uDD45\uDD46\uDD48-\uDD4F\uDD73-\uDD75\uDD77-\uDD82\uDDB3-\uDDC0\uDDC5-\uDDD9\uDDDB\uDDDD-\uDDFF\uDE12\uDE2C-\uDE3E\uDE41-\uDE7F\uDE87\uDE89\uDE8E\uDE9E\uDEA9-\uDEAF\uDEDF-\uDF04\uDF0D\uDF0E\uDF11\uDF12\uDF29\uDF31\uDF34\uDF3A-\uDF3C\uDF3E-\uDF4F\uDF51-\uDF5C\uDF62-\uDF7F\uDF8A\uDF8C\uDF8D\uDF8F\uDFB6\uDFB8-\uDFD0\uDFD2\uDFD4-\uDFFF]|\uD805[\uDC35-\uDC46\uDC4B-\uDC5E\uDC62-\uDC7F\uDCB0-\uDCC3\uDCC6\uDCC8-\uDD7F\uDDAF-\uDDD7\uDDDC-\uDDFF\uDE30-\uDE43\uDE45-\uDE7F\uDEAB-\uDEB7\uDEB9-\uDEFF\uDF1B-\uDF3F\uDF47-\uDFFF]|\uD806[\uDC2C-\uDC9F\uDCE0-\uDCFE\uDD07\uDD08\uDD0A\uDD0B\uDD14\uDD17\uDD30-\uDD3E\uDD40\uDD42-\uDD9F\uDDA8\uDDA9\uDDD1-\uDDE0\uDDE2\uDDE4-\uDDFF\uDE01-\uDE0A\uDE33-\uDE39\uDE3B-\uDE4F\uDE51-\uDE5B\uDE8A-\uDE9C\uDE9E-\uDEAF\uDEF9-\uDFBF\uDFE1-\uDFFF]|\uD807[\uDC09\uDC2F-\uDC3F\uDC41-\uDC71\uDC90-\uDCFF\uDD07\uDD0A\uDD31-\uDD45\uDD47-\uDD5F\uDD66\uDD69\uDD8A-\uDD97\uDD99-\uDEDF\uDEF3-\uDF01\uDF03\uDF11\uDF34-\uDFAF\uDFB1-\uDFFF]|\uD808[\uDF9A-\uDFFF]|\uD809[\uDC00-\uDC7F\uDD44-\uDFFF]|[\uD80A\uD812-\uD817\uD819\uD824-\uD82A\uD82D\uD82E\uD830-\uD834\uD836\uD83C-\uD83F\uD87C\uD87D\uD87F\uD889-\uDBFF][\uDC00-\uDFFF]|\uD80B[\uDC00-\uDF8F\uDFF1-\uDFFF]|\uD80D[\uDC30-\uDC40\uDC47-\uDC5F]|\uD810[\uDFFB-\uDFFF]|\uD811[\uDE47-\uDFFF]|\uD818[\uDC00-\uDCFF\uDD1E-\uDFFF]|\uD81A[\uDE39-\uDE3F\uDE5F-\uDE6F\uDEBF-\uDECF\uDEEE-\uDEFF\uDF30-\uDF3F\uDF44-\uDF62\uDF78-\uDF7C\uDF90-\uDFFF]|\uD81B[\uDC00-\uDD3F\uDD6D-\uDE3F\uDE80-\uDEFF\uDF4B-\uDF4F\uDF51-\uDF92\uDFA0-\uDFDF\uDFE2\uDFE4-\uDFFF]|\uD821[\uDFF8-\uDFFF]|\uD823[\uDCD6-\uDCFE\uDD09-\uDFFF]|\uD82B[\uDC00-\uDFEF\uDFF4\uDFFC\uDFFF]|\uD82C[\uDD23-\uDD31\uDD33-\uDD4F\uDD53\uDD54\uDD56-\uDD63\uDD68-\uDD6F\uDEFC-\uDFFF]|\uD82F[\uDC6B-\uDC6F\uDC7D-\uDC7F\uDC89-\uDC8F\uDC9A-\uDFFF]|\uD835[\uDC55\uDC9D\uDCA0\uDCA1\uDCA3\uDCA4\uDCA7\uDCA8\uDCAD\uDCBA\uDCBC\uDCC4\uDD06\uDD0B\uDD0C\uDD15\uDD1D\uDD3A\uDD3F\uDD45\uDD47-\uDD49\uDD51\uDEA6\uDEA7\uDEC1\uDEDB\uDEFB\uDF15\uDF35\uDF4F\uDF6F\uDF89\uDFA9\uDFC3\uDFCC-\uDFFF]|\uD837[\uDC00-\uDEFF\uDF1F-\uDF24\uDF2B-\uDFFF]|\uD838[\uDC00-\uDC2F\uDC6E-\uDCFF\uDD2D-\uDD36\uDD3E-\uDD4D\uDD4F-\uDE8F\uDEAE-\uDEBF\uDEEC-\uDFFF]|\uD839[\uDC00-\uDCCF\uDCEC-\uDDCF\uDDEE\uDDEF\uDDF1-\uDFDF\uDFE7\uDFEC\uDFEF\uDFFF]|\uD83A[\uDCC5-\uDCFF\uDD44-\uDD4A\uDD4C-\uDFFF]|\uD83B[\uDC00-\uDDFF\uDE04\uDE20\uDE23\uDE25\uDE26\uDE28\uDE33\uDE38\uDE3A\uDE3C-\uDE41\uDE43-\uDE46\uDE48\uDE4A\uDE4C\uDE50\uDE53\uDE55\uDE56\uDE58\uDE5A\uDE5C\uDE5E\uDE60\uDE63\uDE65\uDE66\uDE6B\uDE73\uDE78\uDE7D\uDE7F\uDE8A\uDE9C-\uDEA0\uDEA4\uDEAA\uDEBC-\uDFFF]|\uD869[\uDEE0-\uDEFF]|\uD86D[\uDF3A-\uDF3F]|\uD86E[\uDC1E\uDC1F]|\uD873[\uDEA2-\uDEAF]|\uD87A[\uDFE1-\uDFEF]|\uD87B[\uDE5E-\uDFFF]|\uD87E[\uDE1E-\uDFFF]|\uD884[\uDF4B-\uDF4F]|\uD888[\uDFB0-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF])*$/;
|
|
23
23
|
return nonTextPattern.test(text);
|
|
24
24
|
};
|
|
@@ -58,6 +58,17 @@ Object.keys(_string).forEach(function (key) {
|
|
|
58
58
|
}
|
|
59
59
|
});
|
|
60
60
|
});
|
|
61
|
+
var _type = require("./type");
|
|
62
|
+
Object.keys(_type).forEach(function (key) {
|
|
63
|
+
if (key === "default" || key === "__esModule") return;
|
|
64
|
+
if (key in exports && exports[key] === _type[key]) return;
|
|
65
|
+
Object.defineProperty(exports, key, {
|
|
66
|
+
enumerable: true,
|
|
67
|
+
get: function get() {
|
|
68
|
+
return _type[key];
|
|
69
|
+
}
|
|
70
|
+
});
|
|
71
|
+
});
|
|
61
72
|
var _isDeepEqual = require("./isDeepEqual");
|
|
62
73
|
Object.keys(_isDeepEqual).forEach(function (key) {
|
|
63
74
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* Object validation core module
|
|
3
3
|
* Provides validation functionality for objects with type-specific validation rules for each property
|
|
4
4
|
*/
|
|
5
|
-
import type {
|
|
5
|
+
import type { PickPartial } from "$/object";
|
|
6
|
+
import type { OptionalKeys, ValidateCoreReturnType, ValidateType } from "@/Validate/type";
|
|
6
7
|
/**
|
|
7
8
|
* Creates an object validator with property-specific validation rules
|
|
8
9
|
* @template T - Object type containing validation functions for each property
|
|
@@ -12,4 +13,4 @@ import type { Types, ValidateCoreReturnType, ValidateType } from "@/Validate/typ
|
|
|
12
13
|
*/
|
|
13
14
|
export declare const object: <T extends {
|
|
14
15
|
[key: string]: (value: any) => ValidateCoreReturnType<any>;
|
|
15
|
-
}>(option?: T, message?: string) => (value:
|
|
16
|
+
}, U = { [key in keyof T]: ValidateType<ReturnType<T[key]>["type"]>; }>(option?: T, message?: string) => (value: { [key in keyof PickPartial<U, OptionalKeys<U>>]: PickPartial<U, OptionalKeys<U>>[key]; }) => ValidateCoreReturnType<{ [key in keyof PickPartial<U, OptionalKeys<U>>]: PickPartial<U, OptionalKeys<U>>[key]; }>;
|
|
@@ -25,14 +25,18 @@ var object = exports.object = function object() {
|
|
|
25
25
|
return {
|
|
26
26
|
validate: false,
|
|
27
27
|
message: message || "",
|
|
28
|
+
// biome-ignore lint/suspicious/noExplicitAny: Type assertion needed for return type compatibility
|
|
28
29
|
type: value
|
|
29
30
|
};
|
|
30
31
|
}
|
|
31
32
|
for (var validate in option) {
|
|
33
|
+
// biome-ignore lint/suspicious/noExplicitAny: Index access requires any cast
|
|
32
34
|
if (!option[validate](value[validate]).validate) {
|
|
33
35
|
return {
|
|
34
36
|
validate: false,
|
|
37
|
+
// biome-ignore lint/suspicious/noExplicitAny: Index access requires any cast
|
|
35
38
|
message: option[validate](value).message,
|
|
39
|
+
// biome-ignore lint/suspicious/noExplicitAny: Type assertion needed for return type compatibility
|
|
36
40
|
type: value
|
|
37
41
|
};
|
|
38
42
|
}
|
|
@@ -40,6 +44,7 @@ var object = exports.object = function object() {
|
|
|
40
44
|
return {
|
|
41
45
|
validate: true,
|
|
42
46
|
message: "",
|
|
47
|
+
// biome-ignore lint/suspicious/noExplicitAny: Type assertion needed for return type compatibility
|
|
43
48
|
type: value
|
|
44
49
|
};
|
|
45
50
|
};
|
|
@@ -13,4 +13,15 @@ Object.keys(_core).forEach(function (key) {
|
|
|
13
13
|
return _core[key];
|
|
14
14
|
}
|
|
15
15
|
});
|
|
16
|
+
});
|
|
17
|
+
var _optional = require("./optional");
|
|
18
|
+
Object.keys(_optional).forEach(function (key) {
|
|
19
|
+
if (key === "default" || key === "__esModule") return;
|
|
20
|
+
if (key in exports && exports[key] === _optional[key]) return;
|
|
21
|
+
Object.defineProperty(exports, key, {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function get() {
|
|
24
|
+
return _optional[key];
|
|
25
|
+
}
|
|
26
|
+
});
|
|
16
27
|
});
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.optional = void 0;
|
|
7
|
+
var optional = exports.optional = function optional(validator) {
|
|
8
|
+
var optionalValidator = function optionalValidator(value) {
|
|
9
|
+
if (value === undefined) {
|
|
10
|
+
return {
|
|
11
|
+
validate: true,
|
|
12
|
+
message: "",
|
|
13
|
+
type: "undefined"
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
var result = validator(value);
|
|
17
|
+
return result;
|
|
18
|
+
};
|
|
19
|
+
return optionalValidator;
|
|
20
|
+
};
|
|
@@ -1,9 +1,11 @@
|
|
|
1
|
+
export type _Types<T> = T extends string ? "string" : T extends number ? "number" : T extends boolean ? "boolean" : T;
|
|
2
|
+
export type _Types2<T> = T extends undefined ? "undefined" : T extends null ? "null" : T;
|
|
1
3
|
/**
|
|
2
4
|
* Maps TypeScript types to their string literal representations
|
|
3
5
|
* @template T - The type to map
|
|
4
6
|
* @returns "string" for string, "number" for number, "boolean" for boolean, or the original type T otherwise
|
|
5
7
|
*/
|
|
6
|
-
export type Types<T> = T extends string
|
|
8
|
+
export type Types<T> = T extends string | number | boolean ? _Types<T> : T extends undefined | null ? _Types2<T> : T;
|
|
7
9
|
/**
|
|
8
10
|
* Core validation result type including validation status, message, and type information
|
|
9
11
|
* @template T - The type being validated
|
|
@@ -27,10 +29,15 @@ export interface ValidateReturnType<T> {
|
|
|
27
29
|
* @template T - The type of value to validate
|
|
28
30
|
*/
|
|
29
31
|
export type ValidateFunctionType<T> = (value: T) => boolean;
|
|
32
|
+
export type _ValidateType<T> = T extends "string" ? string : T extends "number" ? number : T extends "boolean" ? boolean : T;
|
|
33
|
+
export type _ValidateType2<T> = T extends "undefined" ? undefined : T extends "null" ? null : T;
|
|
30
34
|
/**
|
|
31
35
|
* Maps string literal type names back to their TypeScript types
|
|
32
36
|
* @template T - The string literal type name ("string", "number", "boolean")
|
|
33
37
|
* @returns The corresponding TypeScript type (string, number, boolean) or the original type T
|
|
34
38
|
*/
|
|
35
|
-
export type ValidateType<T> = T extends "string"
|
|
39
|
+
export type ValidateType<T> = T extends "string" | "number" | "boolean" ? _ValidateType<T> : T extends "undefined" | "null" ? _ValidateType2<T> : T;
|
|
36
40
|
export type SchemaToInterface<T extends (value: any) => ValidateCoreReturnType<any>> = ReturnType<T>["type"];
|
|
41
|
+
export type OptionalKeys<T> = {
|
|
42
|
+
[K in keyof T]: undefined extends T[K] ? K : never;
|
|
43
|
+
}[keyof T];
|