@duplojs/utils 1.4.52 → 1.4.54

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.
Files changed (83) hide show
  1. package/dist/clean/constraint/base.cjs +5 -2
  2. package/dist/clean/constraint/base.d.ts +3 -0
  3. package/dist/clean/constraint/base.mjs +5 -2
  4. package/dist/clean/constraint/defaultConstraint/number.cjs +8 -0
  5. package/dist/clean/constraint/defaultConstraint/number.d.ts +29 -0
  6. package/dist/clean/constraint/defaultConstraint/number.mjs +8 -1
  7. package/dist/clean/constraint/set.cjs +5 -3
  8. package/dist/clean/constraint/set.d.ts +4 -1
  9. package/dist/clean/constraint/set.mjs +5 -3
  10. package/dist/clean/entity.cjs +5 -3
  11. package/dist/clean/entity.d.ts +3 -0
  12. package/dist/clean/entity.mjs +5 -3
  13. package/dist/clean/flag.cjs +5 -2
  14. package/dist/clean/flag.d.ts +3 -0
  15. package/dist/clean/flag.mjs +5 -2
  16. package/dist/clean/index.cjs +4 -0
  17. package/dist/clean/index.d.ts +1 -0
  18. package/dist/clean/index.mjs +2 -1
  19. package/dist/clean/maybe.cjs +21 -0
  20. package/dist/clean/maybe.d.ts +135 -0
  21. package/dist/clean/maybe.mjs +18 -0
  22. package/dist/clean/newType.cjs +5 -3
  23. package/dist/clean/newType.d.ts +3 -0
  24. package/dist/clean/newType.mjs +5 -3
  25. package/dist/clean/primitive/base.cjs +5 -2
  26. package/dist/clean/primitive/base.mjs +5 -2
  27. package/dist/clean/repository.cjs +5 -2
  28. package/dist/clean/repository.d.ts +3 -0
  29. package/dist/clean/repository.mjs +5 -2
  30. package/dist/clean/useCase.cjs +10 -5
  31. package/dist/clean/useCase.d.ts +14 -7
  32. package/dist/clean/useCase.mjs +10 -5
  33. package/dist/dataParser/base.d.ts +2 -2
  34. package/dist/dataParser/baseExtended.cjs +5 -5
  35. package/dist/dataParser/baseExtended.d.ts +3 -3
  36. package/dist/dataParser/baseExtended.mjs +5 -5
  37. package/dist/dataParser/extended/array.cjs +2 -2
  38. package/dist/dataParser/extended/array.mjs +2 -2
  39. package/dist/dataParser/extended/bigint.cjs +2 -2
  40. package/dist/dataParser/extended/bigint.mjs +2 -2
  41. package/dist/dataParser/extended/boolean.cjs +2 -2
  42. package/dist/dataParser/extended/boolean.mjs +2 -2
  43. package/dist/dataParser/extended/date.cjs +2 -2
  44. package/dist/dataParser/extended/date.mjs +2 -2
  45. package/dist/dataParser/extended/empty.cjs +2 -2
  46. package/dist/dataParser/extended/empty.mjs +2 -2
  47. package/dist/dataParser/extended/lazy.cjs +2 -2
  48. package/dist/dataParser/extended/lazy.mjs +2 -2
  49. package/dist/dataParser/extended/literal.cjs +2 -2
  50. package/dist/dataParser/extended/literal.mjs +2 -2
  51. package/dist/dataParser/extended/nil.cjs +2 -2
  52. package/dist/dataParser/extended/nil.mjs +2 -2
  53. package/dist/dataParser/extended/nullable.cjs +2 -2
  54. package/dist/dataParser/extended/nullable.mjs +2 -2
  55. package/dist/dataParser/extended/number.cjs +2 -2
  56. package/dist/dataParser/extended/number.mjs +2 -2
  57. package/dist/dataParser/extended/object.cjs +2 -2
  58. package/dist/dataParser/extended/object.mjs +2 -2
  59. package/dist/dataParser/extended/optional.cjs +2 -2
  60. package/dist/dataParser/extended/optional.mjs +2 -2
  61. package/dist/dataParser/extended/pipe.cjs +2 -2
  62. package/dist/dataParser/extended/pipe.mjs +2 -2
  63. package/dist/dataParser/extended/record.cjs +2 -2
  64. package/dist/dataParser/extended/record.mjs +2 -2
  65. package/dist/dataParser/extended/recover.cjs +2 -2
  66. package/dist/dataParser/extended/recover.mjs +2 -2
  67. package/dist/dataParser/extended/string.cjs +2 -2
  68. package/dist/dataParser/extended/string.mjs +2 -2
  69. package/dist/dataParser/extended/templateLiteral.cjs +2 -2
  70. package/dist/dataParser/extended/templateLiteral.mjs +2 -2
  71. package/dist/dataParser/extended/time.cjs +2 -2
  72. package/dist/dataParser/extended/time.mjs +2 -2
  73. package/dist/dataParser/extended/transform.cjs +2 -2
  74. package/dist/dataParser/extended/transform.mjs +2 -2
  75. package/dist/dataParser/extended/tuple.cjs +2 -2
  76. package/dist/dataParser/extended/tuple.mjs +2 -2
  77. package/dist/dataParser/extended/union.cjs +2 -2
  78. package/dist/dataParser/extended/union.mjs +2 -2
  79. package/dist/dataParser/extended/unknown.cjs +2 -2
  80. package/dist/dataParser/extended/unknown.mjs +2 -2
  81. package/dist/metadata.json +9 -0
  82. package/dist/string/types/forbiddenString.d.ts +1 -2
  83. package/package.json +1 -1
