@sinclair/typebox 0.32.0-dev-25 → 0.32.0-dev-27
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/build/import/errors/errors.mjs +2 -2
- package/build/import/errors/function.d.mts +13 -3
- package/build/import/errors/function.mjs +39 -39
- package/build/import/index.d.mts +2 -2
- package/build/import/type/awaited/awaited.mjs +2 -6
- package/build/import/type/composite/composite.d.mts +1 -2
- package/build/import/type/composite/composite.mjs +2 -2
- package/build/import/type/const/const.mjs +6 -6
- package/build/import/type/constructor/constructor.d.mts +1 -1
- package/build/import/type/constructor/constructor.mjs +1 -1
- package/build/import/type/deref/deref.mjs +1 -2
- package/build/import/type/discard/discard.mjs +2 -2
- package/build/import/type/enum/enum.mjs +3 -0
- package/build/import/type/exclude/exclude-from-mapped-result.d.mts +5 -5
- package/build/import/type/exclude/exclude-from-mapped-result.mjs +7 -7
- package/build/import/type/exclude/exclude.mjs +0 -1
- package/build/import/type/extends/extends-from-mapped-key.d.mts +1 -1
- package/build/import/type/extends/extends-from-mapped-key.mjs +4 -5
- package/build/import/type/extends/extends-from-mapped-result.d.mts +5 -5
- package/build/import/type/extends/extends-from-mapped-result.mjs +7 -7
- package/build/import/type/extends/extends.mjs +0 -1
- package/build/import/type/extract/extract-from-mapped-result.d.mts +5 -5
- package/build/import/type/extract/extract-from-mapped-result.mjs +7 -7
- package/build/import/type/extract/extract.d.mts +1 -2
- package/build/import/type/extract/extract.mjs +4 -2
- package/build/import/type/index.d.mts +1 -1
- package/build/import/type/index.mjs +1 -1
- package/build/import/type/indexed/indexed-from-mapped-key.d.mts +2 -2
- package/build/import/type/indexed/indexed-from-mapped-key.mjs +4 -5
- package/build/import/type/indexed/indexed-from-mapped-result.d.mts +2 -2
- package/build/import/type/indexed/indexed-from-mapped-result.mjs +1 -1
- package/build/import/type/indexed/indexed-property-keys.d.mts +6 -6
- package/build/import/type/indexed/indexed-property-keys.mjs +3 -5
- package/build/import/type/indexed/indexed.d.mts +1 -1
- package/build/import/type/indexed/indexed.mjs +9 -27
- package/build/import/type/intersect/intersect-evaluated.mjs +3 -13
- package/build/import/type/intrinsic/capitalize.d.mts +2 -2
- package/build/import/type/intrinsic/intrinsic-from-mapped-key.d.mts +1 -1
- package/build/import/type/intrinsic/intrinsic-from-mapped-key.mjs +4 -5
- package/build/import/type/intrinsic/intrinsic.d.mts +2 -3
- package/build/import/type/intrinsic/intrinsic.mjs +2 -5
- package/build/import/type/intrinsic/lowercase.d.mts +2 -2
- package/build/import/type/intrinsic/uncapitalize.d.mts +2 -2
- package/build/import/type/intrinsic/uppercase.d.mts +2 -2
- package/build/import/type/iterator/iterator.mjs +1 -1
- package/build/import/type/keyof/keyof-from-mapped-result.d.mts +3 -3
- package/build/import/type/keyof/keyof-from-mapped-result.mjs +4 -4
- package/build/import/type/keyof/keyof-property-keys.d.mts +3 -3
- package/build/import/type/keyof/keyof-property-keys.mjs +9 -15
- package/build/import/type/keyof/keyof.mjs +2 -8
- package/build/import/type/mapped/mapped.d.mts +6 -1
- package/build/import/type/mapped/mapped.mjs +21 -14
- package/build/import/type/not/not.mjs +1 -1
- package/build/import/type/object/object.d.mts +1 -1
- package/build/import/type/object/object.mjs +0 -1
- package/build/import/type/omit/index.d.mts +1 -0
- package/build/import/type/omit/index.mjs +1 -0
- package/build/import/type/omit/omit-from-mapped-key.mjs +4 -5
- package/build/import/type/omit/omit-from-mapped-result.d.mts +11 -0
- package/build/import/type/omit/omit-from-mapped-result.mjs +17 -0
- package/build/import/type/omit/omit.d.mts +6 -3
- package/build/import/type/omit/omit.mjs +11 -9
- package/build/import/type/optional/optional-from-mapped-result.d.mts +5 -5
- package/build/import/type/optional/optional-from-mapped-result.mjs +7 -7
- package/build/import/type/partial/partial-from-mapped-result.d.mts +5 -5
- package/build/import/type/partial/partial-from-mapped-result.mjs +4 -4
- package/build/import/type/partial/partial.d.mts +2 -3
- package/build/import/type/partial/partial.mjs +8 -21
- package/build/import/type/pick/index.d.mts +1 -0
- package/build/import/type/pick/index.mjs +1 -0
- package/build/import/type/pick/pick-from-mapped-key.mjs +4 -5
- package/build/import/type/pick/pick-from-mapped-result.d.mts +11 -0
- package/build/import/type/pick/pick-from-mapped-result.mjs +17 -0
- package/build/import/type/pick/pick.d.mts +5 -2
- package/build/import/type/pick/pick.mjs +11 -10
- package/build/import/type/promise/promise.mjs +1 -1
- package/build/import/type/readonly/readonly-from-mapped-result.d.mts +5 -5
- package/build/import/type/readonly/readonly-from-mapped-result.mjs +4 -4
- package/build/import/type/record/record.d.mts +2 -2
- package/build/import/type/record/record.mjs +3 -0
- package/build/import/type/ref/ref.mjs +1 -1
- package/build/import/type/required/required-from-mapped-result.d.mts +5 -5
- package/build/import/type/required/required-from-mapped-result.mjs +7 -7
- package/build/import/type/required/required.d.mts +2 -3
- package/build/import/type/required/required.mjs +4 -14
- package/build/import/type/rest/rest.d.mts +2 -2
- package/build/import/type/rest/rest.mjs +1 -2
- package/build/import/type/sets/index.d.mts +1 -0
- package/build/import/type/sets/index.mjs +1 -0
- package/build/import/type/sets/set.d.mts +24 -0
- package/build/import/type/sets/set.mjs +35 -0
- package/build/import/type/strict/strict.d.mts +1 -1
- package/build/import/type/strict/strict.mjs +1 -1
- package/build/import/type/template-literal/syntax.d.mts +1 -1
- package/build/import/type/template-literal/template-literal.d.mts +1 -1
- package/build/import/type/transform/transform.mjs +1 -1
- package/build/import/type/type/json.d.mts +6 -2
- package/build/import/type/union/union-evaluated.mjs +3 -14
- package/build/require/errors/errors.js +2 -2
- package/build/require/errors/function.d.ts +13 -3
- package/build/require/errors/function.js +39 -39
- package/build/require/index.d.ts +2 -2
- package/build/require/type/awaited/awaited.js +2 -6
- package/build/require/type/composite/composite.d.ts +1 -2
- package/build/require/type/composite/composite.js +5 -6
- package/build/require/type/const/const.js +6 -6
- package/build/require/type/constructor/constructor.d.ts +1 -1
- package/build/require/type/constructor/constructor.js +1 -1
- package/build/require/type/deref/deref.js +0 -1
- package/build/require/type/discard/discard.js +2 -2
- package/build/require/type/enum/enum.js +3 -0
- package/build/require/type/exclude/exclude-from-mapped-result.d.ts +5 -5
- package/build/require/type/exclude/exclude-from-mapped-result.js +7 -7
- package/build/require/type/exclude/exclude.js +0 -1
- package/build/require/type/extends/extends-from-mapped-key.d.ts +1 -1
- package/build/require/type/extends/extends-from-mapped-key.js +4 -5
- package/build/require/type/extends/extends-from-mapped-result.d.ts +5 -5
- package/build/require/type/extends/extends-from-mapped-result.js +7 -7
- package/build/require/type/extends/extends.js +0 -1
- package/build/require/type/extract/extract-from-mapped-result.d.ts +5 -5
- package/build/require/type/extract/extract-from-mapped-result.js +7 -7
- package/build/require/type/extract/extract.d.ts +1 -2
- package/build/require/type/extract/extract.js +4 -3
- package/build/require/type/index.d.ts +1 -1
- package/build/require/type/index.js +1 -1
- package/build/require/type/indexed/indexed-from-mapped-key.d.ts +2 -2
- package/build/require/type/indexed/indexed-from-mapped-key.js +4 -5
- package/build/require/type/indexed/indexed-from-mapped-result.d.ts +2 -2
- package/build/require/type/indexed/indexed-from-mapped-result.js +1 -1
- package/build/require/type/indexed/indexed-property-keys.d.ts +6 -6
- package/build/require/type/indexed/indexed-property-keys.js +3 -5
- package/build/require/type/indexed/indexed.d.ts +1 -1
- package/build/require/type/indexed/indexed.js +9 -27
- package/build/require/type/intersect/intersect-evaluated.js +3 -13
- package/build/require/type/intrinsic/capitalize.d.ts +2 -2
- package/build/require/type/intrinsic/intrinsic-from-mapped-key.d.ts +1 -1
- package/build/require/type/intrinsic/intrinsic-from-mapped-key.js +4 -5
- package/build/require/type/intrinsic/intrinsic.d.ts +2 -3
- package/build/require/type/intrinsic/intrinsic.js +2 -5
- package/build/require/type/intrinsic/lowercase.d.ts +2 -2
- package/build/require/type/intrinsic/uncapitalize.d.ts +2 -2
- package/build/require/type/intrinsic/uppercase.d.ts +2 -2
- package/build/require/type/iterator/iterator.js +1 -1
- package/build/require/type/keyof/keyof-from-mapped-result.d.ts +3 -3
- package/build/require/type/keyof/keyof-from-mapped-result.js +4 -4
- package/build/require/type/keyof/keyof-property-keys.d.ts +3 -3
- package/build/require/type/keyof/keyof-property-keys.js +9 -15
- package/build/require/type/keyof/keyof.js +2 -8
- package/build/require/type/mapped/mapped.d.ts +6 -1
- package/build/require/type/mapped/mapped.js +21 -14
- package/build/require/type/not/not.js +1 -1
- package/build/require/type/object/object.d.ts +1 -1
- package/build/require/type/object/object.js +0 -1
- package/build/require/type/omit/index.d.ts +1 -0
- package/build/require/type/omit/index.js +1 -0
- package/build/require/type/omit/omit-from-mapped-key.js +4 -5
- package/build/require/type/omit/omit-from-mapped-result.d.ts +11 -0
- package/build/require/type/omit/omit-from-mapped-result.js +22 -0
- package/build/require/type/omit/omit.d.ts +6 -3
- package/build/require/type/omit/omit.js +10 -8
- package/build/require/type/optional/optional-from-mapped-result.d.ts +5 -5
- package/build/require/type/optional/optional-from-mapped-result.js +7 -7
- package/build/require/type/partial/partial-from-mapped-result.d.ts +5 -5
- package/build/require/type/partial/partial-from-mapped-result.js +4 -4
- package/build/require/type/partial/partial.d.ts +2 -3
- package/build/require/type/partial/partial.js +8 -21
- package/build/require/type/pick/index.d.ts +1 -0
- package/build/require/type/pick/index.js +1 -0
- package/build/require/type/pick/pick-from-mapped-key.js +4 -5
- package/build/require/type/pick/pick-from-mapped-result.d.ts +11 -0
- package/build/require/type/pick/pick-from-mapped-result.js +22 -0
- package/build/require/type/pick/pick.d.ts +5 -2
- package/build/require/type/pick/pick.js +10 -9
- package/build/require/type/promise/promise.js +1 -1
- package/build/require/type/readonly/readonly-from-mapped-result.d.ts +5 -5
- package/build/require/type/readonly/readonly-from-mapped-result.js +4 -4
- package/build/require/type/record/record.d.ts +2 -2
- package/build/require/type/record/record.js +3 -0
- package/build/require/type/ref/ref.js +1 -1
- package/build/require/type/required/required-from-mapped-result.d.ts +5 -5
- package/build/require/type/required/required-from-mapped-result.js +7 -7
- package/build/require/type/required/required.d.ts +2 -3
- package/build/require/type/required/required.js +4 -14
- package/build/require/type/rest/rest.d.ts +2 -2
- package/build/require/type/rest/rest.js +1 -3
- package/build/require/type/sets/index.d.ts +1 -0
- package/build/require/type/{operators → sets}/index.js +1 -1
- package/build/require/type/sets/set.d.ts +24 -0
- package/build/require/type/sets/set.js +47 -0
- package/build/require/type/strict/strict.d.ts +1 -1
- package/build/require/type/strict/strict.js +1 -1
- package/build/require/type/template-literal/parse.js +1 -1
- package/build/require/type/template-literal/syntax.d.ts +1 -1
- package/build/require/type/template-literal/template-literal.d.ts +1 -1
- package/build/require/type/transform/transform.js +1 -1
- package/build/require/type/type/json.d.ts +6 -2
- package/build/require/type/union/union-evaluated.js +3 -14
- package/package.json +1 -1
- package/readme.md +67 -67
- package/build/import/type/operators/index.d.mts +0 -1
- package/build/import/type/operators/index.mjs +0 -1
- package/build/import/type/operators/operators.d.mts +0 -24
- package/build/import/type/operators/operators.mjs +0 -77
- package/build/require/type/operators/index.d.ts +0 -1
- package/build/require/type/operators/operators.d.ts +0 -24
- package/build/require/type/operators/operators.js +0 -89
|
@@ -124,8 +124,8 @@ export class ValueErrorIterator {
|
|
|
124
124
|
// --------------------------------------------------------------------------
|
|
125
125
|
// Create
|
|
126
126
|
// --------------------------------------------------------------------------
|
|
127
|
-
function Create(
|
|
128
|
-
return { type, schema, path, value, message: GetErrorFunction()(schema,
|
|
127
|
+
function Create(errorType, schema, path, value) {
|
|
128
|
+
return { type: errorType, schema, path, value, message: GetErrorFunction()({ errorType, path, schema, value }) };
|
|
129
129
|
}
|
|
130
130
|
// --------------------------------------------------------------------------
|
|
131
131
|
// Types
|
|
@@ -1,9 +1,19 @@
|
|
|
1
1
|
import { TSchema } from '../type/schema/index.mjs';
|
|
2
2
|
import { ValueErrorType } from './errors.mjs';
|
|
3
3
|
/** Creates an error message using en-US as the default locale */
|
|
4
|
-
export declare function DefaultErrorFunction(
|
|
5
|
-
export type
|
|
6
|
-
/**
|
|
4
|
+
export declare function DefaultErrorFunction(error: ErrorFunctionParameter): string;
|
|
5
|
+
export type ErrorFunctionParameter = {
|
|
6
|
+
/** The type of validation error */
|
|
7
|
+
errorType: ValueErrorType;
|
|
8
|
+
/** The path of the error */
|
|
9
|
+
path: string;
|
|
10
|
+
/** The schema associated with the error */
|
|
11
|
+
schema: TSchema;
|
|
12
|
+
/** The value associated with the error */
|
|
13
|
+
value: unknown;
|
|
14
|
+
};
|
|
15
|
+
export type ErrorFunction = (parameter: ErrorFunctionParameter) => string;
|
|
16
|
+
/** Sets the error function used to generate error messages. */
|
|
7
17
|
export declare function SetErrorFunction(callback: ErrorFunction): void;
|
|
8
18
|
/** Gets the error function used to generate error messages */
|
|
9
19
|
export declare function GetErrorFunction(): ErrorFunction;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { Kind } from '../type/symbols/index.mjs';
|
|
2
2
|
import { ValueErrorType } from './errors.mjs';
|
|
3
3
|
/** Creates an error message using en-US as the default locale */
|
|
4
|
-
export function DefaultErrorFunction(
|
|
5
|
-
switch (errorType) {
|
|
4
|
+
export function DefaultErrorFunction(error) {
|
|
5
|
+
switch (error.errorType) {
|
|
6
6
|
case ValueErrorType.ArrayContains:
|
|
7
7
|
return 'Expected array to contain at least one matching value';
|
|
8
8
|
case ValueErrorType.ArrayMaxContains:
|
|
9
|
-
return `Expected array to contain no more than ${schema.maxContains} matching values`;
|
|
9
|
+
return `Expected array to contain no more than ${error.schema.maxContains} matching values`;
|
|
10
10
|
case ValueErrorType.ArrayMinContains:
|
|
11
|
-
return `Expected array to contain at least ${schema.minContains} matching values`;
|
|
11
|
+
return `Expected array to contain at least ${error.schema.minContains} matching values`;
|
|
12
12
|
case ValueErrorType.ArrayMaxItems:
|
|
13
|
-
return `Expected array length to be less or equal to ${schema.maxItems}`;
|
|
13
|
+
return `Expected array length to be less or equal to ${error.schema.maxItems}`;
|
|
14
14
|
case ValueErrorType.ArrayMinItems:
|
|
15
|
-
return `Expected array length to be greater or equal to ${schema.minItems}`;
|
|
15
|
+
return `Expected array length to be greater or equal to ${error.schema.minItems}`;
|
|
16
16
|
case ValueErrorType.ArrayUniqueItems:
|
|
17
17
|
return 'Expected array elements to be unique';
|
|
18
18
|
case ValueErrorType.Array:
|
|
@@ -20,43 +20,43 @@ export function DefaultErrorFunction(schema, errorType) {
|
|
|
20
20
|
case ValueErrorType.AsyncIterator:
|
|
21
21
|
return 'Expected AsyncIterator';
|
|
22
22
|
case ValueErrorType.BigIntExclusiveMaximum:
|
|
23
|
-
return `Expected bigint to be less than ${schema.exclusiveMaximum}`;
|
|
23
|
+
return `Expected bigint to be less than ${error.schema.exclusiveMaximum}`;
|
|
24
24
|
case ValueErrorType.BigIntExclusiveMinimum:
|
|
25
|
-
return `Expected bigint to be greater than ${schema.exclusiveMinimum}`;
|
|
25
|
+
return `Expected bigint to be greater than ${error.schema.exclusiveMinimum}`;
|
|
26
26
|
case ValueErrorType.BigIntMaximum:
|
|
27
|
-
return `Expected bigint to be less or equal to ${schema.maximum}`;
|
|
27
|
+
return `Expected bigint to be less or equal to ${error.schema.maximum}`;
|
|
28
28
|
case ValueErrorType.BigIntMinimum:
|
|
29
|
-
return `Expected bigint to be greater or equal to ${schema.minimum}`;
|
|
29
|
+
return `Expected bigint to be greater or equal to ${error.schema.minimum}`;
|
|
30
30
|
case ValueErrorType.BigIntMultipleOf:
|
|
31
|
-
return `Expected bigint to be a multiple of ${schema.multipleOf}`;
|
|
31
|
+
return `Expected bigint to be a multiple of ${error.schema.multipleOf}`;
|
|
32
32
|
case ValueErrorType.BigInt:
|
|
33
33
|
return 'Expected bigint';
|
|
34
34
|
case ValueErrorType.Boolean:
|
|
35
35
|
return 'Expected boolean';
|
|
36
36
|
case ValueErrorType.DateExclusiveMinimumTimestamp:
|
|
37
|
-
return `Expected Date timestamp to be greater than ${schema.exclusiveMinimumTimestamp}`;
|
|
37
|
+
return `Expected Date timestamp to be greater than ${error.schema.exclusiveMinimumTimestamp}`;
|
|
38
38
|
case ValueErrorType.DateExclusiveMaximumTimestamp:
|
|
39
|
-
return `Expected Date timestamp to be less than ${schema.exclusiveMaximumTimestamp}`;
|
|
39
|
+
return `Expected Date timestamp to be less than ${error.schema.exclusiveMaximumTimestamp}`;
|
|
40
40
|
case ValueErrorType.DateMinimumTimestamp:
|
|
41
|
-
return `Expected Date timestamp to be greater or equal to ${schema.minimumTimestamp}`;
|
|
41
|
+
return `Expected Date timestamp to be greater or equal to ${error.schema.minimumTimestamp}`;
|
|
42
42
|
case ValueErrorType.DateMaximumTimestamp:
|
|
43
|
-
return `Expected Date timestamp to be less or equal to ${schema.maximumTimestamp}`;
|
|
43
|
+
return `Expected Date timestamp to be less or equal to ${error.schema.maximumTimestamp}`;
|
|
44
44
|
case ValueErrorType.DateMultipleOfTimestamp:
|
|
45
|
-
return `Expected Date timestamp to be a multiple of ${schema.multipleOfTimestamp}`;
|
|
45
|
+
return `Expected Date timestamp to be a multiple of ${error.schema.multipleOfTimestamp}`;
|
|
46
46
|
case ValueErrorType.Date:
|
|
47
47
|
return 'Expected Date';
|
|
48
48
|
case ValueErrorType.Function:
|
|
49
49
|
return 'Expected function';
|
|
50
50
|
case ValueErrorType.IntegerExclusiveMaximum:
|
|
51
|
-
return `Expected integer to be less than ${schema.exclusiveMaximum}`;
|
|
51
|
+
return `Expected integer to be less than ${error.schema.exclusiveMaximum}`;
|
|
52
52
|
case ValueErrorType.IntegerExclusiveMinimum:
|
|
53
|
-
return `Expected integer to be greater than ${schema.exclusiveMinimum}`;
|
|
53
|
+
return `Expected integer to be greater than ${error.schema.exclusiveMinimum}`;
|
|
54
54
|
case ValueErrorType.IntegerMaximum:
|
|
55
|
-
return `Expected integer to be less or equal to ${schema.maximum}`;
|
|
55
|
+
return `Expected integer to be less or equal to ${error.schema.maximum}`;
|
|
56
56
|
case ValueErrorType.IntegerMinimum:
|
|
57
|
-
return `Expected integer to be greater or equal to ${schema.minimum}`;
|
|
57
|
+
return `Expected integer to be greater or equal to ${error.schema.minimum}`;
|
|
58
58
|
case ValueErrorType.IntegerMultipleOf:
|
|
59
|
-
return `Expected integer to be a multiple of ${schema.multipleOf}`;
|
|
59
|
+
return `Expected integer to be a multiple of ${error.schema.multipleOf}`;
|
|
60
60
|
case ValueErrorType.Integer:
|
|
61
61
|
return 'Expected integer';
|
|
62
62
|
case ValueErrorType.IntersectUnevaluatedProperties:
|
|
@@ -66,7 +66,7 @@ export function DefaultErrorFunction(schema, errorType) {
|
|
|
66
66
|
case ValueErrorType.Iterator:
|
|
67
67
|
return 'Expected Iterator';
|
|
68
68
|
case ValueErrorType.Literal:
|
|
69
|
-
return `Expected ${typeof schema.const === 'string' ? `'${schema.const}'` : schema.const}`;
|
|
69
|
+
return `Expected ${typeof error.schema.const === 'string' ? `'${error.schema.const}'` : error.schema.const}`;
|
|
70
70
|
case ValueErrorType.Never:
|
|
71
71
|
return 'Never';
|
|
72
72
|
case ValueErrorType.Not:
|
|
@@ -74,15 +74,15 @@ export function DefaultErrorFunction(schema, errorType) {
|
|
|
74
74
|
case ValueErrorType.Null:
|
|
75
75
|
return 'Expected null';
|
|
76
76
|
case ValueErrorType.NumberExclusiveMaximum:
|
|
77
|
-
return `Expected number to be less than ${schema.exclusiveMaximum}`;
|
|
77
|
+
return `Expected number to be less than ${error.schema.exclusiveMaximum}`;
|
|
78
78
|
case ValueErrorType.NumberExclusiveMinimum:
|
|
79
|
-
return `Expected number to be greater than ${schema.exclusiveMinimum}`;
|
|
79
|
+
return `Expected number to be greater than ${error.schema.exclusiveMinimum}`;
|
|
80
80
|
case ValueErrorType.NumberMaximum:
|
|
81
|
-
return `Expected number to be less or equal to ${schema.maximum}`;
|
|
81
|
+
return `Expected number to be less or equal to ${error.schema.maximum}`;
|
|
82
82
|
case ValueErrorType.NumberMinimum:
|
|
83
|
-
return `Expected number to be greater or equal to ${schema.minimum}`;
|
|
83
|
+
return `Expected number to be greater or equal to ${error.schema.minimum}`;
|
|
84
84
|
case ValueErrorType.NumberMultipleOf:
|
|
85
|
-
return `Expected number to be a multiple of ${schema.multipleOf}`;
|
|
85
|
+
return `Expected number to be a multiple of ${error.schema.multipleOf}`;
|
|
86
86
|
case ValueErrorType.Number:
|
|
87
87
|
return 'Expected number';
|
|
88
88
|
case ValueErrorType.Object:
|
|
@@ -90,35 +90,35 @@ export function DefaultErrorFunction(schema, errorType) {
|
|
|
90
90
|
case ValueErrorType.ObjectAdditionalProperties:
|
|
91
91
|
return 'Unexpected property';
|
|
92
92
|
case ValueErrorType.ObjectMaxProperties:
|
|
93
|
-
return `Expected object to have no more than ${schema.maxProperties} properties`;
|
|
93
|
+
return `Expected object to have no more than ${error.schema.maxProperties} properties`;
|
|
94
94
|
case ValueErrorType.ObjectMinProperties:
|
|
95
|
-
return `Expected object to have at least ${schema.minProperties} properties`;
|
|
95
|
+
return `Expected object to have at least ${error.schema.minProperties} properties`;
|
|
96
96
|
case ValueErrorType.ObjectRequiredProperty:
|
|
97
97
|
return 'Required property';
|
|
98
98
|
case ValueErrorType.Promise:
|
|
99
99
|
return 'Expected Promise';
|
|
100
100
|
case ValueErrorType.StringFormatUnknown:
|
|
101
|
-
return `Unknown format '${schema.format}'`;
|
|
101
|
+
return `Unknown format '${error.schema.format}'`;
|
|
102
102
|
case ValueErrorType.StringFormat:
|
|
103
|
-
return `Expected string to match '${schema.format}' format`;
|
|
103
|
+
return `Expected string to match '${error.schema.format}' format`;
|
|
104
104
|
case ValueErrorType.StringMaxLength:
|
|
105
|
-
return `Expected string length less or equal to ${schema.maxLength}`;
|
|
105
|
+
return `Expected string length less or equal to ${error.schema.maxLength}`;
|
|
106
106
|
case ValueErrorType.StringMinLength:
|
|
107
|
-
return `Expected string length greater or equal to ${schema.minLength}`;
|
|
107
|
+
return `Expected string length greater or equal to ${error.schema.minLength}`;
|
|
108
108
|
case ValueErrorType.StringPattern:
|
|
109
|
-
return `Expected string to match '${schema.pattern}'`;
|
|
109
|
+
return `Expected string to match '${error.schema.pattern}'`;
|
|
110
110
|
case ValueErrorType.String:
|
|
111
111
|
return 'Expected string';
|
|
112
112
|
case ValueErrorType.Symbol:
|
|
113
113
|
return 'Expected symbol';
|
|
114
114
|
case ValueErrorType.TupleLength:
|
|
115
|
-
return `Expected tuple to have ${schema.maxItems || 0} elements`;
|
|
115
|
+
return `Expected tuple to have ${error.schema.maxItems || 0} elements`;
|
|
116
116
|
case ValueErrorType.Tuple:
|
|
117
117
|
return 'Expected tuple';
|
|
118
118
|
case ValueErrorType.Uint8ArrayMaxByteLength:
|
|
119
|
-
return `Expected byte length less or equal to ${schema.maxByteLength}`;
|
|
119
|
+
return `Expected byte length less or equal to ${error.schema.maxByteLength}`;
|
|
120
120
|
case ValueErrorType.Uint8ArrayMinByteLength:
|
|
121
|
-
return `Expected byte length greater or equal to ${schema.minByteLength}`;
|
|
121
|
+
return `Expected byte length greater or equal to ${error.schema.minByteLength}`;
|
|
122
122
|
case ValueErrorType.Uint8Array:
|
|
123
123
|
return 'Expected Uint8Array';
|
|
124
124
|
case ValueErrorType.Undefined:
|
|
@@ -128,14 +128,14 @@ export function DefaultErrorFunction(schema, errorType) {
|
|
|
128
128
|
case ValueErrorType.Void:
|
|
129
129
|
return 'Expected void';
|
|
130
130
|
case ValueErrorType.Kind:
|
|
131
|
-
return `Expected kind '${schema[Kind]}'`;
|
|
131
|
+
return `Expected kind '${error.schema[Kind]}'`;
|
|
132
132
|
default:
|
|
133
133
|
return 'Unknown error type';
|
|
134
134
|
}
|
|
135
135
|
}
|
|
136
136
|
/** Manages error message providers */
|
|
137
137
|
let errorFunction = DefaultErrorFunction;
|
|
138
|
-
/** Sets the error function used to generate error messages */
|
|
138
|
+
/** Sets the error function used to generate error messages. */
|
|
139
139
|
export function SetErrorFunction(callback) {
|
|
140
140
|
errorFunction = callback;
|
|
141
141
|
}
|
package/build/import/index.d.mts
CHANGED
|
@@ -36,11 +36,11 @@ export { Not, type TNot } from './type/not/index.mjs';
|
|
|
36
36
|
export { Null, type TNull } from './type/null/index.mjs';
|
|
37
37
|
export { Number, type TNumber, type NumberOptions } from './type/number/index.mjs';
|
|
38
38
|
export { Object, type TObject, type TProperties, type ObjectOptions } from './type/object/index.mjs';
|
|
39
|
-
export { Omit, type TOmit, type TOmitFromMappedKey } from './type/omit/index.mjs';
|
|
39
|
+
export { Omit, type TOmit, type TOmitFromMappedKey, type TOmitFromMappedResult } from './type/omit/index.mjs';
|
|
40
40
|
export { Optional, OptionalFromMappedResult, type TOptional, type TOptionalWithFlag, type TOptionalFromMappedResult } from './type/optional/index.mjs';
|
|
41
41
|
export { Parameters, type TParameters } from './type/parameters/index.mjs';
|
|
42
42
|
export { Partial, PartialFromMappedResult, type TPartial, type TPartialFromMappedResult } from './type/partial/index.mjs';
|
|
43
|
-
export { Pick, type TPick, type TPickFromMappedKey } from './type/pick/index.mjs';
|
|
43
|
+
export { Pick, type TPick, type TPickFromMappedKey, type TPickFromMappedResult } from './type/pick/index.mjs';
|
|
44
44
|
export { Promise, type TPromise } from './type/promise/index.mjs';
|
|
45
45
|
export { Readonly, ReadonlyFromMappedResult, type TReadonly, type TReadonlyWithFlag, type TReadonlyFromMappedResult } from './type/readonly/index.mjs';
|
|
46
46
|
export { ReadonlyOptional, type TReadonlyOptional } from './type/readonly-optional/index.mjs';
|
|
@@ -4,14 +4,10 @@ import { CloneType } from '../clone/type.mjs';
|
|
|
4
4
|
// ------------------------------------------------------------------
|
|
5
5
|
// TypeGuard
|
|
6
6
|
// ------------------------------------------------------------------
|
|
7
|
-
// prettier-ignore
|
|
8
7
|
import { IsIntersect, IsUnion, IsPromise } from '../guard/type.mjs';
|
|
9
8
|
// prettier-ignore
|
|
10
|
-
function FromRest(T
|
|
11
|
-
|
|
12
|
-
return (T.length > 0
|
|
13
|
-
? FromRest(R, [...Acc, FromSchema(L)])
|
|
14
|
-
: Acc);
|
|
9
|
+
function FromRest(T) {
|
|
10
|
+
return T.map(L => FromSchema(L));
|
|
15
11
|
}
|
|
16
12
|
// prettier-ignore
|
|
17
13
|
function FromIntersect(T) {
|
|
@@ -7,8 +7,7 @@ type TCompositeIndex<T extends TIntersect<TObject[]>, K extends string[], Acc ex
|
|
|
7
7
|
[_ in L]: TIndex<T, [L]>;
|
|
8
8
|
}> : Acc;
|
|
9
9
|
type TCompositeReduce<T extends TObject[]> = UnionToTuple<TCompositeKeys<T>> extends infer K ? Evaluate<TCompositeIndex<TIntersect<T>, Assert<K, string[]>>> : {};
|
|
10
|
-
|
|
11
|
-
export declare function CompositeResolve<T extends TObject[]>(T: [...T]): TCompositeResolve<T>;
|
|
10
|
+
type TCompositeResolve<T extends TObject[]> = TIntersect<T> extends TIntersect ? TObject<TCompositeReduce<T>> : TObject<{}>;
|
|
12
11
|
export type TComposite<T extends TObject[]> = TCompositeResolve<T>;
|
|
13
12
|
/** `[Json]` Creates a Composite object type */
|
|
14
13
|
export declare function Composite<T extends TObject[]>(T: [...T], options?: ObjectOptions): TComposite<T>;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { Object } from '../object/index.mjs';
|
|
2
2
|
import { Intersect } from '../intersect/index.mjs';
|
|
3
|
-
import { KeyOfPropertyKeys } from '../keyof/index.mjs';
|
|
4
3
|
import { Index } from '../indexed/index.mjs';
|
|
4
|
+
import { KeyOfPropertyKeys } from '../keyof/index.mjs';
|
|
5
5
|
import { CloneType } from '../clone/type.mjs';
|
|
6
|
-
|
|
6
|
+
function CompositeResolve(T) {
|
|
7
7
|
const intersect = Intersect(T, {});
|
|
8
8
|
const keys = KeyOfPropertyKeys(intersect);
|
|
9
9
|
const properties = keys.reduce((acc, key) => ({ ...acc, [key]: Index(intersect, [key]) }), {});
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
import { IsArray, IsNumber, IsBigInt, IsUint8Array, IsDate, IsIterator, IsObject, IsAsyncIterator, IsFunction, IsUndefined, IsNull, IsSymbol, IsBoolean, IsString } from '../guard/value.mjs';
|
|
2
1
|
import { Any } from '../any/index.mjs';
|
|
3
2
|
import { BigInt } from '../bigint/index.mjs';
|
|
4
3
|
import { Date } from '../date/index.mjs';
|
|
@@ -13,12 +12,13 @@ import { Undefined } from '../undefined/index.mjs';
|
|
|
13
12
|
import { Uint8Array } from '../uint8array/index.mjs';
|
|
14
13
|
import { Unknown } from '../unknown/index.mjs';
|
|
15
14
|
import { TypeClone } from '../clone/index.mjs';
|
|
15
|
+
// ------------------------------------------------------------------
|
|
16
|
+
// ValueGuard
|
|
17
|
+
// ------------------------------------------------------------------
|
|
18
|
+
import { IsArray, IsNumber, IsBigInt, IsUint8Array, IsDate, IsIterator, IsObject, IsAsyncIterator, IsFunction, IsUndefined, IsNull, IsSymbol, IsBoolean, IsString } from '../guard/value.mjs';
|
|
16
19
|
// prettier-ignore
|
|
17
20
|
function FromArray(T) {
|
|
18
|
-
|
|
19
|
-
return (T.length > 0
|
|
20
|
-
? [FromValue(L, false), ...FromArray(R)]
|
|
21
|
-
: []);
|
|
21
|
+
return T.map(L => FromValue(L, false));
|
|
22
22
|
}
|
|
23
23
|
// prettier-ignore
|
|
24
24
|
function FromProperties(value) {
|
|
@@ -33,7 +33,7 @@ function ConditionalReadonly(T, root) {
|
|
|
33
33
|
function FromValue(value, root) {
|
|
34
34
|
return (IsAsyncIterator(value) ? ConditionalReadonly(Any(), root) :
|
|
35
35
|
IsIterator(value) ? ConditionalReadonly(Any(), root) :
|
|
36
|
-
IsArray(value) ? Readonly(Tuple(FromArray(value))) :
|
|
36
|
+
IsArray(value) ? Readonly(Tuple(FromArray(value))) :
|
|
37
37
|
IsUint8Array(value) ? Uint8Array() :
|
|
38
38
|
IsDate(value) ? Date() :
|
|
39
39
|
IsObject(value) ? ConditionalReadonly(Object(FromProperties(value)), root) :
|
|
@@ -4,7 +4,7 @@ import type { Ensure } from '../helpers/index.mjs';
|
|
|
4
4
|
import { Kind } from '../symbols/index.mjs';
|
|
5
5
|
type ConstructorStaticReturnType<T extends TSchema, P extends unknown[]> = Static<T, P>;
|
|
6
6
|
type ConstructorStaticParameters<T extends TSchema[], P extends unknown[], Acc extends unknown[] = []> = T extends [infer L extends TSchema, ...infer R extends TSchema[]] ? ConstructorStaticParameters<R, P, [...Acc, Static<L, P>]> : Acc;
|
|
7
|
-
|
|
7
|
+
type ConstructorStatic<T extends TSchema[], U extends TSchema, P extends unknown[]> = (Ensure<new (...param: ConstructorStaticParameters<T, P>) => ConstructorStaticReturnType<U, P>>);
|
|
8
8
|
export interface TConstructor<T extends TSchema[] = TSchema[], U extends TSchema = TSchema> extends TSchema {
|
|
9
9
|
[Kind]: 'Constructor';
|
|
10
10
|
static: ConstructorStatic<T, U, this['params']>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Kind } from '../symbols/index.mjs';
|
|
2
1
|
import { CloneType, CloneRest } from '../clone/type.mjs';
|
|
2
|
+
import { Kind } from '../symbols/index.mjs';
|
|
3
3
|
/** `[JavaScript]` Creates a Constructor type */
|
|
4
4
|
export function Constructor(parameters, returns, options) {
|
|
5
5
|
return {
|
|
@@ -4,8 +4,7 @@ import { IsUndefined } from '../guard/value.mjs';
|
|
|
4
4
|
// ------------------------------------------------------------------
|
|
5
5
|
// TypeGuard
|
|
6
6
|
// ------------------------------------------------------------------
|
|
7
|
-
|
|
8
|
-
import { IsConstructor, IsFunction, IsIntersect, IsUnion, IsTuple, IsArray, IsObject, IsPromise, IsAsyncIterator, IsIterator, IsRef, } from '../guard/type.mjs';
|
|
7
|
+
import { IsConstructor, IsFunction, IsIntersect, IsUnion, IsTuple, IsArray, IsObject, IsPromise, IsAsyncIterator, IsIterator, IsRef } from '../guard/type.mjs';
|
|
9
8
|
function FromRest(schema, references) {
|
|
10
9
|
return schema.map((schema) => Deref(schema, references));
|
|
11
10
|
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
function
|
|
1
|
+
function DiscardKey(value, key) {
|
|
2
2
|
const { [key]: _, ...rest } = value;
|
|
3
3
|
return rest;
|
|
4
4
|
}
|
|
5
5
|
export function Discard(value, keys) {
|
|
6
|
-
return keys.reduce((acc, key) =>
|
|
6
|
+
return keys.reduce((acc, key) => DiscardKey(acc, key), value);
|
|
7
7
|
}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { Literal } from '../literal/index.mjs';
|
|
2
2
|
import { Kind, Hint } from '../symbols/index.mjs';
|
|
3
3
|
import { Union } from '../union/index.mjs';
|
|
4
|
+
// ------------------------------------------------------------------
|
|
5
|
+
// ValueGuard
|
|
6
|
+
// ------------------------------------------------------------------
|
|
4
7
|
import { IsUndefined } from '../guard/value.mjs';
|
|
5
8
|
/** `[Json]` Creates a Enum type */
|
|
6
9
|
export function Enum(item, options = {}) {
|
|
@@ -2,10 +2,10 @@ import type { TSchema, SchemaOptions } from '../schema/index.mjs';
|
|
|
2
2
|
import type { TProperties } from '../object/index.mjs';
|
|
3
3
|
import { type TMappedResult } from '../mapped/index.mjs';
|
|
4
4
|
import { type TExclude } from './exclude.mjs';
|
|
5
|
-
type TFromProperties<K extends TProperties,
|
|
6
|
-
[K2 in keyof K]: TExclude<K[K2],
|
|
5
|
+
type TFromProperties<K extends TProperties, T extends TSchema> = ({
|
|
6
|
+
[K2 in keyof K]: TExclude<K[K2], T>;
|
|
7
7
|
});
|
|
8
|
-
type TFromMappedResult<
|
|
9
|
-
export type TExcludeFromMappedResult<
|
|
10
|
-
export declare function ExcludeFromMappedResult<
|
|
8
|
+
type TFromMappedResult<R extends TMappedResult, T extends TSchema> = (TFromProperties<R['properties'], T>);
|
|
9
|
+
export type TExcludeFromMappedResult<R extends TMappedResult, T extends TSchema, P extends TProperties = TFromMappedResult<R, T>> = (TMappedResult<P>);
|
|
10
|
+
export declare function ExcludeFromMappedResult<R extends TMappedResult, T extends TSchema, P extends TProperties = TFromMappedResult<R, T>>(R: R, T: T, options: SchemaOptions): TMappedResult<P>;
|
|
11
11
|
export {};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { MappedResult } from '../mapped/index.mjs';
|
|
2
2
|
import { Exclude } from './exclude.mjs';
|
|
3
3
|
// prettier-ignore
|
|
4
|
-
function FromProperties(
|
|
5
|
-
return globalThis.Object.getOwnPropertyNames(
|
|
6
|
-
return { ...Acc, [K2]: Exclude(
|
|
4
|
+
function FromProperties(P, U, options) {
|
|
5
|
+
return globalThis.Object.getOwnPropertyNames(P).reduce((Acc, K2) => {
|
|
6
|
+
return { ...Acc, [K2]: Exclude(P[K2], U, options) };
|
|
7
7
|
}, {});
|
|
8
8
|
}
|
|
9
9
|
// prettier-ignore
|
|
10
|
-
function FromMappedResult(
|
|
11
|
-
return FromProperties(
|
|
10
|
+
function FromMappedResult(R, T, options) {
|
|
11
|
+
return FromProperties(R.properties, T, options);
|
|
12
12
|
}
|
|
13
13
|
// prettier-ignore
|
|
14
|
-
export function ExcludeFromMappedResult(
|
|
15
|
-
const P = FromMappedResult(
|
|
14
|
+
export function ExcludeFromMappedResult(R, T, options) {
|
|
15
|
+
const P = FromMappedResult(R, T, options);
|
|
16
16
|
return MappedResult(P);
|
|
17
17
|
}
|
|
@@ -7,7 +7,6 @@ import { ExcludeFromMappedResult } from './exclude-from-mapped-result.mjs';
|
|
|
7
7
|
// ------------------------------------------------------------------
|
|
8
8
|
// TypeGuard
|
|
9
9
|
// ------------------------------------------------------------------
|
|
10
|
-
// prettier-ignore
|
|
11
10
|
import { IsMappedResult, IsTemplateLiteral, IsUnion } from '../guard/type.mjs';
|
|
12
11
|
// prettier-ignore
|
|
13
12
|
function ExcludeResolve(L, R) {
|
|
@@ -2,7 +2,7 @@ import type { TSchema, SchemaOptions } from '../schema/index.mjs';
|
|
|
2
2
|
import type { TProperties } from '../object/index.mjs';
|
|
3
3
|
import type { Assert } from '../helpers/index.mjs';
|
|
4
4
|
import { type TMappedResult, type TMappedKey } from '../mapped/index.mjs';
|
|
5
|
-
import { TLiteral, TLiteralValue } from '../literal/index.mjs';
|
|
5
|
+
import { type TLiteral, type TLiteralValue } from '../literal/index.mjs';
|
|
6
6
|
import { type TExtends } from './extends.mjs';
|
|
7
7
|
type TFromPropertyKey<K extends PropertyKey, U extends TSchema, L extends TSchema, R extends TSchema> = {
|
|
8
8
|
[_ in K]: TExtends<TLiteral<Assert<K, TLiteralValue>>, U, L, R>;
|
|
@@ -8,11 +8,10 @@ function FromPropertyKey(K, U, L, R, options) {
|
|
|
8
8
|
};
|
|
9
9
|
}
|
|
10
10
|
// prettier-ignore
|
|
11
|
-
function FromPropertyKeys(K, U, L, R, options
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
: Acc);
|
|
11
|
+
function FromPropertyKeys(K, U, L, R, options) {
|
|
12
|
+
return K.reduce((Acc, LK) => {
|
|
13
|
+
return { ...Acc, ...FromPropertyKey(LK, U, L, R, options) };
|
|
14
|
+
}, {});
|
|
16
15
|
}
|
|
17
16
|
// prettier-ignore
|
|
18
17
|
function FromMappedKey(K, U, L, R, options) {
|
|
@@ -2,10 +2,10 @@ import type { TSchema, SchemaOptions } from '../schema/index.mjs';
|
|
|
2
2
|
import type { TProperties } from '../object/index.mjs';
|
|
3
3
|
import { type TMappedResult } from '../mapped/index.mjs';
|
|
4
4
|
import { type TExtends } from './extends.mjs';
|
|
5
|
-
type TFromProperties<
|
|
6
|
-
[K2 in keyof
|
|
5
|
+
type TFromProperties<P extends TProperties, Right extends TSchema, False extends TSchema, True extends TSchema> = ({
|
|
6
|
+
[K2 in keyof P]: TExtends<P[K2], Right, False, True>;
|
|
7
7
|
});
|
|
8
|
-
type TFromMappedResult<
|
|
9
|
-
export type TExtendsFromMappedResult<
|
|
10
|
-
export declare function ExtendsFromMappedResult<
|
|
8
|
+
type TFromMappedResult<Left extends TMappedResult, Right extends TSchema, True extends TSchema, False extends TSchema> = (TFromProperties<Left['properties'], Right, True, False>);
|
|
9
|
+
export type TExtendsFromMappedResult<Left extends TMappedResult, Right extends TSchema, True extends TSchema, False extends TSchema, P extends TProperties = TFromMappedResult<Left, Right, True, False>> = (TMappedResult<P>);
|
|
10
|
+
export declare function ExtendsFromMappedResult<Left extends TMappedResult, Right extends TSchema, True extends TSchema, False extends TSchema, P extends TProperties = TFromMappedResult<Left, Right, True, False>>(Left: Left, Right: Right, True: True, False: False, options: SchemaOptions): TMappedResult<P>;
|
|
11
11
|
export {};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { MappedResult } from '../mapped/index.mjs';
|
|
2
2
|
import { Extends } from './extends.mjs';
|
|
3
3
|
// prettier-ignore
|
|
4
|
-
function FromProperties(
|
|
5
|
-
return globalThis.Object.getOwnPropertyNames(
|
|
6
|
-
return { ...Acc, [K2]: Extends(
|
|
4
|
+
function FromProperties(P, Right, True, False, options) {
|
|
5
|
+
return globalThis.Object.getOwnPropertyNames(P).reduce((Acc, K2) => {
|
|
6
|
+
return { ...Acc, [K2]: Extends(P[K2], Right, True, False, options) };
|
|
7
7
|
}, {});
|
|
8
8
|
}
|
|
9
9
|
// prettier-ignore
|
|
10
|
-
function FromMappedResult(
|
|
11
|
-
return FromProperties(
|
|
10
|
+
function FromMappedResult(Left, Right, True, False, options) {
|
|
11
|
+
return FromProperties(Left.properties, Right, True, False, options);
|
|
12
12
|
}
|
|
13
13
|
// prettier-ignore
|
|
14
|
-
export function ExtendsFromMappedResult(
|
|
15
|
-
const P = FromMappedResult(
|
|
14
|
+
export function ExtendsFromMappedResult(Left, Right, True, False, options) {
|
|
15
|
+
const P = FromMappedResult(Left, Right, True, False, options);
|
|
16
16
|
return MappedResult(P);
|
|
17
17
|
}
|
|
@@ -6,7 +6,6 @@ import { ExtendsFromMappedResult } from './extends-from-mapped-result.mjs';
|
|
|
6
6
|
// ------------------------------------------------------------------
|
|
7
7
|
// TypeGuard
|
|
8
8
|
// ------------------------------------------------------------------
|
|
9
|
-
// prettier-ignore
|
|
10
9
|
import { IsMappedKey, IsMappedResult } from '../guard/type.mjs';
|
|
11
10
|
// prettier-ignore
|
|
12
11
|
function ExtendsResolve(left, right, trueType, falseType) {
|
|
@@ -2,10 +2,10 @@ import type { TSchema, SchemaOptions } from '../schema/index.mjs';
|
|
|
2
2
|
import type { TProperties } from '../object/index.mjs';
|
|
3
3
|
import { type TMappedResult } from '../mapped/index.mjs';
|
|
4
4
|
import { type TExtract } from './extract.mjs';
|
|
5
|
-
type TFromProperties<
|
|
6
|
-
[K2 in keyof
|
|
5
|
+
type TFromProperties<P extends TProperties, T extends TSchema> = ({
|
|
6
|
+
[K2 in keyof P]: TExtract<P[K2], T>;
|
|
7
7
|
});
|
|
8
|
-
type TFromMappedResult<
|
|
9
|
-
export type TExtractFromMappedResult<
|
|
10
|
-
export declare function ExtractFromMappedResult<
|
|
8
|
+
type TFromMappedResult<R extends TMappedResult, T extends TSchema> = (TFromProperties<R['properties'], T>);
|
|
9
|
+
export type TExtractFromMappedResult<R extends TMappedResult, T extends TSchema, P extends TProperties = TFromMappedResult<R, T>> = (TMappedResult<P>);
|
|
10
|
+
export declare function ExtractFromMappedResult<R extends TMappedResult, T extends TSchema, P extends TProperties = TFromMappedResult<R, T>>(R: R, T: T, options: SchemaOptions): TMappedResult<P>;
|
|
11
11
|
export {};
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import { MappedResult } from '../mapped/index.mjs';
|
|
2
2
|
import { Extract } from './extract.mjs';
|
|
3
3
|
// prettier-ignore
|
|
4
|
-
function FromProperties(
|
|
5
|
-
return globalThis.Object.getOwnPropertyNames(
|
|
6
|
-
return { ...Acc, [K2]: Extract(
|
|
4
|
+
function FromProperties(P, T, options) {
|
|
5
|
+
return globalThis.Object.getOwnPropertyNames(P).reduce((Acc, K2) => {
|
|
6
|
+
return { ...Acc, [K2]: Extract(P[K2], T, options) };
|
|
7
7
|
}, {});
|
|
8
8
|
}
|
|
9
9
|
// prettier-ignore
|
|
10
|
-
function FromMappedResult(
|
|
11
|
-
return FromProperties(
|
|
10
|
+
function FromMappedResult(R, T, options) {
|
|
11
|
+
return FromProperties(R.properties, T, options);
|
|
12
12
|
}
|
|
13
13
|
// prettier-ignore
|
|
14
|
-
export function ExtractFromMappedResult(
|
|
15
|
-
const P = FromMappedResult(
|
|
14
|
+
export function ExtractFromMappedResult(R, T, options) {
|
|
15
|
+
const P = FromMappedResult(R, T, options);
|
|
16
16
|
return MappedResult(P);
|
|
17
17
|
}
|
|
@@ -14,8 +14,7 @@ type TFromTemplateLiteral<T extends TTemplateLiteral, U extends TSchema> = Extra
|
|
|
14
14
|
type TFromArray<T extends TSchema[], U extends TSchema> = AssertRest<UnionToTuple<{
|
|
15
15
|
[K in keyof T]: Static<AssertType<T[K]>> extends Static<U> ? T[K] : never;
|
|
16
16
|
}[number]>> extends infer R extends TSchema[] ? TUnionEvaluated<R> : never;
|
|
17
|
-
|
|
18
|
-
export declare function ExtractResolve<L extends TSchema, R extends TSchema>(L: L, R: R): TExtractResolve<L, R>;
|
|
17
|
+
type TExtractResolve<T extends TSchema, U extends TSchema> = (T extends TTemplateLiteral ? TFromTemplateLiteral<T, U> : T extends TUnion<infer S> ? TFromArray<S, U> : T);
|
|
19
18
|
export type TExtract<T extends TSchema, U extends TSchema> = TExtractResolve<T, U>;
|
|
20
19
|
/** `[Json]` Constructs a type by extracting from type all union members that are assignable to union */
|
|
21
20
|
export declare function Extract<L extends TMappedResult, R extends TSchema>(type: L, union: R, options?: SchemaOptions): TExtractFromMappedResult<L, R>;
|
|
@@ -4,10 +4,12 @@ import { Never } from '../never/index.mjs';
|
|
|
4
4
|
import { ExtendsCheck, ExtendsResult } from '../extends/index.mjs';
|
|
5
5
|
import { CloneType } from '../clone/type.mjs';
|
|
6
6
|
import { ExtractFromMappedResult } from './extract-from-mapped-result.mjs';
|
|
7
|
-
//
|
|
7
|
+
// ------------------------------------------------------------------
|
|
8
|
+
// TypeGuard
|
|
9
|
+
// ------------------------------------------------------------------
|
|
8
10
|
import { IsMappedResult, IsTemplateLiteral, IsUnion } from '../guard/type.mjs';
|
|
9
11
|
// prettier-ignore
|
|
10
|
-
|
|
12
|
+
function ExtractResolve(L, R) {
|
|
11
13
|
return (IsTemplateLiteral(L) ? ExtractResolve(TemplateLiteralToUnion(L), R) :
|
|
12
14
|
IsTemplateLiteral(R) ? ExtractResolve(L, TemplateLiteralToUnion(R)) :
|
|
13
15
|
IsUnion(L) ? (() => {
|
|
@@ -35,7 +35,6 @@ export * from './null/index.mjs';
|
|
|
35
35
|
export * from './number/index.mjs';
|
|
36
36
|
export * from './object/index.mjs';
|
|
37
37
|
export * from './omit/index.mjs';
|
|
38
|
-
export * from './operators/index.mjs';
|
|
39
38
|
export * from './optional/index.mjs';
|
|
40
39
|
export * from './parameters/index.mjs';
|
|
41
40
|
export * from './partial/index.mjs';
|
|
@@ -53,6 +52,7 @@ export * from './required/index.mjs';
|
|
|
53
52
|
export * from './rest/index.mjs';
|
|
54
53
|
export * from './return-type/index.mjs';
|
|
55
54
|
export * from './schema/index.mjs';
|
|
55
|
+
export * from './sets/index.mjs';
|
|
56
56
|
export * from './static/index.mjs';
|
|
57
57
|
export * from './strict/index.mjs';
|
|
58
58
|
export * from './string/index.mjs';
|
|
@@ -35,7 +35,6 @@ export * from './null/index.mjs';
|
|
|
35
35
|
export * from './number/index.mjs';
|
|
36
36
|
export * from './object/index.mjs';
|
|
37
37
|
export * from './omit/index.mjs';
|
|
38
|
-
export * from './operators/index.mjs';
|
|
39
38
|
export * from './optional/index.mjs';
|
|
40
39
|
export * from './parameters/index.mjs';
|
|
41
40
|
export * from './partial/index.mjs';
|
|
@@ -53,6 +52,7 @@ export * from './required/index.mjs';
|
|
|
53
52
|
export * from './rest/index.mjs';
|
|
54
53
|
export * from './return-type/index.mjs';
|
|
55
54
|
export * from './schema/index.mjs';
|
|
55
|
+
export * from './sets/index.mjs';
|
|
56
56
|
export * from './static/index.mjs';
|
|
57
57
|
export * from './strict/index.mjs';
|
|
58
58
|
export * from './string/index.mjs';
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { TSchema, SchemaOptions } from '../schema/index.mjs';
|
|
2
|
-
import {
|
|
2
|
+
import type { Evaluate } from '../helpers/index.mjs';
|
|
3
|
+
import type { TProperties } from '../object/index.mjs';
|
|
3
4
|
import { type TIndex } from './indexed.mjs';
|
|
4
5
|
import { type TMappedResult, type TMappedKey } from '../mapped/index.mjs';
|
|
5
|
-
import { Evaluate } from '../helpers/index.mjs';
|
|
6
6
|
type TMappedIndexPropertyKey<T extends TSchema, K extends PropertyKey> = {
|
|
7
7
|
[_ in K]: TIndex<T, [K]>;
|
|
8
8
|
};
|