@duplojs/utils 1.6.1 → 1.6.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/array/types/createTuple.d.ts +1 -1
- package/dist/clean/constraint/base.cjs +7 -0
- package/dist/clean/constraint/base.d.ts +26 -6
- package/dist/clean/constraint/base.mjs +7 -0
- package/dist/clean/constraint/cast.cjs +18 -0
- package/dist/clean/constraint/cast.d.ts +29 -0
- package/dist/clean/constraint/cast.mjs +16 -0
- package/dist/clean/constraint/defaultConstraint/number.cjs +2 -10
- package/dist/clean/constraint/defaultConstraint/number.d.ts +12 -37
- package/dist/clean/constraint/defaultConstraint/number.mjs +3 -10
- package/dist/clean/constraint/defaultConstraint/string.d.ts +9 -5
- package/dist/clean/constraint/index.d.ts +1 -0
- package/dist/clean/constraint/set.cjs +7 -1
- package/dist/clean/constraint/set.d.ts +25 -5
- package/dist/clean/constraint/set.mjs +7 -1
- package/dist/clean/entity/index.cjs +14 -4
- package/dist/clean/entity/index.d.ts +11 -1
- package/dist/clean/entity/index.mjs +15 -6
- package/dist/clean/index.cjs +5 -1
- package/dist/clean/index.d.ts +1 -0
- package/dist/clean/index.mjs +4 -2
- package/dist/clean/newType.cjs +6 -1
- package/dist/clean/newType.d.ts +20 -5
- package/dist/clean/newType.mjs +6 -1
- package/dist/clean/primitive/operations/equal.cjs +3 -0
- package/dist/clean/primitive/operations/equal.d.ts +2 -2
- package/dist/clean/primitive/operations/equal.mjs +3 -0
- package/dist/clean/toMapDataParser.cjs +52 -0
- package/dist/clean/toMapDataParser.d.ts +53 -0
- package/dist/clean/toMapDataParser.mjs +50 -0
- package/dist/common/asserts.cjs +12 -0
- package/dist/common/asserts.d.ts +26 -0
- package/dist/common/asserts.mjs +12 -1
- package/dist/common/callThen.cjs +14 -0
- package/dist/common/callThen.d.ts +35 -0
- package/dist/common/callThen.mjs +12 -0
- package/dist/common/index.d.ts +3 -0
- package/dist/common/printer.cjs +73 -0
- package/dist/common/printer.d.ts +139 -0
- package/dist/common/printer.mjs +73 -0
- package/dist/common/queue.cjs +90 -0
- package/dist/common/queue.d.ts +46 -0
- package/dist/common/queue.mjs +87 -0
- package/dist/common/types/and.d.ts +1 -2
- package/dist/common/types/or.d.ts +1 -2
- package/dist/dataParser/base.cjs +12 -35
- package/dist/dataParser/base.d.ts +6 -9
- package/dist/dataParser/base.mjs +8 -30
- package/dist/dataParser/error.cjs +39 -21
- package/dist/dataParser/error.d.ts +19 -19
- package/dist/dataParser/error.mjs +37 -18
- package/dist/dataParser/extended/index.cjs +3 -4
- package/dist/dataParser/extended/index.mjs +1 -1
- package/dist/dataParser/identifier.d.ts +6 -6
- package/dist/dataParser/index.cjs +3 -6
- package/dist/dataParser/index.mjs +2 -2
- package/dist/dataParser/parsers/array/checkers/max.cjs +3 -6
- package/dist/dataParser/parsers/array/checkers/max.mjs +4 -7
- package/dist/dataParser/parsers/array/checkers/min.cjs +3 -6
- package/dist/dataParser/parsers/array/checkers/min.mjs +4 -7
- package/dist/dataParser/parsers/array/index.cjs +8 -8
- package/dist/dataParser/parsers/array/index.mjs +4 -4
- package/dist/dataParser/parsers/bigint/checkers/max.cjs +2 -2
- package/dist/dataParser/parsers/bigint/checkers/max.mjs +3 -3
- package/dist/dataParser/parsers/bigint/checkers/min.cjs +2 -2
- package/dist/dataParser/parsers/bigint/checkers/min.mjs +3 -3
- package/dist/dataParser/parsers/bigint/index.cjs +2 -2
- package/dist/dataParser/parsers/bigint/index.mjs +3 -3
- package/dist/dataParser/parsers/boolean.cjs +3 -3
- package/dist/dataParser/parsers/boolean.mjs +4 -4
- package/dist/dataParser/parsers/date.cjs +4 -4
- package/dist/dataParser/parsers/date.mjs +5 -5
- package/dist/dataParser/parsers/empty.cjs +2 -2
- package/dist/dataParser/parsers/empty.mjs +3 -3
- package/dist/dataParser/parsers/literal.cjs +2 -2
- package/dist/dataParser/parsers/literal.mjs +3 -3
- package/dist/dataParser/parsers/nil.cjs +2 -2
- package/dist/dataParser/parsers/nil.mjs +3 -3
- package/dist/dataParser/parsers/number/checkers/int.cjs +2 -2
- package/dist/dataParser/parsers/number/checkers/int.mjs +3 -3
- package/dist/dataParser/parsers/number/checkers/max.cjs +3 -1
- package/dist/dataParser/parsers/number/checkers/max.mjs +4 -2
- package/dist/dataParser/parsers/number/checkers/min.cjs +3 -1
- package/dist/dataParser/parsers/number/checkers/min.mjs +4 -2
- package/dist/dataParser/parsers/number/index.cjs +2 -2
- package/dist/dataParser/parsers/number/index.mjs +3 -3
- package/dist/dataParser/parsers/object/index.cjs +8 -8
- package/dist/dataParser/parsers/object/index.mjs +4 -4
- package/dist/dataParser/parsers/pipe.cjs +25 -10
- package/dist/dataParser/parsers/pipe.mjs +22 -7
- package/dist/dataParser/parsers/record/index.cjs +18 -16
- package/dist/dataParser/parsers/record/index.mjs +8 -6
- package/dist/dataParser/parsers/recover.cjs +7 -6
- package/dist/dataParser/parsers/recover.mjs +2 -1
- package/dist/dataParser/parsers/refine.cjs +3 -1
- package/dist/dataParser/parsers/refine.mjs +4 -2
- package/dist/dataParser/parsers/string/checkers/email.cjs +2 -2
- package/dist/dataParser/parsers/string/checkers/email.mjs +3 -3
- package/dist/dataParser/parsers/string/checkers/max.cjs +3 -1
- package/dist/dataParser/parsers/string/checkers/max.mjs +4 -2
- package/dist/dataParser/parsers/string/checkers/min.cjs +3 -1
- package/dist/dataParser/parsers/string/checkers/min.mjs +4 -2
- package/dist/dataParser/parsers/string/checkers/regex.cjs +2 -2
- package/dist/dataParser/parsers/string/checkers/regex.mjs +3 -3
- package/dist/dataParser/parsers/string/checkers/url.cjs +4 -4
- package/dist/dataParser/parsers/string/checkers/url.mjs +5 -5
- package/dist/dataParser/parsers/string/index.cjs +2 -2
- package/dist/dataParser/parsers/string/index.mjs +3 -3
- package/dist/dataParser/parsers/templateLiteral/index.cjs +2 -2
- package/dist/dataParser/parsers/templateLiteral/index.mjs +3 -3
- package/dist/dataParser/parsers/time/checkers/max.cjs +3 -1
- package/dist/dataParser/parsers/time/checkers/max.mjs +4 -2
- package/dist/dataParser/parsers/time/checkers/min.cjs +3 -1
- package/dist/dataParser/parsers/time/checkers/min.mjs +4 -2
- package/dist/dataParser/parsers/time/index.cjs +4 -4
- package/dist/dataParser/parsers/time/index.mjs +5 -5
- package/dist/dataParser/parsers/transform.cjs +6 -6
- package/dist/dataParser/parsers/transform.d.ts +2 -2
- package/dist/dataParser/parsers/transform.mjs +4 -4
- package/dist/dataParser/parsers/tuple.cjs +14 -14
- package/dist/dataParser/parsers/tuple.mjs +4 -4
- package/dist/dataParser/parsers/union.cjs +26 -8
- package/dist/dataParser/parsers/union.mjs +26 -8
- package/dist/flow/calledByNext.cjs +13 -0
- package/dist/flow/calledByNext.d.ts +47 -0
- package/dist/flow/calledByNext.mjs +11 -0
- package/dist/flow/debounce.cjs +16 -0
- package/dist/flow/debounce.d.ts +63 -0
- package/dist/flow/debounce.mjs +14 -0
- package/dist/flow/exec.cjs +101 -0
- package/dist/flow/exec.d.ts +4 -3
- package/dist/flow/exec.mjs +101 -0
- package/dist/flow/index.cjs +28 -0
- package/dist/flow/index.d.ts +5 -0
- package/dist/flow/index.mjs +10 -1
- package/dist/flow/queue.cjs +19 -0
- package/dist/flow/queue.d.ts +47 -0
- package/dist/flow/queue.mjs +17 -0
- package/dist/flow/run.cjs +118 -0
- package/dist/flow/run.d.ts +6 -4
- package/dist/flow/run.mjs +113 -1
- package/dist/flow/theFlow/calledByNext.cjs +11 -0
- package/dist/flow/theFlow/calledByNext.d.ts +5 -0
- package/dist/flow/theFlow/calledByNext.mjs +8 -0
- package/dist/flow/theFlow/debounce.cjs +11 -0
- package/dist/flow/theFlow/debounce.d.ts +9 -0
- package/dist/flow/theFlow/debounce.mjs +8 -0
- package/dist/flow/theFlow/index.d.ts +11 -3
- package/dist/flow/theFlow/queue.cjs +11 -0
- package/dist/flow/theFlow/queue.d.ts +9 -0
- package/dist/flow/theFlow/queue.mjs +8 -0
- package/dist/flow/theFlow/throttling.cjs +11 -0
- package/dist/flow/theFlow/throttling.d.ts +10 -0
- package/dist/flow/theFlow/throttling.mjs +8 -0
- package/dist/flow/throttling.cjs +27 -0
- package/dist/flow/throttling.d.ts +60 -0
- package/dist/flow/throttling.mjs +25 -0
- package/dist/flow/toFunction.cjs +15 -0
- package/dist/flow/toFunction.d.ts +56 -0
- package/dist/flow/toFunction.mjs +13 -0
- package/dist/index.cjs +11 -0
- package/dist/index.mjs +4 -1
- package/dist/metadata.json +126 -0
- package/dist/number/types/isGreater.d.ts +26 -3
- package/dist/object/types/getPropsWithValue.d.ts +1 -1
- package/dist/object/types/getPropsWithValueExtends.d.ts +1 -1
- package/dist/string/length.d.ts +2 -2
- package/dist/string/types/split.d.ts +6 -5
- package/package.json +1 -1
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import { type IsEqual } from "../../common/types/isEqual";
|
|
2
|
-
export type CreateTuple<GenericValue extends unknown, GenericLength extends number, GenericLastTuple extends unknown[] = []> = IsEqual<GenericLength, number> extends true ? GenericValue[] : IsEqual<GenericLength, 0> extends true ? [] : [...GenericLastTuple, GenericValue] extends infer InferredResult extends any[] ? IsEqual<InferredResult["length"], GenericLength> extends true ? InferredResult : IsEqual<InferredResult["length"], 1000> extends true ? [...InferredResult, ...GenericValue[]] : CreateTuple<GenericValue, GenericLength, InferredResult> : never;
|
|
2
|
+
export type CreateTuple<GenericValue extends unknown, GenericLength extends number, GenericLastTuple extends readonly unknown[] = []> = IsEqual<GenericLength, number> extends true ? GenericValue[] : IsEqual<GenericLength, 0> extends true ? [] : [...GenericLastTuple, GenericValue] extends infer InferredResult extends any[] ? IsEqual<InferredResult["length"], GenericLength> extends true ? InferredResult : IsEqual<InferredResult["length"], 1000> extends true ? [...InferredResult, ...GenericValue[]] : CreateTuple<GenericValue, GenericLength, InferredResult> : never;
|
|
@@ -33,6 +33,7 @@ function createConstraint(name, primitiveHandler, checker) {
|
|
|
33
33
|
const dataParserWithCheckers = primitiveHandler
|
|
34
34
|
.dataParser
|
|
35
35
|
.addChecker(...checkers);
|
|
36
|
+
const constraintKindValue = { [name]: null };
|
|
36
37
|
function create$2(data) {
|
|
37
38
|
const result = dataParserWithCheckers.parse(unwrap.unwrap(data));
|
|
38
39
|
if (is.isLeft(result)) {
|
|
@@ -68,6 +69,12 @@ function createConstraint(name, primitiveHandler, checker) {
|
|
|
68
69
|
name,
|
|
69
70
|
primitiveHandler,
|
|
70
71
|
checkers,
|
|
72
|
+
internal: {
|
|
73
|
+
primitiveHandler,
|
|
74
|
+
dataParser: dataParserWithCheckers,
|
|
75
|
+
checkers,
|
|
76
|
+
constraintKindValue,
|
|
77
|
+
},
|
|
71
78
|
create: create$2,
|
|
72
79
|
createOrThrow,
|
|
73
80
|
createWithUnknown: create$2,
|
|
@@ -4,7 +4,7 @@ import * as DArray from "../../array";
|
|
|
4
4
|
import * as DEither from "../../either";
|
|
5
5
|
import type * as DDataParser from "../../dataParser";
|
|
6
6
|
export declare const constrainedTypeKind: import("../..").KindHandler<import("../..").KindDefinition<"@DuplojsUtilsClean/constrained-type", Record<string, unknown>>>;
|
|
7
|
-
export interface ConstrainedType<GenericName extends string, GenericValue extends unknown> extends Kind<typeof constrainedTypeKind.definition, Record<GenericName, unknown>>, WrappedValue<GenericValue> {
|
|
7
|
+
export interface ConstrainedType<GenericName extends string = string, GenericValue extends unknown = unknown> extends Kind<typeof constrainedTypeKind.definition, Record<GenericName, unknown>>, WrappedValue<GenericValue> {
|
|
8
8
|
}
|
|
9
9
|
export declare const constraintHandlerKind: import("../..").KindHandler<import("../..").KindDefinition<"@DuplojsUtilsClean/constraint-handler", unknown>>;
|
|
10
10
|
export interface ConstraintHandler<GenericName extends string = string, GenericPrimitiveValue extends EligiblePrimitive = EligiblePrimitive, GenericCheckers extends readonly DDataParser.DataParserChecker[] = readonly DDataParser.DataParserChecker[], GenericPrimitiveInput extends unknown = unknown> extends Kind<typeof constraintHandlerKind.definition> {
|
|
@@ -14,15 +14,35 @@ export interface ConstraintHandler<GenericName extends string = string, GenericP
|
|
|
14
14
|
*/
|
|
15
15
|
readonly name: GenericName;
|
|
16
16
|
/**
|
|
17
|
-
*
|
|
18
|
-
*
|
|
17
|
+
* @deprecated
|
|
19
18
|
*/
|
|
20
19
|
readonly checkers: GenericCheckers;
|
|
21
20
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
21
|
+
* @deprecated
|
|
24
22
|
*/
|
|
25
23
|
readonly primitiveHandler: PrimitiveHandler<GenericPrimitiveValue>;
|
|
24
|
+
readonly internal: {
|
|
25
|
+
/**
|
|
26
|
+
* The DataParser with the constraint checkers applied.
|
|
27
|
+
*
|
|
28
|
+
*/
|
|
29
|
+
readonly dataParser: DDataParser.Contract<GenericPrimitiveValue, unknown>;
|
|
30
|
+
/**
|
|
31
|
+
* The primitive handler on which the constraint applies (String, Number, etc.).
|
|
32
|
+
*
|
|
33
|
+
*/
|
|
34
|
+
readonly primitiveHandler: PrimitiveHandler<GenericPrimitiveValue>;
|
|
35
|
+
/**
|
|
36
|
+
* The list of DataParser checkers used to validate the primitive.
|
|
37
|
+
*
|
|
38
|
+
*/
|
|
39
|
+
readonly checkers: GenericCheckers;
|
|
40
|
+
/**
|
|
41
|
+
* The constraint kind metadata used to tag constrained values.
|
|
42
|
+
*
|
|
43
|
+
*/
|
|
44
|
+
readonly constraintKindValue: Record<string, null>;
|
|
45
|
+
};
|
|
26
46
|
/**
|
|
27
47
|
* Creates a constrained value and returns an Either.
|
|
28
48
|
*
|
|
@@ -143,5 +163,5 @@ export declare function createConstraint<GenericName extends string, GenericPrim
|
|
|
143
163
|
export declare namespace createConstraint {
|
|
144
164
|
var overrideHandler: import("../..").OverrideHandler<ConstraintHandler<string, EligiblePrimitive, readonly DDataParser.DataParserChecker<DDataParser.DataParserCheckerDefinition, unknown>[], unknown>>;
|
|
145
165
|
}
|
|
146
|
-
export type GetConstraint<GenericConstrainHandler extends ConstraintHandler, GenericValue extends DDataParser.InputChecker<GenericConstrainHandler["checkers"][number]> = DDataParser.InputChecker<GenericConstrainHandler["checkers"][number]>> = Extract<ConstrainedType<GenericConstrainHandler["name"], GenericValue>, any>;
|
|
166
|
+
export type GetConstraint<GenericConstrainHandler extends ConstraintHandler, GenericValue extends DDataParser.InputChecker<GenericConstrainHandler["internal"]["checkers"][number]> = DDataParser.InputChecker<GenericConstrainHandler["internal"]["checkers"][number]>> = Extract<ConstrainedType<GenericConstrainHandler["name"], GenericValue>, any>;
|
|
147
167
|
export {};
|
|
@@ -31,6 +31,7 @@ function createConstraint(name, primitiveHandler, checker) {
|
|
|
31
31
|
const dataParserWithCheckers = primitiveHandler
|
|
32
32
|
.dataParser
|
|
33
33
|
.addChecker(...checkers);
|
|
34
|
+
const constraintKindValue = { [name]: null };
|
|
34
35
|
function create(data) {
|
|
35
36
|
const result = dataParserWithCheckers.parse(unwrap(data));
|
|
36
37
|
if (isLeft(result)) {
|
|
@@ -66,6 +67,12 @@ function createConstraint(name, primitiveHandler, checker) {
|
|
|
66
67
|
name,
|
|
67
68
|
primitiveHandler,
|
|
68
69
|
checkers,
|
|
70
|
+
internal: {
|
|
71
|
+
primitiveHandler,
|
|
72
|
+
dataParser: dataParserWithCheckers,
|
|
73
|
+
checkers,
|
|
74
|
+
constraintKindValue,
|
|
75
|
+
},
|
|
69
76
|
create,
|
|
70
77
|
createOrThrow,
|
|
71
78
|
createWithUnknown: create,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var base = require('./base.cjs');
|
|
4
|
+
var coalescing = require('../../array/coalescing.cjs');
|
|
5
|
+
|
|
6
|
+
function castConstraint(constrainedType, constraintHandler) {
|
|
7
|
+
const preparedConstraintHandler = coalescing.coalescing(constraintHandler);
|
|
8
|
+
const newConstraints = {
|
|
9
|
+
...base.constrainedTypeKind.getValue(constrainedType),
|
|
10
|
+
};
|
|
11
|
+
for (let index = 0; index < preparedConstraintHandler.length; index++) {
|
|
12
|
+
const constraintHandler = preparedConstraintHandler[index];
|
|
13
|
+
newConstraints[constraintHandler.name] = null;
|
|
14
|
+
}
|
|
15
|
+
return base.constrainedTypeKind.addTo(constrainedType, newConstraints);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
exports.castConstraint = castConstraint;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { type UnionToIntersection, type SimplifyTopLevel, type NeverCoalescing, type And, type Not, type IsEqual } from "../../common";
|
|
2
|
+
import { type ConstraintHandler, type ConstrainedType, type GetConstraint } from "./base";
|
|
3
|
+
import { type Negative, type NumberMaxHandlerInternal, type NumberMaxInternal, type NumberMinHandlerInternal, type NumberMinInternal, type Positive, type StringMaxHandlerInternal, type StringMaxInternal, type StringMinHandlerInternal, type StringMinInternal } from "./defaultConstraint";
|
|
4
|
+
import { type IsLess, type IsGreater } from "../../number";
|
|
5
|
+
declare const SymbolCastErrorMessage: unique symbol;
|
|
6
|
+
type CastConstraintError<GenericConstrainHandler extends ConstraintHandler, GenericReason extends string> = SimplifyTopLevel<{
|
|
7
|
+
[SymbolCastErrorMessage]: `The constraint "${GenericConstrainHandler["name"]}" is not applicable: ${GenericReason}.`;
|
|
8
|
+
}>;
|
|
9
|
+
type ForbiddenBadCast<GenericConstrainedType extends ConstrainedType, GenericConstrainHandler extends ConstraintHandler> = ((GenericConstrainHandler extends NumberMinHandlerInternal<infer InferredConstraintValue extends number> ? GenericConstrainedType extends Positive ? IsLess<InferredConstraintValue, 0> extends true ? never : CastConstraintError<GenericConstrainHandler, `constraint ${InferredConstraintValue} is greater than zero`> : GenericConstrainedType extends NumberMinInternal<infer InferredReferenceValue extends number> ? And<[
|
|
10
|
+
IsLess<InferredConstraintValue, InferredReferenceValue>,
|
|
11
|
+
Not<IsEqual<InferredReferenceValue, number>>
|
|
12
|
+
]> extends true ? never : CastConstraintError<GenericConstrainHandler, `constraint ${InferredConstraintValue} is greater than ${InferredReferenceValue}`> : CastConstraintError<GenericConstrainHandler, "no casting possible with number-min"> : never) | (GenericConstrainHandler extends NumberMaxHandlerInternal<infer InferredConstraintValue extends number> ? GenericConstrainedType extends Negative ? IsGreater<InferredConstraintValue, 0> extends true ? never : CastConstraintError<GenericConstrainHandler, `constraint ${InferredConstraintValue} is less than zero`> : GenericConstrainedType extends NumberMaxInternal<infer InferredReferenceValue extends number> ? And<[
|
|
13
|
+
IsGreater<InferredConstraintValue, InferredReferenceValue>,
|
|
14
|
+
Not<IsEqual<InferredReferenceValue, number>>
|
|
15
|
+
]> extends true ? never : CastConstraintError<GenericConstrainHandler, `constraint ${InferredConstraintValue} is less than ${InferredReferenceValue}`> : CastConstraintError<GenericConstrainHandler, "no casting possible with number-max"> : never) | (GenericConstrainHandler extends StringMinHandlerInternal<infer InferredConstraintValue extends number> ? GenericConstrainedType extends StringMinInternal<infer InferredReferenceValue extends number> ? And<[
|
|
16
|
+
IsLess<InferredConstraintValue, InferredReferenceValue>,
|
|
17
|
+
Not<IsEqual<InferredReferenceValue, number>>
|
|
18
|
+
]> extends true ? never : CastConstraintError<GenericConstrainHandler, `length constraint ${InferredConstraintValue} is greater than ${InferredReferenceValue}`> : CastConstraintError<GenericConstrainHandler, "no casting possible with string-min"> : never) | (GenericConstrainHandler extends StringMaxHandlerInternal<infer InferredConstraintValue extends number> ? GenericConstrainedType extends StringMaxInternal<infer InferredReferenceValue extends number> ? And<[
|
|
19
|
+
IsGreater<InferredConstraintValue, InferredReferenceValue>,
|
|
20
|
+
Not<IsEqual<InferredReferenceValue, number>>
|
|
21
|
+
]> extends true ? never : CastConstraintError<GenericConstrainHandler, `length constraint ${InferredConstraintValue} is less than ${InferredReferenceValue}`> : CastConstraintError<GenericConstrainHandler, "no casting possible with string-max"> : never) | (GenericConstrainHandler extends typeof Positive ? GenericConstrainedType extends NumberMinInternal<infer InferredReferenceValue extends number> ? And<[
|
|
22
|
+
IsLess<0, InferredReferenceValue>,
|
|
23
|
+
Not<IsEqual<InferredReferenceValue, number>>
|
|
24
|
+
]> extends true ? never : CastConstraintError<GenericConstrainHandler, `constraint ${InferredReferenceValue} is less than zero`> : CastConstraintError<GenericConstrainHandler, "no casting possible with Positive"> : never) | (GenericConstrainHandler extends typeof Negative ? GenericConstrainedType extends NumberMaxInternal<infer InferredReferenceValue extends number> ? And<[
|
|
25
|
+
IsGreater<0, InferredReferenceValue>,
|
|
26
|
+
Not<IsEqual<InferredReferenceValue, number>>
|
|
27
|
+
]> extends true ? never : CastConstraintError<GenericConstrainHandler, `constraint ${InferredReferenceValue} is greater than zero`> : CastConstraintError<GenericConstrainHandler, "no casting possible with negative"> : never) | (GenericConstrainHandler extends (typeof Negative | typeof Positive | StringMaxHandlerInternal | StringMinHandlerInternal | NumberMaxHandlerInternal | NumberMinHandlerInternal) ? never : CastConstraintError<GenericConstrainHandler, "no casting possible">)) extends infer InferredResult ? NeverCoalescing<InferredResult, unknown> : never;
|
|
28
|
+
export declare function castConstraint<GenericConstrainedType extends ConstrainedType, GenericConstrainHandler extends ConstraintHandler>(constrainedType: (GenericConstrainedType & ForbiddenBadCast<GenericConstrainedType, GenericConstrainHandler>), constraintHandler: GenericConstrainHandler | GenericConstrainHandler[]): (GenericConstrainedType & UnionToIntersection<GenericConstrainHandler extends ConstraintHandler ? GetConstraint<GenericConstrainHandler> : never>);
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { constrainedTypeKind } from './base.mjs';
|
|
2
|
+
import { coalescing } from '../../array/coalescing.mjs';
|
|
3
|
+
|
|
4
|
+
function castConstraint(constrainedType, constraintHandler) {
|
|
5
|
+
const preparedConstraintHandler = coalescing(constraintHandler);
|
|
6
|
+
const newConstraints = {
|
|
7
|
+
...constrainedTypeKind.getValue(constrainedType),
|
|
8
|
+
};
|
|
9
|
+
for (let index = 0; index < preparedConstraintHandler.length; index++) {
|
|
10
|
+
const constraintHandler = preparedConstraintHandler[index];
|
|
11
|
+
newConstraints[constraintHandler.name] = null;
|
|
12
|
+
}
|
|
13
|
+
return constrainedTypeKind.addTo(constrainedType, newConstraints);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
export { castConstraint };
|
|
@@ -13,11 +13,11 @@ const Int = base.createConstraint("int", base$1.Number, int.checkerInt());
|
|
|
13
13
|
/**
|
|
14
14
|
* {@include clean/Positive/index.md}
|
|
15
15
|
*/
|
|
16
|
-
const Positive = base.createConstraint("positive", base$1.Number, min.checkerNumberMin(
|
|
16
|
+
const Positive = base.createConstraint("positive", base$1.Number, min.checkerNumberMin(0));
|
|
17
17
|
/**
|
|
18
18
|
* {@include clean/Negative/index.md}
|
|
19
19
|
*/
|
|
20
|
-
const Negative = base.createConstraint("negative", base$1.Number, max.checkerNumberMax(
|
|
20
|
+
const Negative = base.createConstraint("negative", base$1.Number, max.checkerNumberMax(0));
|
|
21
21
|
/**
|
|
22
22
|
* {@include clean/NumberMin/index.md}
|
|
23
23
|
*/
|
|
@@ -30,17 +30,9 @@ function NumberMin(value) {
|
|
|
30
30
|
function NumberMax(value) {
|
|
31
31
|
return base.createConstraint(`number-max-${value}`, base$1.Number, max.checkerNumberMax(value));
|
|
32
32
|
}
|
|
33
|
-
/**
|
|
34
|
-
* {@include clean/PositiveInt/index.md}
|
|
35
|
-
*/
|
|
36
|
-
const PositiveInt = base.createConstraint("positive-int", base$1.Number, [
|
|
37
|
-
int.checkerInt(),
|
|
38
|
-
min.checkerNumberMin(1),
|
|
39
|
-
]);
|
|
40
33
|
|
|
41
34
|
exports.Int = Int;
|
|
42
35
|
exports.Negative = Negative;
|
|
43
36
|
exports.NumberMax = NumberMax;
|
|
44
37
|
exports.NumberMin = NumberMin;
|
|
45
38
|
exports.Positive = Positive;
|
|
46
|
-
exports.PositiveInt = PositiveInt;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type GetConstraint } from "../base";
|
|
1
|
+
import { type ConstraintHandler, type GetConstraint } from "../base";
|
|
2
2
|
import * as DDataParser from "../../../dataParser";
|
|
3
3
|
import { type OnlyLiteralNumber } from "../../../common";
|
|
4
4
|
/**
|
|
@@ -28,7 +28,7 @@ import { type OnlyLiteralNumber } from "../../../common";
|
|
|
28
28
|
* @namespace C
|
|
29
29
|
*
|
|
30
30
|
*/
|
|
31
|
-
export declare const Int:
|
|
31
|
+
export declare const Int: ConstraintHandler<"int", number, readonly [DDataParser.DataParserCheckerInt], never>;
|
|
32
32
|
export type Int = GetConstraint<typeof Int>;
|
|
33
33
|
/**
|
|
34
34
|
* Constraint handler that validates strictly positive numbers (>= 1).
|
|
@@ -57,7 +57,7 @@ export type Int = GetConstraint<typeof Int>;
|
|
|
57
57
|
* @namespace C
|
|
58
58
|
*
|
|
59
59
|
*/
|
|
60
|
-
export declare const Positive:
|
|
60
|
+
export declare const Positive: ConstraintHandler<"positive", number, readonly [DDataParser.DataParserCheckerNumberMin], never>;
|
|
61
61
|
export type Positive = GetConstraint<typeof Positive>;
|
|
62
62
|
/**
|
|
63
63
|
* Constraint handler that validates strictly negative numbers (<= -1).
|
|
@@ -86,8 +86,10 @@ export type Positive = GetConstraint<typeof Positive>;
|
|
|
86
86
|
* @namespace C
|
|
87
87
|
*
|
|
88
88
|
*/
|
|
89
|
-
export declare const Negative:
|
|
89
|
+
export declare const Negative: ConstraintHandler<"negative", number, readonly [DDataParser.DataParserCheckerNumberMax], never>;
|
|
90
90
|
export type Negative = GetConstraint<typeof Negative>;
|
|
91
|
+
export type NumberMinHandlerInternal<GenericValue extends number = number> = Extract<ConstraintHandler<`number-min-${GenericValue}`, number, readonly [DDataParser.DataParserCheckerNumberMin], never>, any>;
|
|
92
|
+
export type NumberMinInternal<GenericValue extends number = number> = GetConstraint<NumberMinHandlerInternal<GenericValue>>;
|
|
91
93
|
/**
|
|
92
94
|
* Constraint factory that validates numbers greater than or equal to a minimum.
|
|
93
95
|
*
|
|
@@ -116,8 +118,10 @@ export type Negative = GetConstraint<typeof Negative>;
|
|
|
116
118
|
* @namespace C
|
|
117
119
|
*
|
|
118
120
|
*/
|
|
119
|
-
export declare function NumberMin<GenericValue extends number>(value: GenericValue & OnlyLiteralNumber<GenericValue>):
|
|
120
|
-
export type NumberMin<GenericValue extends number> = ReturnType<typeof NumberMin<GenericValue
|
|
121
|
+
export declare function NumberMin<GenericValue extends number>(value: GenericValue & OnlyLiteralNumber<GenericValue>): NumberMinHandlerInternal<GenericValue>;
|
|
122
|
+
export type NumberMin<GenericValue extends number> = GetConstraint<ReturnType<typeof NumberMin<GenericValue>>>;
|
|
123
|
+
export type NumberMaxHandlerInternal<GenericValue extends number = number> = Extract<ConstraintHandler<`number-max-${GenericValue}`, number, readonly [DDataParser.DataParserCheckerNumberMax], never>, any>;
|
|
124
|
+
export type NumberMaxInternal<GenericValue extends number = number> = GetConstraint<NumberMaxHandlerInternal<GenericValue>>;
|
|
121
125
|
/**
|
|
122
126
|
* Constraint factory that validates numbers less than or equal to a maximum.
|
|
123
127
|
*
|
|
@@ -146,34 +150,5 @@ export type NumberMin<GenericValue extends number> = ReturnType<typeof NumberMin
|
|
|
146
150
|
* @namespace C
|
|
147
151
|
*
|
|
148
152
|
*/
|
|
149
|
-
export declare function NumberMax<GenericValue extends number>(value: GenericValue & OnlyLiteralNumber<GenericValue>):
|
|
150
|
-
export type NumberMax<GenericValue extends number> = ReturnType<typeof NumberMax<GenericValue
|
|
151
|
-
/**
|
|
152
|
-
* Constraint handler that validates strictly positive integers (>= 1).
|
|
153
|
-
*
|
|
154
|
-
* **Supported call styles:**
|
|
155
|
-
* - Classic: `PositiveInt.create(value)` -> returns Either
|
|
156
|
-
*
|
|
157
|
-
* Use it as a reusable rule to validate inputs and to constrain NewTypes to positive integer numbers.
|
|
158
|
-
*
|
|
159
|
-
* ```ts
|
|
160
|
-
* const result = C.PositiveInt.create(4);
|
|
161
|
-
*
|
|
162
|
-
* if (E.isRight(result)) {
|
|
163
|
-
* // result: E.Right<"createConstrainedType", C.ConstrainedType<"positive-int", 4>>
|
|
164
|
-
* }
|
|
165
|
-
*
|
|
166
|
-
* const value = C.PositiveInt.createOrThrow(10);
|
|
167
|
-
* // value: C.ConstrainedType<"positive-int", 10>
|
|
168
|
-
*
|
|
169
|
-
* C.PositiveInt.is(value); // type guard
|
|
170
|
-
*
|
|
171
|
-
* ```
|
|
172
|
-
*
|
|
173
|
-
* @see https://utils.duplojs.dev/en/v1/api/clean/constraints
|
|
174
|
-
*
|
|
175
|
-
* @namespace C
|
|
176
|
-
*
|
|
177
|
-
*/
|
|
178
|
-
export declare const PositiveInt: import("..").ConstraintHandler<"positive-int", number, readonly [DDataParser.DataParserCheckerInt, DDataParser.DataParserCheckerNumberMin], never>;
|
|
179
|
-
export type PositiveInt = GetConstraint<typeof PositiveInt>;
|
|
153
|
+
export declare function NumberMax<GenericValue extends number>(value: GenericValue & OnlyLiteralNumber<GenericValue>): NumberMaxHandlerInternal<GenericValue>;
|
|
154
|
+
export type NumberMax<GenericValue extends number> = GetConstraint<ReturnType<typeof NumberMax<GenericValue>>>;
|
|
@@ -11,11 +11,11 @@ const Int = createConstraint("int", Number, checkerInt());
|
|
|
11
11
|
/**
|
|
12
12
|
* {@include clean/Positive/index.md}
|
|
13
13
|
*/
|
|
14
|
-
const Positive = createConstraint("positive", Number, checkerNumberMin(
|
|
14
|
+
const Positive = createConstraint("positive", Number, checkerNumberMin(0));
|
|
15
15
|
/**
|
|
16
16
|
* {@include clean/Negative/index.md}
|
|
17
17
|
*/
|
|
18
|
-
const Negative = createConstraint("negative", Number, checkerNumberMax(
|
|
18
|
+
const Negative = createConstraint("negative", Number, checkerNumberMax(0));
|
|
19
19
|
/**
|
|
20
20
|
* {@include clean/NumberMin/index.md}
|
|
21
21
|
*/
|
|
@@ -28,12 +28,5 @@ function NumberMin(value) {
|
|
|
28
28
|
function NumberMax(value) {
|
|
29
29
|
return createConstraint(`number-max-${value}`, Number, checkerNumberMax(value));
|
|
30
30
|
}
|
|
31
|
-
/**
|
|
32
|
-
* {@include clean/PositiveInt/index.md}
|
|
33
|
-
*/
|
|
34
|
-
const PositiveInt = createConstraint("positive-int", Number, [
|
|
35
|
-
checkerInt(),
|
|
36
|
-
checkerNumberMin(1),
|
|
37
|
-
]);
|
|
38
31
|
|
|
39
|
-
export { Int, Negative, NumberMax, NumberMin, Positive
|
|
32
|
+
export { Int, Negative, NumberMax, NumberMin, Positive };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type GetConstraint } from "../base";
|
|
1
|
+
import { type ConstraintHandler, type GetConstraint } from "../base";
|
|
2
2
|
import * as DDataParser from "../../../dataParser";
|
|
3
3
|
import { type OnlyLiteralNumber } from "../../../common";
|
|
4
4
|
/**
|
|
@@ -28,7 +28,7 @@ import { type OnlyLiteralNumber } from "../../../common";
|
|
|
28
28
|
* @namespace C
|
|
29
29
|
*
|
|
30
30
|
*/
|
|
31
|
-
export declare const Email:
|
|
31
|
+
export declare const Email: ConstraintHandler<"email", string, readonly [DDataParser.DataParserCheckerEmail], never>;
|
|
32
32
|
export type Email = GetConstraint<typeof Email>;
|
|
33
33
|
/**
|
|
34
34
|
* Constraint handler that validates a URL string.
|
|
@@ -57,8 +57,10 @@ export type Email = GetConstraint<typeof Email>;
|
|
|
57
57
|
* @namespace C
|
|
58
58
|
*
|
|
59
59
|
*/
|
|
60
|
-
export declare const Url:
|
|
60
|
+
export declare const Url: ConstraintHandler<"url", string, readonly [DDataParser.DataParserCheckerUrl], never>;
|
|
61
61
|
export type Url = GetConstraint<typeof Url>;
|
|
62
|
+
export type StringMinHandlerInternal<GenericValue extends number = number> = Extract<ConstraintHandler<`string-min-${GenericValue}`, string, readonly [DDataParser.DataParserCheckerStringMin], never>, any>;
|
|
63
|
+
export type StringMinInternal<GenericValue extends number = number> = GetConstraint<StringMinHandlerInternal<GenericValue>>;
|
|
62
64
|
/**
|
|
63
65
|
* Constraint factory that validates strings with a minimum length.
|
|
64
66
|
*
|
|
@@ -87,8 +89,10 @@ export type Url = GetConstraint<typeof Url>;
|
|
|
87
89
|
* @namespace C
|
|
88
90
|
*
|
|
89
91
|
*/
|
|
90
|
-
export declare function StringMin<GenericValue extends number>(value: GenericValue & OnlyLiteralNumber<GenericValue>):
|
|
92
|
+
export declare function StringMin<GenericValue extends number>(value: GenericValue & OnlyLiteralNumber<GenericValue>): StringMinHandlerInternal<GenericValue>;
|
|
91
93
|
export type StringMin<GenericValue extends number> = GetConstraint<ReturnType<typeof StringMin<GenericValue>>>;
|
|
94
|
+
export type StringMaxHandlerInternal<GenericValue extends number = number> = Extract<ConstraintHandler<`string-max-${GenericValue}`, string, readonly [DDataParser.DataParserCheckerStringMax], never>, any>;
|
|
95
|
+
export type StringMaxInternal<GenericValue extends number = number> = GetConstraint<StringMaxHandlerInternal<GenericValue>>;
|
|
92
96
|
/**
|
|
93
97
|
* Constraint factory that validates strings with a maximum length.
|
|
94
98
|
*
|
|
@@ -117,5 +121,5 @@ export type StringMin<GenericValue extends number> = GetConstraint<ReturnType<ty
|
|
|
117
121
|
* @namespace C
|
|
118
122
|
*
|
|
119
123
|
*/
|
|
120
|
-
export declare function StringMax<GenericValue extends number>(value: GenericValue & OnlyLiteralNumber<GenericValue>):
|
|
124
|
+
export declare function StringMax<GenericValue extends number>(value: GenericValue & OnlyLiteralNumber<GenericValue>): StringMaxHandlerInternal<GenericValue>;
|
|
121
125
|
export type StringMax<GenericValue extends number> = GetConstraint<ReturnType<typeof StringMax<GenericValue>>>;
|
|
@@ -32,7 +32,7 @@ class CreateConstraintsSetError extends kind$1.kindHeritage("create-constraint-s
|
|
|
32
32
|
*/
|
|
33
33
|
function createConstraintsSet(primitiveHandler, constraint) {
|
|
34
34
|
const constraints = coalescing.coalescing(constraint);
|
|
35
|
-
const checkers = flatMap.flatMap(constraints, ({
|
|
35
|
+
const checkers = flatMap.flatMap(constraints, ({ internal }) => internal.checkers);
|
|
36
36
|
const dataParserWithCheckers = primitiveHandler
|
|
37
37
|
.dataParser
|
|
38
38
|
.addChecker(...checkers);
|
|
@@ -80,6 +80,12 @@ function createConstraintsSet(primitiveHandler, constraint) {
|
|
|
80
80
|
return pipe.pipe({
|
|
81
81
|
primitiveHandler,
|
|
82
82
|
constraints,
|
|
83
|
+
internal: {
|
|
84
|
+
primitiveHandler,
|
|
85
|
+
constraints,
|
|
86
|
+
constraintKindValue,
|
|
87
|
+
dataParser: dataParserWithCheckers,
|
|
88
|
+
},
|
|
83
89
|
getConstraint,
|
|
84
90
|
create: create$2,
|
|
85
91
|
createOrThrow,
|
|
@@ -7,15 +7,35 @@ import type * as DDataParser from "../../dataParser";
|
|
|
7
7
|
export declare const constraintsSetHandlerKind: import("../..").KindHandler<import("../..").KindDefinition<"@DuplojsUtilsClean/constraints-set-handler", unknown>>;
|
|
8
8
|
export interface ConstraintsSetHandler<GenericPrimitiveValue extends EligiblePrimitive = EligiblePrimitive, GenericConstraintsHandler extends readonly ConstraintHandler[] = readonly [], GenericPrimitiveInput extends unknown = unknown> extends Kind<typeof constraintsSetHandlerKind.definition> {
|
|
9
9
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
10
|
+
* @deprecated
|
|
12
11
|
*/
|
|
13
12
|
readonly primitiveHandler: PrimitiveHandler<GenericPrimitiveValue>;
|
|
14
13
|
/**
|
|
15
|
-
*
|
|
16
|
-
*
|
|
14
|
+
* @deprecated
|
|
17
15
|
*/
|
|
18
16
|
readonly constraints: GenericConstraintsHandler;
|
|
17
|
+
readonly internal: {
|
|
18
|
+
/**
|
|
19
|
+
* The DataParser with all constraint checkers from the set applied.
|
|
20
|
+
*
|
|
21
|
+
*/
|
|
22
|
+
readonly dataParser: DDataParser.Contract<GenericPrimitiveValue, unknown>;
|
|
23
|
+
/**
|
|
24
|
+
* The primitive handler used to validate and wrap values (e.g. `C.String`, `C.Number`).
|
|
25
|
+
*
|
|
26
|
+
*/
|
|
27
|
+
readonly primitiveHandler: PrimitiveHandler<GenericPrimitiveValue>;
|
|
28
|
+
/**
|
|
29
|
+
* The list of constraint handlers applied by this set.
|
|
30
|
+
*
|
|
31
|
+
*/
|
|
32
|
+
readonly constraints: GenericConstraintsHandler;
|
|
33
|
+
/**
|
|
34
|
+
* The constraint kind metadata applied by the set.
|
|
35
|
+
*
|
|
36
|
+
*/
|
|
37
|
+
readonly constraintKindValue: Record<string, null>;
|
|
38
|
+
};
|
|
19
39
|
/**
|
|
20
40
|
* Creates a constrained value and returns an Either.
|
|
21
41
|
*
|
|
@@ -145,5 +165,5 @@ export declare function createConstraintsSet<GenericPrimitiveValue extends Eligi
|
|
|
145
165
|
export declare namespace createConstraintsSet {
|
|
146
166
|
var overrideHandler: import("../..").OverrideHandler<ConstraintsSetHandler<EligiblePrimitive, readonly [], unknown>>;
|
|
147
167
|
}
|
|
148
|
-
export type GetConstraints<GenericHandler extends ConstraintsSetHandler<EligiblePrimitive, readonly any[]>> = Extract<GenericHandler extends any ? UnionToIntersection<GenericHandler["constraints"][number] extends infer InferredConstraint ? InferredConstraint extends ConstraintHandler ? GetConstraint<InferredConstraint> : never : never> : never, any>;
|
|
168
|
+
export type GetConstraints<GenericHandler extends ConstraintsSetHandler<EligiblePrimitive, readonly any[]>> = Extract<GenericHandler extends any ? UnionToIntersection<GenericHandler["internal"]["constraints"][number] extends infer InferredConstraint ? InferredConstraint extends ConstraintHandler ? GetConstraint<InferredConstraint> : never : never> : never, any>;
|
|
149
169
|
export {};
|
|
@@ -30,7 +30,7 @@ class CreateConstraintsSetError extends kindHeritage("create-constraint-set-erro
|
|
|
30
30
|
*/
|
|
31
31
|
function createConstraintsSet(primitiveHandler, constraint) {
|
|
32
32
|
const constraints = coalescing(constraint);
|
|
33
|
-
const checkers = flatMap(constraints, ({
|
|
33
|
+
const checkers = flatMap(constraints, ({ internal }) => internal.checkers);
|
|
34
34
|
const dataParserWithCheckers = primitiveHandler
|
|
35
35
|
.dataParser
|
|
36
36
|
.addChecker(...checkers);
|
|
@@ -78,6 +78,12 @@ function createConstraintsSet(primitiveHandler, constraint) {
|
|
|
78
78
|
return pipe({
|
|
79
79
|
primitiveHandler,
|
|
80
80
|
constraints,
|
|
81
|
+
internal: {
|
|
82
|
+
primitiveHandler,
|
|
83
|
+
constraints,
|
|
84
|
+
constraintKindValue,
|
|
85
|
+
dataParser: dataParserWithCheckers,
|
|
86
|
+
},
|
|
81
87
|
getConstraint,
|
|
82
88
|
create,
|
|
83
89
|
createOrThrow,
|
|
@@ -7,13 +7,13 @@ var kind$1 = require('../../common/kind.cjs');
|
|
|
7
7
|
var pipe = require('../../common/pipe.cjs');
|
|
8
8
|
var map = require('../../array/map.cjs');
|
|
9
9
|
var entry = require('../../object/entry.cjs');
|
|
10
|
-
var
|
|
10
|
+
var base = require('../constraint/base.cjs');
|
|
11
11
|
var transform = require('../../dataParser/parsers/transform.cjs');
|
|
12
12
|
var entries = require('../../object/entries.cjs');
|
|
13
13
|
var forward = require('../../common/forward.cjs');
|
|
14
14
|
var errorKindNamespace = require('../../common/errorKindNamespace.cjs');
|
|
15
15
|
var index = require('../../dataParser/parsers/object/index.cjs');
|
|
16
|
-
var
|
|
16
|
+
var fromEntries = require('../../object/fromEntries.cjs');
|
|
17
17
|
var wrapValue = require('../../common/wrapValue.cjs');
|
|
18
18
|
var override = require('../../common/override.cjs');
|
|
19
19
|
var is = require('../../either/left/is.cjs');
|
|
@@ -41,8 +41,14 @@ function createEntity(name, getPropertiesDefinition) {
|
|
|
41
41
|
}
|
|
42
42
|
const propertiesDefinition = getPropertiesDefinition(property.entityPropertyDefinitionTools);
|
|
43
43
|
const mapDataParser = pipe.pipe(forward.forward(propertiesDefinition), entries.entries, map.map(([key, property$1]) => entry.entry(key, property.entityPropertyDefinitionToDataParser(property$1, (newTypeHandler) => {
|
|
44
|
-
const
|
|
45
|
-
|
|
44
|
+
const allKind = {
|
|
45
|
+
...base.constrainedTypeKind.setTo({}, newTypeHandler.internal.constraintKindValue),
|
|
46
|
+
...newType.newTypeKind.setTo({}, newTypeHandler.name),
|
|
47
|
+
};
|
|
48
|
+
return transform.transform(newTypeHandler.internal.dataParser, (value) => ({
|
|
49
|
+
...allKind,
|
|
50
|
+
[wrapValue.keyWrappedValue]: value,
|
|
51
|
+
}));
|
|
46
52
|
}))), fromEntries.fromEntries, index.object, (dataParser) => transform.transform(dataParser, (value) => entityKind.setTo(value, name)));
|
|
47
53
|
function map$1(rawProperties) {
|
|
48
54
|
const result = mapDataParser.parse(rawProperties);
|
|
@@ -74,6 +80,9 @@ function createEntity(name, getPropertiesDefinition) {
|
|
|
74
80
|
name,
|
|
75
81
|
propertiesDefinition,
|
|
76
82
|
mapDataParser,
|
|
83
|
+
internal: {
|
|
84
|
+
mapDataParser,
|
|
85
|
+
},
|
|
77
86
|
new: theNew,
|
|
78
87
|
map: map$1,
|
|
79
88
|
mapOrThrow,
|
|
@@ -92,4 +101,5 @@ exports.entityPropertyStructureKind = property.entityPropertyStructureKind;
|
|
|
92
101
|
exports.entityPropertyUnionKind = property.entityPropertyUnionKind;
|
|
93
102
|
exports.CreateEntityError = CreateEntityError;
|
|
94
103
|
exports.createEntity = createEntity;
|
|
104
|
+
exports.entityHandlerKind = entityHandlerKind;
|
|
95
105
|
exports.entityKind = entityKind;
|
|
@@ -18,7 +18,7 @@ export type PropertiesToMapOfEntity<GenericPropertiesDefinition extends EntityPr
|
|
|
18
18
|
export declare const entityKind: import("../../common").KindHandler<import("../../common").KindDefinition<"@DuplojsUtilsClean/entity", string>>;
|
|
19
19
|
export interface Entity<GenericName extends string = string> extends Kind<typeof entityKind.definition, GenericName> {
|
|
20
20
|
}
|
|
21
|
-
declare const entityHandlerKind: import("../../common").KindHandler<import("../../common").KindDefinition<"@DuplojsUtilsClean/entity-handler", unknown>>;
|
|
21
|
+
export declare const entityHandlerKind: import("../../common").KindHandler<import("../../common").KindDefinition<"@DuplojsUtilsClean/entity-handler", unknown>>;
|
|
22
22
|
export interface EntityHandler<GenericName extends string = string, GenericPropertiesDefinition extends EntityPropertiesDefinition = EntityPropertiesDefinition> extends Kind<typeof entityHandlerKind.definition> {
|
|
23
23
|
/**
|
|
24
24
|
* The entity name used as a runtime identifier (for example "User").
|
|
@@ -30,7 +30,17 @@ export interface EntityHandler<GenericName extends string = string, GenericPrope
|
|
|
30
30
|
*
|
|
31
31
|
*/
|
|
32
32
|
readonly propertiesDefinition: GenericPropertiesDefinition;
|
|
33
|
+
/**
|
|
34
|
+
* @deprecated
|
|
35
|
+
*/
|
|
33
36
|
readonly mapDataParser: DDataParser.Contract<EntityProperties<GenericPropertiesDefinition>, unknown>;
|
|
37
|
+
readonly internal: {
|
|
38
|
+
/**
|
|
39
|
+
* The DataParser used internally to map raw properties into an entity.
|
|
40
|
+
*
|
|
41
|
+
*/
|
|
42
|
+
readonly mapDataParser: DDataParser.Contract<EntityProperties<GenericPropertiesDefinition>, unknown>;
|
|
43
|
+
};
|
|
34
44
|
/**
|
|
35
45
|
* Builds an entity from already typed properties.
|
|
36
46
|
*
|
|
@@ -6,14 +6,14 @@ import { kindHeritage } from '../../common/kind.mjs';
|
|
|
6
6
|
import { pipe } from '../../common/pipe.mjs';
|
|
7
7
|
import { map } from '../../array/map.mjs';
|
|
8
8
|
import { entry } from '../../object/entry.mjs';
|
|
9
|
-
import {
|
|
9
|
+
import { constrainedTypeKind } from '../constraint/base.mjs';
|
|
10
10
|
import { transform } from '../../dataParser/parsers/transform.mjs';
|
|
11
11
|
import { entries } from '../../object/entries.mjs';
|
|
12
12
|
import { forward } from '../../common/forward.mjs';
|
|
13
13
|
import { createErrorKind } from '../../common/errorKindNamespace.mjs';
|
|
14
14
|
import { object } from '../../dataParser/parsers/object/index.mjs';
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
15
|
+
import { fromEntries } from '../../object/fromEntries.mjs';
|
|
16
|
+
import { keyWrappedValue } from '../../common/wrapValue.mjs';
|
|
17
17
|
import { createOverride } from '../../common/override.mjs';
|
|
18
18
|
import { isLeft } from '../../either/left/is.mjs';
|
|
19
19
|
import { unwrap } from '../../common/unwrap.mjs';
|
|
@@ -40,8 +40,14 @@ function createEntity(name, getPropertiesDefinition) {
|
|
|
40
40
|
}
|
|
41
41
|
const propertiesDefinition = getPropertiesDefinition(entityPropertyDefinitionTools);
|
|
42
42
|
const mapDataParser = pipe(forward(propertiesDefinition), entries, map(([key, property]) => entry(key, entityPropertyDefinitionToDataParser(property, (newTypeHandler) => {
|
|
43
|
-
const
|
|
44
|
-
|
|
43
|
+
const allKind = {
|
|
44
|
+
...constrainedTypeKind.setTo({}, newTypeHandler.internal.constraintKindValue),
|
|
45
|
+
...newTypeKind.setTo({}, newTypeHandler.name),
|
|
46
|
+
};
|
|
47
|
+
return transform(newTypeHandler.internal.dataParser, (value) => ({
|
|
48
|
+
...allKind,
|
|
49
|
+
[keyWrappedValue]: value,
|
|
50
|
+
}));
|
|
45
51
|
}))), fromEntries, object, (dataParser) => transform(dataParser, (value) => entityKind.setTo(value, name)));
|
|
46
52
|
function map$1(rawProperties) {
|
|
47
53
|
const result = mapDataParser.parse(rawProperties);
|
|
@@ -73,6 +79,9 @@ function createEntity(name, getPropertiesDefinition) {
|
|
|
73
79
|
name,
|
|
74
80
|
propertiesDefinition,
|
|
75
81
|
mapDataParser,
|
|
82
|
+
internal: {
|
|
83
|
+
mapDataParser,
|
|
84
|
+
},
|
|
76
85
|
new: theNew,
|
|
77
86
|
map: map$1,
|
|
78
87
|
mapOrThrow,
|
|
@@ -82,4 +91,4 @@ function createEntity(name, getPropertiesDefinition) {
|
|
|
82
91
|
}
|
|
83
92
|
createEntity.overrideHandler = createOverride("@duplojs/utils/clean/entity");
|
|
84
93
|
|
|
85
|
-
export { CreateEntityError, createEntity, entityKind, entityPropertyDefinitionToDataParser, entityPropertyDefinitionTools };
|
|
94
|
+
export { CreateEntityError, createEntity, entityHandlerKind, entityKind, entityPropertyDefinitionToDataParser, entityPropertyDefinitionTools };
|
package/dist/clean/index.cjs
CHANGED
|
@@ -7,9 +7,11 @@ var repository = require('./repository.cjs');
|
|
|
7
7
|
var useCase = require('./useCase.cjs');
|
|
8
8
|
var flag = require('./flag.cjs');
|
|
9
9
|
var maybe = require('./maybe.cjs');
|
|
10
|
+
var toMapDataParser = require('./toMapDataParser.cjs');
|
|
10
11
|
var property = require('./entity/property.cjs');
|
|
11
12
|
var unwrap = require('./entity/unwrap.cjs');
|
|
12
13
|
var base = require('./constraint/base.cjs');
|
|
14
|
+
var cast = require('./constraint/cast.cjs');
|
|
13
15
|
var number = require('./constraint/defaultConstraint/number.cjs');
|
|
14
16
|
var string = require('./constraint/defaultConstraint/string.cjs');
|
|
15
17
|
var time = require('./constraint/defaultConstraint/time.cjs');
|
|
@@ -52,6 +54,7 @@ exports.newTypeHandlerKind = newType.newTypeHandlerKind;
|
|
|
52
54
|
exports.newTypeKind = newType.newTypeKind;
|
|
53
55
|
exports.CreateEntityError = index.CreateEntityError;
|
|
54
56
|
exports.createEntity = index.createEntity;
|
|
57
|
+
exports.entityHandlerKind = index.entityHandlerKind;
|
|
55
58
|
exports.entityKind = index.entityKind;
|
|
56
59
|
exports.createRepository = repository.createRepository;
|
|
57
60
|
exports.repositoryHandlerKind = repository.repositoryHandlerKind;
|
|
@@ -62,6 +65,7 @@ exports.createFlag = flag.createFlag;
|
|
|
62
65
|
exports.flagKind = flag.flagKind;
|
|
63
66
|
exports.none = maybe.none;
|
|
64
67
|
exports.some = maybe.some;
|
|
68
|
+
exports.toMapDataParser = toMapDataParser.toMapDataParser;
|
|
65
69
|
exports.entityPropertyArrayKind = property.entityPropertyArrayKind;
|
|
66
70
|
exports.entityPropertyDefinitionToDataParser = property.entityPropertyDefinitionToDataParser;
|
|
67
71
|
exports.entityPropertyDefinitionTools = property.entityPropertyDefinitionTools;
|
|
@@ -75,12 +79,12 @@ exports.CreateConstrainedTypeError = base.CreateConstrainedTypeError;
|
|
|
75
79
|
exports.constrainedTypeKind = base.constrainedTypeKind;
|
|
76
80
|
exports.constraintHandlerKind = base.constraintHandlerKind;
|
|
77
81
|
exports.createConstraint = base.createConstraint;
|
|
82
|
+
exports.castConstraint = cast.castConstraint;
|
|
78
83
|
exports.Int = number.Int;
|
|
79
84
|
exports.Negative = number.Negative;
|
|
80
85
|
exports.NumberMax = number.NumberMax;
|
|
81
86
|
exports.NumberMin = number.NumberMin;
|
|
82
87
|
exports.Positive = number.Positive;
|
|
83
|
-
exports.PositiveInt = number.PositiveInt;
|
|
84
88
|
exports.Email = string.Email;
|
|
85
89
|
exports.StringMax = string.StringMax;
|
|
86
90
|
exports.StringMin = string.StringMin;
|