@@ -3,7 +3,9 @@
3
3
  var kind = require('../kind.cjs');
4
4
  var kind$1 = require('../../common/kind.cjs');
5
5
  var coalescing = require('../../array/coalescing.cjs');
6
+ var pipe = require('../../common/pipe.cjs');
6
7
  var errorKindNamespace = require('../../common/errorKindNamespace.cjs');
8
+ var override = require('../../common/override.cjs');
7
9
  var is = require('../../either/left/is.cjs');
8
10
  var unwrap = require('../../common/unwrap.cjs');
9
11
  var create = require('../../either/left/create.cjs');
@@ -62,7 +64,7 @@ function createConstraint(name, primitiveHandler, checker) {
62
64
  }
63
65
  return false;
64
66
  }
65
- return constraintHandlerKind.setTo({
67
+ return pipe.pipe({
66
68
  name,
67
69
  primitiveHandler,
68
70
  checkers,
@@ -71,8 +73,9 @@ function createConstraint(name, primitiveHandler, checker) {
71
73
  createWithUnknown: create$2,
72
74
  createWithUnknownOrThrow: createOrThrow,
73
75
  is: is$1,
74
- });
76
+ }, constraintHandlerKind.setTo, createConstraint.overrideHandler.apply);
75
77
  }
78
+ createConstraint.overrideHandler = override.createOverride("@duplojs/utils/clean/constraint");
76
79
 
77
80
  exports.CreateConstrainedTypeError = CreateConstrainedTypeError;
78
81
  exports.constrainedTypeKind = constrainedTypeKind;
@@ -138,5 +138,8 @@ export declare function createConstraint<GenericName extends string, GenericPrim
138
138
  DDataParser.DataParserChecker<DDataParser.DataParserCheckerDefinition, GenericPrimitiveValue>,
139
139
  ...DDataParser.DataParserChecker<DDataParser.DataParserCheckerDefinition, GenericPrimitiveValue>[]
140
140
  ]) = never>(name: GenericName, primitiveHandler: PrimitiveHandler<GenericPrimitiveValue>, checker: GenericChecker): ConstraintHandler<GenericName, GenericPrimitiveValue, DArray.ArrayCoalescing<GenericChecker>>;
