@duplojs/utils 1.4.53 → 1.4.55
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/clean/constraint/defaultConstraint/number.cjs +8 -0
- package/dist/clean/constraint/defaultConstraint/number.d.ts +29 -0
- package/dist/clean/constraint/defaultConstraint/number.mjs +8 -1
- package/dist/clean/constraint/set.cjs +1 -1
- package/dist/clean/constraint/set.d.ts +11 -11
- package/dist/clean/constraint/set.mjs +1 -1
- package/dist/clean/entity.cjs +1 -1
- package/dist/clean/entity.mjs +1 -1
- package/dist/clean/index.cjs +4 -0
- package/dist/clean/index.d.ts +1 -0
- package/dist/clean/index.mjs +2 -1
- package/dist/clean/maybe.cjs +21 -0
- package/dist/clean/maybe.d.ts +135 -0
- package/dist/clean/maybe.mjs +18 -0
- package/dist/clean/newType.cjs +1 -1
- package/dist/clean/newType.d.ts +2 -2
- package/dist/clean/newType.mjs +1 -1
- package/dist/dataParser/base.d.ts +2 -2
- package/dist/metadata.json +9 -0
- package/package.json +1 -1
|
@@ -30,9 +30,17 @@ 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
|
+
]);
|
|
33
40
|
|
|
34
41
|
exports.Int = Int;
|
|
35
42
|
exports.Negative = Negative;
|
|
36
43
|
exports.NumberMax = NumberMax;
|
|
37
44
|
exports.NumberMin = NumberMin;
|
|
38
45
|
exports.Positive = Positive;
|
|
46
|
+
exports.PositiveInt = PositiveInt;
|
|
@@ -148,3 +148,32 @@ export type NumberMin<GenericValue extends number> = ReturnType<typeof NumberMin
|
|
|
148
148
|
*/
|
|
149
149
|
export declare function NumberMax<GenericValue extends number>(value: GenericValue & OnlyLiteralNumber<GenericValue>): import("..").ConstraintHandler<`number-max-${GenericValue & OnlyLiteralNumber<GenericValue>}`, number, readonly [DDataParser.DataParserCheckerNumberMax]>;
|
|
150
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]>;
|
|
179
|
+
export type PositiveInt = GetConstraint<typeof PositiveInt>;
|
|
@@ -28,5 +28,12 @@ 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
|
+
]);
|
|
31
38
|
|
|
32
|
-
export { Int, Negative, NumberMax, NumberMin, Positive };
|
|
39
|
+
export { Int, Negative, NumberMax, NumberMin, Positive, PositiveInt };
|
|
@@ -5,7 +5,7 @@ import * as DEither from "../../either";
|
|
|
5
5
|
import * as DArray from "../../array";
|
|
6
6
|
import type * as DDataParser from "../../dataParser";
|
|
7
7
|
export declare const constraintsSetHandlerKind: import("../..").KindHandler<import("../..").KindDefinition<"@DuplojsUtilsClean/constraints-set-handler", unknown>>;
|
|
8
|
-
export interface ConstraintsSetHandler<GenericPrimitiveValue extends EligiblePrimitive = EligiblePrimitive,
|
|
8
|
+
export interface ConstraintsSetHandler<GenericPrimitiveValue extends EligiblePrimitive = EligiblePrimitive, GenericConstraintsHandler extends readonly ConstraintHandler[] = readonly []> extends Kind<typeof constraintsSetHandlerKind.definition> {
|
|
9
9
|
/**
|
|
10
10
|
* The primitive handler used to validate and wrap values (e.g. `C.String`, `C.Number`).
|
|
11
11
|
*
|
|
@@ -15,7 +15,7 @@ export interface ConstraintsSetHandler<GenericPrimitiveValue extends EligiblePri
|
|
|
15
15
|
* The list of constraint handlers applied by this set.
|
|
16
16
|
*
|
|
17
17
|
*/
|
|
18
|
-
readonly
|
|
18
|
+
readonly constraints: GenericConstraintsHandler;
|
|
19
19
|
/**
|
|
20
20
|
* Creates a constrained value and returns an Either.
|
|
21
21
|
*
|
|
@@ -28,8 +28,8 @@ export interface ConstraintsSetHandler<GenericPrimitiveValue extends EligiblePri
|
|
|
28
28
|
* ```
|
|
29
29
|
*
|
|
30
30
|
*/
|
|
31
|
-
create<const GenericInput extends GenericPrimitiveValue>(data: GenericInput): (DEither.Right<"createConstraintsSet", (Primitive<GenericInput> & UnionToIntersection<
|
|
32
|
-
create<GenericPrimitive extends Primitive<GenericPrimitiveValue>>(data: GenericPrimitive): (DEither.Right<"createConstraintsSet", (GenericPrimitive & UnionToIntersection<
|
|
31
|
+
create<const GenericInput extends GenericPrimitiveValue>(data: GenericInput): (DEither.Right<"createConstraintsSet", (Primitive<GenericInput> & UnionToIntersection<GenericConstraintsHandler[number] extends infer InferredConstraint ? InferredConstraint extends ConstraintHandler ? GetConstraint<InferredConstraint> : never : never>)> | DEither.Left<"createConstraintsSetError", DDataParser.DataParserError>);
|
|
32
|
+
create<GenericPrimitive extends Primitive<GenericPrimitiveValue>>(data: GenericPrimitive): (DEither.Right<"createConstraintsSet", (GenericPrimitive & UnionToIntersection<GenericConstraintsHandler[number] extends infer InferredConstraint ? InferredConstraint extends ConstraintHandler ? GetConstraint<InferredConstraint> : never : never>)> | DEither.Left<"createConstraintsSetError", DDataParser.DataParserError>);
|
|
33
33
|
/**
|
|
34
34
|
* Creates a constrained value and throws on error. Works with raw values or primitives.
|
|
35
35
|
*
|
|
@@ -42,8 +42,8 @@ export interface ConstraintsSetHandler<GenericPrimitiveValue extends EligiblePri
|
|
|
42
42
|
* ```
|
|
43
43
|
*
|
|
44
44
|
*/
|
|
45
|
-
createOrThrow<const GenericInput extends GenericPrimitiveValue>(data: GenericInput): (Primitive<GenericInput> & UnionToIntersection<
|
|
46
|
-
createOrThrow<GenericPrimitive extends Primitive<GenericPrimitiveValue>>(data: GenericPrimitive): (GenericPrimitive & UnionToIntersection<
|
|
45
|
+
createOrThrow<const GenericInput extends GenericPrimitiveValue>(data: GenericInput): (Primitive<GenericInput> & UnionToIntersection<GenericConstraintsHandler[number] extends infer InferredConstraint ? InferredConstraint extends ConstraintHandler ? GetConstraint<InferredConstraint> : never : never>);
|
|
46
|
+
createOrThrow<GenericPrimitive extends Primitive<GenericPrimitiveValue>>(data: GenericPrimitive): (GenericPrimitive & UnionToIntersection<GenericConstraintsHandler[number] extends infer InferredConstraint ? InferredConstraint extends ConstraintHandler ? GetConstraint<InferredConstraint> : never : never>);
|
|
47
47
|
/**
|
|
48
48
|
* Creates a constrained value from an unknown input and returns an Either.
|
|
49
49
|
*
|
|
@@ -53,7 +53,7 @@ export interface ConstraintsSetHandler<GenericPrimitiveValue extends EligiblePri
|
|
|
53
53
|
* ```
|
|
54
54
|
*
|
|
55
55
|
*/
|
|
56
|
-
createWithUnknown<GenericInput extends unknown>(data: GenericInput): (DEither.Right<"createConstraintsSet", (Primitive<GenericPrimitiveValue> & UnionToIntersection<
|
|
56
|
+
createWithUnknown<GenericInput extends unknown>(data: GenericInput): (DEither.Right<"createConstraintsSet", (Primitive<GenericPrimitiveValue> & UnionToIntersection<GenericConstraintsHandler[number] extends infer InferredConstraint ? InferredConstraint extends ConstraintHandler ? GetConstraint<InferredConstraint> : never : never>)> | DEither.Left<"createConstraintsSetError", DDataParser.DataParserError>);
|
|
57
57
|
/**
|
|
58
58
|
* Creates a constrained value from an unknown input and throws on error.
|
|
59
59
|
*
|
|
@@ -62,7 +62,7 @@ export interface ConstraintsSetHandler<GenericPrimitiveValue extends EligiblePri
|
|
|
62
62
|
* ```
|
|
63
63
|
*
|
|
64
64
|
*/
|
|
65
|
-
createWithUnknownOrThrow<GenericInput extends unknown>(data: GenericInput): (Primitive<GenericPrimitiveValue> & UnionToIntersection<
|
|
65
|
+
createWithUnknownOrThrow<GenericInput extends unknown>(data: GenericInput): (Primitive<GenericPrimitiveValue> & UnionToIntersection<GenericConstraintsHandler[number] extends infer InferredConstraint ? InferredConstraint extends ConstraintHandler ? GetConstraint<InferredConstraint> : never : never>);
|
|
66
66
|
/**
|
|
67
67
|
* Checks if a value satisfies all constraints of the set (type guard).
|
|
68
68
|
*
|
|
@@ -71,7 +71,7 @@ export interface ConstraintsSetHandler<GenericPrimitiveValue extends EligiblePri
|
|
|
71
71
|
* ```
|
|
72
72
|
*
|
|
73
73
|
*/
|
|
74
|
-
is<GenericInput extends WrappedValue>(input: GenericInput): input is Extract<GenericInput, (Primitive<GenericPrimitiveValue> & UnionToIntersection<
|
|
74
|
+
is<GenericInput extends WrappedValue>(input: GenericInput): input is Extract<GenericInput, (Primitive<GenericPrimitiveValue> & UnionToIntersection<GenericConstraintsHandler[number] extends infer InferredConstraint ? InferredConstraint extends ConstraintHandler ? GetConstraint<InferredConstraint> : never : never>)>;
|
|
75
75
|
/**
|
|
76
76
|
* Returns a constraint handler by name from the constraints set.
|
|
77
77
|
*
|
|
@@ -81,7 +81,7 @@ export interface ConstraintsSetHandler<GenericPrimitiveValue extends EligiblePri
|
|
|
81
81
|
* ```
|
|
82
82
|
*
|
|
83
83
|
*/
|
|
84
|
-
getConstraint<GenericConstraintName extends
|
|
84
|
+
getConstraint<GenericConstraintName extends GenericConstraintsHandler[number]["name"]>(name: GenericConstraintName): Extract<GenericConstraintsHandler[number], ConstraintHandler<GenericConstraintName>>;
|
|
85
85
|
}
|
|
86
86
|
declare const CreateConstraintsSetError_base: new (params: {
|
|
87
87
|
"@DuplojsUtilsError/create-constraint-set-error"?: unknown;
|
|
@@ -143,5 +143,5 @@ export declare function createConstraintsSet<GenericPrimitiveValue extends Eligi
|
|
|
143
143
|
export declare namespace createConstraintsSet {
|
|
144
144
|
var overrideHandler: import("../..").OverrideHandler<ConstraintsSetHandler<EligiblePrimitive, readonly []>>;
|
|
145
145
|
}
|
|
146
|
-
export type GetConstraints<GenericHandler extends ConstraintsSetHandler<EligiblePrimitive, readonly any[]>> = Extract<GenericHandler extends any ? UnionToIntersection<GenericHandler["
|
|
146
|
+
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>;
|
|
147
147
|
export {};
|
package/dist/clean/entity.cjs
CHANGED
|
@@ -57,7 +57,7 @@ function createEntity(name, getPropertiesDefinition) {
|
|
|
57
57
|
return entityKind.addTo(properties, name);
|
|
58
58
|
}
|
|
59
59
|
function simplePropertyDefinitionToDataParser(simplePropertyDefinition) {
|
|
60
|
-
const constraintKindValue = pipe.pipe(simplePropertyDefinition.
|
|
60
|
+
const constraintKindValue = pipe.pipe(simplePropertyDefinition.constraints, map.map(({ name }) => entry.entry(name, null)), fromEntries.fromEntries);
|
|
61
61
|
return transform.transform(simplePropertyDefinition.dataParser, (value) => base$1.constrainedTypeKind.setTo(newType.newTypeKind.setTo(wrapValue.wrapValue(value), simplePropertyDefinition.name), constraintKindValue));
|
|
62
62
|
}
|
|
63
63
|
function unionPropertyDefinitionToDataParser(unionPropertyDefinition) {
|
package/dist/clean/entity.mjs
CHANGED
|
@@ -55,7 +55,7 @@ function createEntity(name, getPropertiesDefinition) {
|
|
|
55
55
|
return entityKind.addTo(properties, name);
|
|
56
56
|
}
|
|
57
57
|
function simplePropertyDefinitionToDataParser(simplePropertyDefinition) {
|
|
58
|
-
const constraintKindValue = pipe(simplePropertyDefinition.
|
|
58
|
+
const constraintKindValue = pipe(simplePropertyDefinition.constraints, map(({ name }) => entry(name, null)), fromEntries);
|
|
59
59
|
return transform(simplePropertyDefinition.dataParser, (value) => constrainedTypeKind.setTo(newTypeKind.setTo(wrapValue(value), simplePropertyDefinition.name), constraintKindValue));
|
|
60
60
|
}
|
|
61
61
|
function unionPropertyDefinitionToDataParser(unionPropertyDefinition) {
|
package/dist/clean/index.cjs
CHANGED
|
@@ -7,6 +7,7 @@ var repository = require('./repository.cjs');
|
|
|
7
7
|
var useCase = require('./useCase.cjs');
|
|
8
8
|
var flag = require('./flag.cjs');
|
|
9
9
|
var unwrapEntity = require('./unwrapEntity.cjs');
|
|
10
|
+
var maybe = require('./maybe.cjs');
|
|
10
11
|
var base = require('./constraint/base.cjs');
|
|
11
12
|
var number = require('./constraint/defaultConstraint/number.cjs');
|
|
12
13
|
var string = require('./constraint/defaultConstraint/string.cjs');
|
|
@@ -58,6 +59,8 @@ exports.useCaseInstances = useCase.useCaseInstances;
|
|
|
58
59
|
exports.createFlag = flag.createFlag;
|
|
59
60
|
exports.flagKind = flag.flagKind;
|
|
60
61
|
exports.unwrapEntity = unwrapEntity.unwrapEntity;
|
|
62
|
+
exports.none = maybe.none;
|
|
63
|
+
exports.some = maybe.some;
|
|
61
64
|
exports.CreateConstrainedTypeError = base.CreateConstrainedTypeError;
|
|
62
65
|
exports.constrainedTypeKind = base.constrainedTypeKind;
|
|
63
66
|
exports.constraintHandlerKind = base.constraintHandlerKind;
|
|
@@ -67,6 +70,7 @@ exports.Negative = number.Negative;
|
|
|
67
70
|
exports.NumberMax = number.NumberMax;
|
|
68
71
|
exports.NumberMin = number.NumberMin;
|
|
69
72
|
exports.Positive = number.Positive;
|
|
73
|
+
exports.PositiveInt = number.PositiveInt;
|
|
70
74
|
exports.Email = string.Email;
|
|
71
75
|
exports.StringMax = string.StringMax;
|
|
72
76
|
exports.StringMin = string.StringMin;
|
package/dist/clean/index.d.ts
CHANGED
package/dist/clean/index.mjs
CHANGED
|
@@ -5,8 +5,9 @@ export { createRepository, repositoryHandlerKind } from './repository.mjs';
|
|
|
5
5
|
export { createUseCase, useCaseHandlerKind, useCaseInstances } from './useCase.mjs';
|
|
6
6
|
export { createFlag, flagKind } from './flag.mjs';
|
|
7
7
|
export { unwrapEntity } from './unwrapEntity.mjs';
|
|
8
|
+
export { none, some } from './maybe.mjs';
|
|
8
9
|
export { CreateConstrainedTypeError, constrainedTypeKind, constraintHandlerKind, createConstraint } from './constraint/base.mjs';
|
|
9
|
-
export { Int, Negative, NumberMax, NumberMin, Positive } from './constraint/defaultConstraint/number.mjs';
|
|
10
|
+
export { Int, Negative, NumberMax, NumberMin, Positive, PositiveInt } from './constraint/defaultConstraint/number.mjs';
|
|
10
11
|
export { Email, StringMax, StringMin, Url } from './constraint/defaultConstraint/string.mjs';
|
|
11
12
|
export { CreateConstraintsSetError, constraintsSetHandlerKind, createConstraintsSet } from './constraint/set.mjs';
|
|
12
13
|
export { BigInt, Boolean, CreatePrimitiveError, Date, Number, String, Time, primitiveHandlerKind } from './primitive/base.mjs';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var entity = require('./entity.cjs');
|
|
4
|
+
var create = require('../either/right/create.cjs');
|
|
5
|
+
var create$1 = require('../either/left/create.cjs');
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* {@include clean/some/index.md}
|
|
9
|
+
*/
|
|
10
|
+
function some(entity$1) {
|
|
11
|
+
return create.right(`some-${entity.entityKind.getValue(entity$1)}`, entity$1);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* {@include clean/none/index.md}
|
|
15
|
+
*/
|
|
16
|
+
function none(entityName) {
|
|
17
|
+
return create$1.left(`none-${entityName}`, null);
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
exports.none = none;
|
|
21
|
+
exports.some = some;
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import * as DEither from "../either";
|
|
2
|
+
import { type Entity, entityKind } from "./entity";
|
|
3
|
+
import { type GetKindValue } from "../common";
|
|
4
|
+
export interface Some<GenericEntity extends Entity = Entity> extends DEither.Right<`some-${GetKindValue<typeof entityKind, GenericEntity>}`, GenericEntity> {
|
|
5
|
+
}
|
|
6
|
+
export interface None<GenericEntityName extends string = string> extends DEither.Left<`none-${GenericEntityName}`, null> {
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Union type that represents an optional entity in business flows.
|
|
10
|
+
*
|
|
11
|
+
* **Supported usage style:**
|
|
12
|
+
* - Type contract: `Maybe<Entity>`
|
|
13
|
+
*
|
|
14
|
+
* Use `Maybe` to define a business contract before implementation details. Then produce values with `some(entity)` when data exists, or `none(entityName)` when it does not.
|
|
15
|
+
*
|
|
16
|
+
* ```ts
|
|
17
|
+
* const UserId = C.createNewType("userId", DPE.number());
|
|
18
|
+
* const User = C.createEntity("User", () => ({
|
|
19
|
+
* id: UserId,
|
|
20
|
+
* }));
|
|
21
|
+
*
|
|
22
|
+
* type UserMaybe = C.Maybe<
|
|
23
|
+
* C.GetEntity<typeof User>
|
|
24
|
+
* >;
|
|
25
|
+
*
|
|
26
|
+
* const availableUser = User.new({
|
|
27
|
+
* id: UserId.createOrThrow(1 as number),
|
|
28
|
+
* });
|
|
29
|
+
*
|
|
30
|
+
* const foundUser: UserMaybe = C.some(availableUser);
|
|
31
|
+
* const missingUser: UserMaybe = C.none("User");
|
|
32
|
+
*
|
|
33
|
+
* type checkFound = ExpectType<
|
|
34
|
+
* typeof foundUser,
|
|
35
|
+
* C.Some<typeof availableUser>,
|
|
36
|
+
* "strict"
|
|
37
|
+
* >;
|
|
38
|
+
*
|
|
39
|
+
* type checkMissing = ExpectType<
|
|
40
|
+
* typeof missingUser,
|
|
41
|
+
* C.None<"User">,
|
|
42
|
+
* "strict"
|
|
43
|
+
* >;
|
|
44
|
+
* ```
|
|
45
|
+
*
|
|
46
|
+
* @remarks
|
|
47
|
+
* `Maybe` helps keep use-case signatures explicit: a function can return a typed optional entity without exposing null/undefined at the domain boundary.
|
|
48
|
+
*
|
|
49
|
+
* @see https://utils.duplojs.dev/en/v1/api/clean/maybe
|
|
50
|
+
*
|
|
51
|
+
* @namespace C
|
|
52
|
+
*
|
|
53
|
+
*/
|
|
54
|
+
export type Maybe<GenericEntity extends Entity = Entity> = (Some<GenericEntity> | None<GetKindValue<typeof entityKind, GenericEntity>>);
|
|
55
|
+
/**
|
|
56
|
+
* Constructor that creates a `Maybe` success branch from an entity.
|
|
57
|
+
*
|
|
58
|
+
* **Supported call styles:**
|
|
59
|
+
* - Classic: `some(entity)` -> returns `Some<Entity>`
|
|
60
|
+
* - Pipe-compatible: `pipe(entity, some)`
|
|
61
|
+
*
|
|
62
|
+
* Use `some` when the expected entity is available and must satisfy a `Maybe<Entity>` contract.
|
|
63
|
+
*
|
|
64
|
+
* ```ts
|
|
65
|
+
* const UserId = C.createNewType("userId", DPE.number());
|
|
66
|
+
* const User = C.createEntity("User", () => ({
|
|
67
|
+
* id: UserId,
|
|
68
|
+
* }));
|
|
69
|
+
*
|
|
70
|
+
* const firstUser = User.new({
|
|
71
|
+
* id: UserId.createOrThrow(1),
|
|
72
|
+
* });
|
|
73
|
+
* const firstMaybe = C.some(firstUser);
|
|
74
|
+
* // firstMaybe: C.Some<typeof firstUser>
|
|
75
|
+
*
|
|
76
|
+
* const secondUser = User.new({
|
|
77
|
+
* id: UserId.createOrThrow(2),
|
|
78
|
+
* });
|
|
79
|
+
* const secondMaybe = C.some(secondUser);
|
|
80
|
+
* // secondMaybe: C.Some<typeof secondUser>
|
|
81
|
+
*
|
|
82
|
+
* const pipedMaybe = pipe(
|
|
83
|
+
* firstUser,
|
|
84
|
+
* C.some,
|
|
85
|
+
* );
|
|
86
|
+
*
|
|
87
|
+
* type check = ExpectType<
|
|
88
|
+
* typeof pipedMaybe,
|
|
89
|
+
* C.Some<typeof firstUser>,
|
|
90
|
+
* "strict"
|
|
91
|
+
* >;
|
|
92
|
+
*
|
|
93
|
+
* ```
|
|
94
|
+
*
|
|
95
|
+
* @see https://utils.duplojs.dev/en/v1/api/clean/maybe
|
|
96
|
+
*
|
|
97
|
+
* @namespace C
|
|
98
|
+
*
|
|
99
|
+
*/
|
|
100
|
+
export declare function some<GenericEntity extends Entity>(entity: GenericEntity): Some<GenericEntity>;
|
|
101
|
+
/**
|
|
102
|
+
* Constructor that creates a `Maybe` empty branch from an entity name.
|
|
103
|
+
*
|
|
104
|
+
* **Supported call styles:**
|
|
105
|
+
* - Classic: `none(entityName)` -> returns `None<entityName>`
|
|
106
|
+
* - Pipe-compatible: `pipe(entityName, none)`
|
|
107
|
+
*
|
|
108
|
+
* Use `none` when an entity is absent but you still want to keep a precise business contract with `Maybe<Entity>`.
|
|
109
|
+
*
|
|
110
|
+
* ```ts
|
|
111
|
+
* const noUser = C.none("User");
|
|
112
|
+
* // noUser: C.None<"User">
|
|
113
|
+
*
|
|
114
|
+
* const noOrder = C.none("Order");
|
|
115
|
+
* // noOrder: C.None<"Order">
|
|
116
|
+
*
|
|
117
|
+
* const pipedNone = pipe(
|
|
118
|
+
* "Invoice",
|
|
119
|
+
* C.none,
|
|
120
|
+
* );
|
|
121
|
+
*
|
|
122
|
+
* type check = ExpectType<
|
|
123
|
+
* typeof pipedNone,
|
|
124
|
+
* C.None<"Invoice">,
|
|
125
|
+
* "strict"
|
|
126
|
+
* >;
|
|
127
|
+
*
|
|
128
|
+
* ```
|
|
129
|
+
*
|
|
130
|
+
* @see https://utils.duplojs.dev/en/v1/api/clean/maybe
|
|
131
|
+
*
|
|
132
|
+
* @namespace C
|
|
133
|
+
*
|
|
134
|
+
*/
|
|
135
|
+
export declare function none<GenericEntityName extends string>(entityName: GenericEntityName): None<GenericEntityName>;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { entityKind } from './entity.mjs';
|
|
2
|
+
import { right } from '../either/right/create.mjs';
|
|
3
|
+
import { left } from '../either/left/create.mjs';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* {@include clean/some/index.md}
|
|
7
|
+
*/
|
|
8
|
+
function some(entity) {
|
|
9
|
+
return right(`some-${entityKind.getValue(entity)}`, entity);
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* {@include clean/none/index.md}
|
|
13
|
+
*/
|
|
14
|
+
function none(entityName) {
|
|
15
|
+
return left(`none-${entityName}`, null);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
export { none, some };
|
package/dist/clean/newType.cjs
CHANGED
package/dist/clean/newType.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export interface NewTypeHandler<GenericName extends string = string, GenericValu
|
|
|
25
25
|
* The list of constraints applied to this NewType.
|
|
26
26
|
*
|
|
27
27
|
*/
|
|
28
|
-
readonly
|
|
28
|
+
readonly constraints: GenericConstraintsHandler;
|
|
29
29
|
/**
|
|
30
30
|
* Creates a NewType value and returns an Either.
|
|
31
31
|
*
|
|
@@ -154,5 +154,5 @@ export declare function createNewType<GenericName extends string, GenericDataPar
|
|
|
154
154
|
export declare namespace createNewType {
|
|
155
155
|
var overrideHandler: import("..").OverrideHandler<NewTypeHandler<string, unknown, readonly []>>;
|
|
156
156
|
}
|
|
157
|
-
export type GetNewType<GenericHandler extends NewTypeHandler<string, unknown, readonly any[]>> = Extract<GenericHandler extends any ? NewType<GenericHandler["name"], DDataParser.Output<GenericHandler["dataParser"]>, GenericHandler["
|
|
157
|
+
export type GetNewType<GenericHandler extends NewTypeHandler<string, unknown, readonly any[]>> = Extract<GenericHandler extends any ? NewType<GenericHandler["name"], DDataParser.Output<GenericHandler["dataParser"]>, GenericHandler["constraints"][number]["name"]> : never, any>;
|
|
158
158
|
export {};
|
package/dist/clean/newType.mjs
CHANGED
|
@@ -239,8 +239,8 @@ export interface DataParser<GenericDefinition extends DataParserDefinition = Dat
|
|
|
239
239
|
isAsynchronous(): boolean;
|
|
240
240
|
}
|
|
241
241
|
interface DataParserInitExecParams<GenericDataParser extends DataParser> {
|
|
242
|
-
sync(...args: [...Parameters<GenericDataParser["exec"]>, self: GenericDataParser]): (GetKindValue<typeof dataParserKind, GenericDataParser>["output"] | SymbolDataParserErrorIssue | SymbolDataParserErrorPromiseIssue);
|
|
243
|
-
async(...args: [...Parameters<GenericDataParser["exec"]>, self: GenericDataParser]): Promise<GetKindValue<typeof dataParserKind, GenericDataParser>["output"] | SymbolDataParserErrorIssue | SymbolDataParserErrorPromiseIssue>;
|
|
242
|
+
sync(...args: [...Parameters<GenericDataParser["exec"]>, self: GenericDataParser]): (GetKindValue<typeof dataParserKind, GenericDataParser>["output"] | SymbolDataParserError | SymbolDataParserErrorIssue | SymbolDataParserErrorPromiseIssue);
|
|
243
|
+
async(...args: [...Parameters<GenericDataParser["exec"]>, self: GenericDataParser]): Promise<GetKindValue<typeof dataParserKind, GenericDataParser>["output"] | SymbolDataParserError | SymbolDataParserErrorIssue | SymbolDataParserErrorPromiseIssue>;
|
|
244
244
|
isAsynchronous(self: GenericDataParser): boolean;
|
|
245
245
|
}
|
|
246
246
|
declare const DataParserThrowError_base: new (params: {
|
package/dist/metadata.json
CHANGED