141
+ export declare namespace createConstraint {
142
+ var overrideHandler: import("../..").OverrideHandler<ConstraintHandler<string, EligiblePrimitive, readonly DDataParser.DataParserChecker<DDataParser.DataParserCheckerDefinition, unknown>[]>>;
143
+ }
141
144
  export type GetConstraint<GenericConstrainHandler extends ConstraintHandler, GenericValue extends DDataParser.InputChecker<GenericConstrainHandler["checkers"][number]> = DDataParser.InputChecker<GenericConstrainHandler["checkers"][number]>> = Extract<ConstrainedType<GenericConstrainHandler["name"], GenericValue>, any>;
142
145
  export {};
@@ -1,7 +1,9 @@
1
1
  import { createCleanKind } from '../kind.mjs';
2
2
  import { kindHeritage } from '../../common/kind.mjs';
3
3
  import { coalescing } from '../../array/coalescing.mjs';
4
+ import { pipe } from '../../common/pipe.mjs';
4
5
  import { createErrorKind } from '../../common/errorKindNamespace.mjs';
6
+ import { createOverride } from '../../common/override.mjs';
5
7
  import { isLeft } from '../../either/left/is.mjs';
6
8
  import { unwrap } from '../../common/unwrap.mjs';
7
9
  import { left } from '../../either/left/create.mjs';
@@ -60,7 +62,7 @@ function createConstraint(name, primitiveHandler, checker) {
60
62
  }
61
63
  return false;
62
64
  }
63
- return constraintHandlerKind.setTo({
65
+ return pipe({
64
66
  name,
65
67
  primitiveHandler,
66
68
  checkers,
@@ -69,7 +71,8 @@ function createConstraint(name, primitiveHandler, checker) {
69
71
  createWithUnknown: create,
70
72
  createWithUnknownOrThrow: createOrThrow,
71
73
  is,
72
- });
74
+ }, constraintHandlerKind.setTo, createConstraint.overrideHandler.apply);
73
75
  }
76
+ createConstraint.overrideHandler = createOverride("@duplojs/utils/clean/constraint");
74
77
 
75
78
  export { CreateConstrainedTypeError, constrainedTypeKind, constraintHandlerKind, createConstraint };
@@ -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 };
@@ -9,12 +9,13 @@ var pipe = require('../../common/pipe.cjs');
9
9
  var map = require('../../array/map.cjs');
10
10
  var entry = require('../../object/entry.cjs');
11
11
  var errorKindNamespace = require('../../common/errorKindNamespace.cjs');
12
+ var fromEntries = require('../../object/fromEntries.cjs');
13
+ var override = require('../../common/override.cjs');
12
14
  var is = require('../../either/left/is.cjs');
13
15
  var unwrap = require('../../common/unwrap.cjs');
14
16
  var create = require('../../either/left/create.cjs');
15
17
  var create$1 = require('../../either/right/create.cjs');
16
18
  var wrapValue = require('../../common/wrapValue.cjs');
17
- var fromEntries = require('../../object/fromEntries.cjs');
18
19
 
19
20
  const constraintsSetHandlerKind = kind.createCleanKind("constraints-set-handler");
20
21
  class CreateConstraintsSetError extends kind$1.kindHeritage("create-constraint-set-error", errorKindNamespace.createErrorKind("create-constraint-set-error"), Error) {
@@ -76,7 +77,7 @@ function createConstraintsSet(primitiveHandler, constraint) {
76
77
  }
77
78
  return true;
78
79
  }
79
- return constraintsSetHandlerKind.setTo({
80
+ return pipe.pipe({
80
81
  primitiveHandler,
81
82
  constrains: constraints,
82
83
  getConstraint,
@@ -85,8 +86,9 @@ function createConstraintsSet(primitiveHandler, constraint) {
85
86
  createWithUnknown: create$2,
86
87
  createWithUnknownOrThrow: createOrThrow,
87
88
  is: is$1,
88
- });
89
+ }, constraintsSetHandlerKind.setTo, createConstraintsSet.overrideHandler.apply);
89
90
  }
91
+ createConstraintsSet.overrideHandler = override.createOverride("@duplojs/utils/clean/constraints-set");
90
92
 
91
93
  exports.CreateConstraintsSetError = CreateConstraintsSetError;
92
94
  exports.constraintsSetHandlerKind = constraintsSetHandlerKind;
@@ -140,5 +140,8 @@ export declare function createConstraintsSet<GenericPrimitiveValue extends Eligi
140
140
  ConstraintHandler<string, EligiblePrimitive, readonly DDataParser.DataParserChecker<DDataParser.DataParserCheckerDefinition, GenericPrimitiveValue>[]>,
141
141
  ...ConstraintHandler<string, EligiblePrimitive, readonly DDataParser.DataParserChecker<DDataParser.DataParserCheckerDefinition, GenericPrimitiveValue>[]>[]
142
142
  ]) = never>(primitiveHandler: PrimitiveHandler<GenericPrimitiveValue>, constraint: GenericConstrainHandler): ConstraintsSetHandler<GenericPrimitiveValue, DArray.ArrayCoalescing<GenericConstrainHandler>>;
143
- export type GetConstraints<GenericHandler extends ConstraintsSetHandler<string, readonly any[]>> = Extract<GenericHandler extends any ? UnionToIntersection<GenericHandler["constrains"][number] extends infer InferredConstraint ? InferredConstraint extends ConstraintHandler ? GetConstraint<InferredConstraint> : never : never> : never, any>;
143
+ export declare namespace createConstraintsSet {
144
+ var overrideHandler: import("../..").OverrideHandler<ConstraintsSetHandler<EligiblePrimitive, readonly []>>;
145
+ }
146
+ export type GetConstraints<GenericHandler extends ConstraintsSetHandler<EligiblePrimitive, readonly any[]>> = Extract<GenericHandler extends any ? UnionToIntersection<GenericHandler["constrains"][number] extends infer InferredConstraint ? InferredConstraint extends ConstraintHandler ? GetConstraint<InferredConstraint> : never : never> : never, any>;
144
147
  export {};
@@ -7,12 +7,13 @@ import { pipe } from '../../common/pipe.mjs';
7
7
  import { map } from '../../array/map.mjs';
8
8
  import { entry } from '../../object/entry.mjs';
9
9
  import { createErrorKind } from '../../common/errorKindNamespace.mjs';
10
+ import { fromEntries } from '../../object/fromEntries.mjs';
11
+ import { createOverride } from '../../common/override.mjs';
10
12
  import { isLeft } from '../../either/left/is.mjs';
11
13
  import { unwrap } from '../../common/unwrap.mjs';
12
14
  import { left } from '../../either/left/create.mjs';
13
15
  import { right } from '../../either/right/create.mjs';
14
16
  import { wrapValue } from '../../common/wrapValue.mjs';
15
- import { fromEntries } from '../../object/fromEntries.mjs';
16
17
 
17
18
  const constraintsSetHandlerKind = createCleanKind("constraints-set-handler");
18
19
  class CreateConstraintsSetError extends kindHeritage("create-constraint-set-error", createErrorKind("create-constraint-set-error"), Error) {
@@ -74,7 +75,7 @@ function createConstraintsSet(primitiveHandler, constraint) {
74
75
  }
75
76
  return true;
76
77
  }
77
- return constraintsSetHandlerKind.setTo({
78
+ return pipe({
78
79
  primitiveHandler,
79
80
  constrains: constraints,
80
81
  getConstraint,
@@ -83,7 +84,8 @@ function createConstraintsSet(primitiveHandler, constraint) {
83
84
  createWithUnknown: create,
84
85
  createWithUnknownOrThrow: createOrThrow,
85
86
  is,
86
- });
87
+ }, constraintsSetHandlerKind.setTo, createConstraintsSet.overrideHandler.apply);
87
88
  }
89
+ createConstraintsSet.overrideHandler = createOverride("@duplojs/utils/clean/constraints-set");
88
90
 
89
91
  export { CreateConstraintsSetError, constraintsSetHandlerKind, createConstraintsSet };
@@ -31,11 +31,12 @@ var otherwise = require('../pattern/otherwise.cjs');
31
31
  var justReturn = require('../common/justReturn.cjs');
32
32
  var union = require('../dataParser/parsers/union.cjs');
33
33
  var minElements = require('../array/minElements.cjs');
34
+ var index$1 = require('../dataParser/parsers/object/index.cjs');
35
+ var override = require('../common/override.cjs');
34
36
  var is = require('../either/left/is.cjs');
35
37
  var unwrap = require('../common/unwrap.cjs');
36
38
  var create = require('../either/left/create.cjs');
37
39
  var create$1 = require('../either/right/create.cjs');
38
- var index$1 = require('../dataParser/parsers/object/index.cjs');
39
40
 
40
41
  const entityKind = kind.createCleanKind("entity");
41
42
  const entityHandlerKind = kind.createCleanKind("entity-handler");
@@ -125,7 +126,7 @@ function createEntity(name, getPropertiesDefinition) {
125
126
  }
126
127
  return entityKind.setTo(updatedEntity, name);
127
128
  }
128
- return entityHandlerKind.setTo({
129
+ return pipe.pipe({
129
130
  name,
130
131
  propertiesDefinition,
131
132
  mapDataParser,
@@ -134,8 +135,9 @@ function createEntity(name, getPropertiesDefinition) {
134
135
  mapOrThrow,
135
136
  is: is$1,
136
137
  update,
137
- });
138
+ }, entityHandlerKind.setTo, createEntity.overrideHandler.apply);
138
139
  }
140
+ createEntity.overrideHandler = override.createOverride("@duplojs/utils/clean/entity");
139
141
 
140
142
  exports.CreateEntityError = CreateEntityError;
141
143
  exports.createEntity = createEntity;
@@ -224,5 +224,8 @@ export interface PropertiesDefinitionParams {
224
224
  *
225
225
  */
226
226
  export declare function createEntity<GenericName extends string, const GenericPropertiesDefinition extends EntityPropertiesDefinition>(name: GenericName, getPropertiesDefinition: (params: PropertiesDefinitionParams) => GenericPropertiesDefinition & DObject.ForbiddenKey<GenericPropertiesDefinition, "_entityName" | "_flags">): EntityHandler<GenericName, GenericPropertiesDefinition>;
227
+ export declare namespace createEntity {
228
+ var overrideHandler: import("../common").OverrideHandler<EntityHandler<string, Readonly<Record<string, EntityPropertyDefinition>>>>;
229
+ }
227
230
  export type GetEntity<GenericEntityHandler extends EntityHandler<string, any>> = Extract<ReturnType<GenericEntityHandler["new"]>, any>;
228
231
  export {};
@@ -29,11 +29,12 @@ import { otherwise } from '../pattern/otherwise.mjs';
29
29
  import { justReturn } from '../common/justReturn.mjs';
30
30
  import { union } from '../dataParser/parsers/union.mjs';
31
31
  import { minElements } from '../array/minElements.mjs';
32
+ import { object } from '../dataParser/parsers/object/index.mjs';
33
+ import { createOverride } from '../common/override.mjs';
32
34
  import { isLeft } from '../either/left/is.mjs';
33
35
  import { unwrap } from '../common/unwrap.mjs';
34
36
  import { left } from '../either/left/create.mjs';
35
37
  import { right } from '../either/right/create.mjs';
36
- import { object } from '../dataParser/parsers/object/index.mjs';
37
38
 
38
39
  const entityKind = createCleanKind("entity");
39
40
  const entityHandlerKind = createCleanKind("entity-handler");
@@ -123,7 +124,7 @@ function createEntity(name, getPropertiesDefinition) {
123
124
  }
124
125
  return entityKind.setTo(updatedEntity, name);
125
126
  }
126
- return entityHandlerKind.setTo({
127
+ return pipe({
127
128
  name,
128
129
  propertiesDefinition,
129
130
  mapDataParser,
@@ -132,7 +133,8 @@ function createEntity(name, getPropertiesDefinition) {
132
133
  mapOrThrow,
133
134
  is,
134
135
  update,
135
- });
136
+ }, entityHandlerKind.setTo, createEntity.overrideHandler.apply);
136
137
  }
138
+ createEntity.overrideHandler = createOverride("@duplojs/utils/clean/entity");
137
139
 
138
140
  export { CreateEntityError, createEntity, entityKind };
@@ -1,6 +1,8 @@
1
1
  'use strict';
2
2
 
3
3
  var kind = require('./kind.cjs');
4
+ var pipe = require('../common/pipe.cjs');
5
+ var override = require('../common/override.cjs');
4
6
 
5
7
  const flagHandlerKind = kind.createCleanKind("flag-handler");
6
8
  const flagKind = kind.createCleanKind("flag");
@@ -8,7 +10,7 @@ const flagKind = kind.createCleanKind("flag");
8
10
  * {@include clean/createFlag/index.md}
9
11
  */
10
12
  function createFlag(name) {
11
- return flagHandlerKind.setTo({
13
+ return pipe.pipe({
12
14
  name,
13
15
  append(entity, value) {
14
16
  const flagValue = flagKind.has(entity)
@@ -26,8 +28,9 @@ function createFlag(name) {
26
28
  return flagKind.has(entity)
27
29
  && name in flagKind.getValue(entity);
28
30
  },
29
- });
31
+ }, flagHandlerKind.setTo, createFlag.overrideHandler.apply);
30
32
  }
33
+ createFlag.overrideHandler = override.createOverride("@duplojs/utils/clean/flag");
31
34
 
32
35
  exports.createFlag = createFlag;
33
36
  exports.flagKind = flagKind;
@@ -110,5 +110,8 @@ export declare function createFlag<GenericEntity extends Entity = never, Generic
110
110
  IsEqual<GenericEntity, never>,
111
111
  IsEqual<GenericName, never>
112
112
  ]> extends true ? never : NoInfer<GenericName>): FlagHandler<GenericEntity, GenericName, GenericValue>;
113
+ export declare namespace createFlag {
114
+ var overrideHandler: import("../common").OverrideHandler<FlagHandler<Entity<string>, string, never>>;
115
+ }
113
116
  export type GetFlag<GenericHandler extends FlagHandler<any, any, any>> = Extract<Flag<GenericHandler["name"], ReturnType<GenericHandler["getValue"]>>, any>;
114
117
  export {};
@@ -1,4 +1,6 @@
1
1
  import { createCleanKind } from './kind.mjs';
2
+ import { pipe } from '../common/pipe.mjs';
3
+ import { createOverride } from '../common/override.mjs';
2
4
 
3
5
  const flagHandlerKind = createCleanKind("flag-handler");
4
6
  const flagKind = createCleanKind("flag");
@@ -6,7 +8,7 @@ const flagKind = createCleanKind("flag");
6
8
  * {@include clean/createFlag/index.md}
7
9
  */
8
10
  function createFlag(name) {
9
- return flagHandlerKind.setTo({
11
+ return pipe({
10
12
  name,
11
13
  append(entity, value) {
12
14
  const flagValue = flagKind.has(entity)
@@ -24,7 +26,8 @@ function createFlag(name) {
24
26
  return flagKind.has(entity)
25
27
  && name in flagKind.getValue(entity);
26
28
  },
27
- });
29
+ }, flagHandlerKind.setTo, createFlag.overrideHandler.apply);
28
30
  }
31
+ createFlag.overrideHandler = createOverride("@duplojs/utils/clean/flag");
29
32
 
30
33
  export { createFlag, flagKind };
@@ -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;
@@ -33,3 +33,4 @@ export * from "./repository";
33
33
  export * from "./useCase";
34
34
  export * from "./flag";
35
35
  export * from "./unwrapEntity";
36
+ export * from "./maybe";
@@ -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 };
@@ -8,13 +8,14 @@ var pipe = require('../common/pipe.cjs');
8
8
  var map = require('../array/map.cjs');
9
9
  var entry = require('../object/entry.cjs');
10
10
  var errorKindNamespace = require('../common/errorKindNamespace.cjs');
11
+ var fromEntries = require('../object/fromEntries.cjs');
12
+ var override = require('../common/override.cjs');
11
13
  var is = require('../either/left/is.cjs');
12
14
  var unwrap = require('../common/unwrap.cjs');
13
15
  var create = require('../either/left/create.cjs');
14
16
  var base = require('./constraint/base.cjs');
15
17
  var create$1 = require('../either/right/create.cjs');
16
18
  var wrapValue = require('../common/wrapValue.cjs');
17
- var fromEntries = require('../object/fromEntries.cjs');
18
19
 
19
20
  const newTypeKind = kind.createCleanKind("new-type");
20
21
  const newTypeHandlerKind = kind.createCleanKind("new-type-handler");
@@ -80,7 +81,7 @@ function createNewType(name, dataParser, constraint) {
80
81
  }
81
82
  return true;
82
83
  }
83
- return newTypeHandlerKind.setTo({
84
+ return pipe.pipe({
84
85
  name,
85
86
  dataParser: dataParserWithCheckers,
86
87
  constrains: constraints,
@@ -90,8 +91,9 @@ function createNewType(name, dataParser, constraint) {
90
91
  createWithUnknown: create$2,
91
92
  createWithUnknownOrThrow: createOrThrow,
92
93
  is: is$1,
93
- });
94
+ }, newTypeHandlerKind.setTo, createNewType.overrideHandler.apply);
94
95
  }
96
+ createNewType.overrideHandler = override.createOverride("@duplojs/utils/clean/new-type");
95
97
 
96
98
  exports.CreateNewTypeError = CreateNewTypeError;
97
99
  exports.createNewType = createNewType;
@@ -151,5 +151,8 @@ export declare function createNewType<GenericName extends string, GenericDataPar
151
151
  ConstraintHandler<string, EligiblePrimitive, readonly DDataParser.DataParserChecker<DDataParser.DataParserCheckerDefinition, DDataParser.Output<GenericDataParser>>[]>,
152
152
  ...ConstraintHandler<string, EligiblePrimitive, readonly DDataParser.DataParserChecker<DDataParser.DataParserCheckerDefinition, DDataParser.Output<GenericDataParser>>[]>[]
153
153
  ]) = never>(name: GenericName, dataParser: GenericDataParser & DataParserContainTransform<GenericDataParser>, constraint?: GenericConstraintsHandler): NewTypeHandler<GenericName, DeepReadonly<DDataParser.Output<GenericDataParser>>, DArray.ArrayCoalescing<NeverCoalescing<GenericConstraintsHandler, readonly []>>>;
154
+ export declare namespace createNewType {
155
+ var overrideHandler: import("..").OverrideHandler<NewTypeHandler<string, unknown, readonly []>>;
156
+ }
154
157
  export type GetNewType<GenericHandler extends NewTypeHandler<string, unknown, readonly any[]>> = Extract<GenericHandler extends any ? NewType<GenericHandler["name"], DDataParser.Output<GenericHandler["dataParser"]>, GenericHandler["constrains"][number]["name"]> : never, any>;
155
158
  export {};