@duplojs/utils 1.4.51 → 1.4.53

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 (82) 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 +14 -0
  5. package/dist/clean/constraint/defaultConstraint/number.d.ts +61 -0
  6. package/dist/clean/constraint/defaultConstraint/number.mjs +13 -1
  7. package/dist/clean/constraint/defaultConstraint/string.cjs +16 -0
  8. package/dist/clean/constraint/defaultConstraint/string.d.ts +61 -0
  9. package/dist/clean/constraint/defaultConstraint/string.mjs +15 -1
  10. package/dist/clean/constraint/index.d.ts +1 -0
  11. package/dist/clean/constraint/set.cjs +95 -0
  12. package/dist/clean/constraint/set.d.ts +147 -0
  13. package/dist/clean/constraint/set.mjs +91 -0
  14. package/dist/clean/entity.cjs +5 -3
  15. package/dist/clean/entity.d.ts +3 -0
  16. package/dist/clean/entity.mjs +5 -3
  17. package/dist/clean/flag.cjs +5 -2
  18. package/dist/clean/flag.d.ts +3 -0
  19. package/dist/clean/flag.mjs +5 -2
  20. package/dist/clean/index.cjs +8 -0
  21. package/dist/clean/index.mjs +3 -2
  22. package/dist/clean/newType.cjs +17 -10
  23. package/dist/clean/newType.d.ts +26 -13
  24. package/dist/clean/newType.mjs +17 -10
  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/baseExtended.cjs +5 -5
  34. package/dist/dataParser/baseExtended.d.ts +3 -3
  35. package/dist/dataParser/baseExtended.mjs +5 -5
  36. package/dist/dataParser/extended/array.cjs +2 -2
  37. package/dist/dataParser/extended/array.mjs +2 -2
  38. package/dist/dataParser/extended/bigint.cjs +2 -2
  39. package/dist/dataParser/extended/bigint.mjs +2 -2
  40. package/dist/dataParser/extended/boolean.cjs +2 -2
  41. package/dist/dataParser/extended/boolean.mjs +2 -2
  42. package/dist/dataParser/extended/date.cjs +2 -2
  43. package/dist/dataParser/extended/date.mjs +2 -2
  44. package/dist/dataParser/extended/empty.cjs +2 -2
  45. package/dist/dataParser/extended/empty.mjs +2 -2
  46. package/dist/dataParser/extended/lazy.cjs +2 -2
  47. package/dist/dataParser/extended/lazy.mjs +2 -2
  48. package/dist/dataParser/extended/literal.cjs +2 -2
  49. package/dist/dataParser/extended/literal.mjs +2 -2
  50. package/dist/dataParser/extended/nil.cjs +2 -2
  51. package/dist/dataParser/extended/nil.mjs +2 -2
  52. package/dist/dataParser/extended/nullable.cjs +2 -2
  53. package/dist/dataParser/extended/nullable.mjs +2 -2
  54. package/dist/dataParser/extended/number.cjs +2 -2
  55. package/dist/dataParser/extended/number.mjs +2 -2
  56. package/dist/dataParser/extended/object.cjs +2 -2
  57. package/dist/dataParser/extended/object.mjs +2 -2
  58. package/dist/dataParser/extended/optional.cjs +2 -2
  59. package/dist/dataParser/extended/optional.mjs +2 -2
  60. package/dist/dataParser/extended/pipe.cjs +2 -2
  61. package/dist/dataParser/extended/pipe.mjs +2 -2
  62. package/dist/dataParser/extended/record.cjs +2 -2
  63. package/dist/dataParser/extended/record.mjs +2 -2
  64. package/dist/dataParser/extended/recover.cjs +2 -2
  65. package/dist/dataParser/extended/recover.mjs +2 -2
  66. package/dist/dataParser/extended/string.cjs +2 -2
  67. package/dist/dataParser/extended/string.mjs +2 -2
  68. package/dist/dataParser/extended/templateLiteral.cjs +2 -2
  69. package/dist/dataParser/extended/templateLiteral.mjs +2 -2
  70. package/dist/dataParser/extended/time.cjs +2 -2
  71. package/dist/dataParser/extended/time.mjs +2 -2
  72. package/dist/dataParser/extended/transform.cjs +2 -2
  73. package/dist/dataParser/extended/transform.mjs +2 -2
  74. package/dist/dataParser/extended/tuple.cjs +2 -2
  75. package/dist/dataParser/extended/tuple.mjs +2 -2
  76. package/dist/dataParser/extended/union.cjs +2 -2
  77. package/dist/dataParser/extended/union.mjs +2 -2
  78. package/dist/dataParser/extended/unknown.cjs +2 -2
  79. package/dist/dataParser/extended/unknown.mjs +2 -2
  80. package/dist/metadata.json +9 -0
  81. package/dist/string/types/forbiddenString.d.ts +1 -2
  82. package/package.json +1 -1
@@ -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 };
@@ -10,6 +10,7 @@ var unwrapEntity = require('./unwrapEntity.cjs');
10
10
  var base = require('./constraint/base.cjs');
11
11
  var number = require('./constraint/defaultConstraint/number.cjs');
12
12
  var string = require('./constraint/defaultConstraint/string.cjs');
13
+ var set = require('./constraint/set.cjs');
13
14
  var base$1 = require('./primitive/base.cjs');
14
15
  var equal = require('./primitive/operations/equal.cjs');
15
16
  var add = require('./primitive/operations/number/add.cjs');
@@ -63,9 +64,16 @@ exports.constraintHandlerKind = base.constraintHandlerKind;
63
64
  exports.createConstraint = base.createConstraint;
64
65
  exports.Int = number.Int;
65
66
  exports.Negative = number.Negative;
67
+ exports.NumberMax = number.NumberMax;
68
+ exports.NumberMin = number.NumberMin;
66
69
  exports.Positive = number.Positive;
67
70
  exports.Email = string.Email;
71
+ exports.StringMax = string.StringMax;
72
+ exports.StringMin = string.StringMin;
68
73
  exports.Url = string.Url;
74
+ exports.CreateConstraintsSetError = set.CreateConstraintsSetError;
75
+ exports.constraintsSetHandlerKind = set.constraintsSetHandlerKind;
76
+ exports.createConstraintsSet = set.createConstraintsSet;
69
77
  exports.BigInt = base$1.BigInt;
70
78
  exports.Boolean = base$1.Boolean;
71
79
  exports.CreatePrimitiveError = base$1.CreatePrimitiveError;
@@ -6,8 +6,9 @@ export { createUseCase, useCaseHandlerKind, useCaseInstances } from './useCase.m
6
6
  export { createFlag, flagKind } from './flag.mjs';
7
7
  export { unwrapEntity } from './unwrapEntity.mjs';
8
8
  export { CreateConstrainedTypeError, constrainedTypeKind, constraintHandlerKind, createConstraint } from './constraint/base.mjs';
9
- export { Int, Negative, Positive } from './constraint/defaultConstraint/number.mjs';
10
- export { Email, Url } from './constraint/defaultConstraint/string.mjs';
9
+ export { Int, Negative, NumberMax, NumberMin, Positive } from './constraint/defaultConstraint/number.mjs';
10
+ export { Email, StringMax, StringMin, Url } from './constraint/defaultConstraint/string.mjs';
11
+ export { CreateConstraintsSetError, constraintsSetHandlerKind, createConstraintsSet } from './constraint/set.mjs';
11
12
  export { BigInt, Boolean, CreatePrimitiveError, Date, Number, String, Time, primitiveHandlerKind } from './primitive/base.mjs';
12
13
  export { equal } from './primitive/operations/equal.mjs';
13
14
  export { add } from './primitive/operations/number/add.mjs';
@@ -1,7 +1,6 @@
1
1
  'use strict';
2
2
 
3
3
  var kind = require('./kind.cjs');
4
- var base = require('./constraint/base.cjs');
5
4
  var kind$1 = require('../common/kind.cjs');
6
5
  var flatMap = require('../array/flatMap.cjs');
7
6
  var coalescing = require('../array/coalescing.cjs');
@@ -9,12 +8,14 @@ var pipe = require('../common/pipe.cjs');
9
8
  var map = require('../array/map.cjs');
10
9
  var entry = require('../object/entry.cjs');
11
10
  var errorKindNamespace = require('../common/errorKindNamespace.cjs');
11
+ var fromEntries = require('../object/fromEntries.cjs');
12
+ var override = require('../common/override.cjs');
12
13
  var is = require('../either/left/is.cjs');
13
14
  var unwrap = require('../common/unwrap.cjs');
14
15
  var create = require('../either/left/create.cjs');
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");
@@ -33,12 +34,16 @@ class CreateNewTypeError extends kind$1.kindHeritage("create-new-type-error", er
33
34
  * {@include clean/createNewType/index.md}
34
35
  */
35
36
  function createNewType(name, dataParser, constraint) {
36
- const constrains = coalescing.coalescing(constraint ?? []);
37
- const checkers = flatMap.flatMap(constrains, ({ checkers }) => checkers);
37
+ const constraints = coalescing.coalescing(constraint ?? []);
38
+ const checkers = flatMap.flatMap(constraints, ({ checkers }) => checkers);
38
39
  const dataParserWithCheckers = constraint
39
40
  ? dataParser.addChecker(...checkers)
40
41
  : dataParser;
41
- const constraintKindValue = pipe.pipe(constrains, map.map(({ name }) => entry.entry(name, null)), fromEntries.fromEntries);
42
+ const constraintKindValue = pipe.pipe(constraints, map.map(({ name }) => entry.entry(name, null)), fromEntries.fromEntries);
43
+ const wrappedConstraints = pipe.pipe(constraints, map.map((constrain) => entry.entry(constrain.name, constrain)), fromEntries.fromEntries);
44
+ function getConstraint(name) {
45
+ return wrappedConstraints[name];
46
+ }
42
47
  function create$2(data) {
43
48
  const result = dataParserWithCheckers.parse(unwrap.unwrap(data));
44
49
  if (is.isLeft(result)) {
@@ -69,24 +74,26 @@ function createNewType(name, dataParser, constraint) {
69
74
  return false;
70
75
  }
71
76
  // eslint-disable-next-line @typescript-eslint/prefer-for-of
72
- for (let index = 0; index < constrains.length; index++) {
73
- if (!constrains[index].is(input)) {
77
+ for (let index = 0; index < constraints.length; index++) {
78
+ if (!constraints[index].is(input)) {
74
79
  return false;
75
80
  }
76
81
  }
77
82
  return true;
78
83
  }
79
- return newTypeHandlerKind.setTo({
84
+ return pipe.pipe({
80
85
  name,
81
86
  dataParser: dataParserWithCheckers,
82
- constrains,
87
+ constrains: constraints,
88
+ getConstraint,
83
89
  create: create$2,
84
90
  createOrThrow,
85
91
  createWithUnknown: create$2,
86
92
  createWithUnknownOrThrow: createOrThrow,
87
93
  is: is$1,
88
- });
94
+ }, newTypeHandlerKind.setTo, createNewType.overrideHandler.apply);
89
95
  }
96
+ createNewType.overrideHandler = override.createOverride("@duplojs/utils/clean/new-type");
90
97
 
91
98
  exports.CreateNewTypeError = CreateNewTypeError;
92
99
  exports.createNewType = createNewType;
@@ -6,11 +6,11 @@ import * as DArray from "../array";
6
6
  import type * as DDataParser from "../dataParser";
7
7
  import { type DataParserContainTransform } from "./types";
8
8
  export declare const newTypeKind: import("..").KindHandler<import("..").KindDefinition<"@DuplojsUtilsClean/new-type", string>>;
9
- type _NewType<GenericName extends string, GenericValue extends unknown, GenericConstrainName extends string> = (Kind<typeof newTypeKind.definition, GenericName> & Kind<typeof constrainedTypeKind.definition, Record<GenericConstrainName, unknown>> & WrappedValue<GenericValue>);
10
- export interface NewType<GenericName extends string = string, GenericValue extends unknown = unknown, GenericConstrainName extends string = never> extends _NewType<GenericName, GenericValue, GenericConstrainName> {
9
+ type _NewType<GenericName extends string, GenericValue extends unknown, GenericConstraintsName extends string> = (Kind<typeof newTypeKind.definition, GenericName> & Kind<typeof constrainedTypeKind.definition, Record<GenericConstraintsName, unknown>> & WrappedValue<GenericValue>);
10
+ export interface NewType<GenericName extends string = string, GenericValue extends unknown = unknown, GenericConstraintsName extends string = never> extends _NewType<GenericName, GenericValue, GenericConstraintsName> {
11
11
  }
12
12
  export declare const newTypeHandlerKind: import("..").KindHandler<import("..").KindDefinition<"@DuplojsUtilsClean/new-type-handler", unknown>>;
13
- export interface NewTypeHandler<GenericName extends string = string, GenericValue extends unknown = unknown, GenericConstrainHandler extends readonly ConstraintHandler[] = readonly []> extends Kind<typeof newTypeHandlerKind.definition> {
13
+ export interface NewTypeHandler<GenericName extends string = string, GenericValue extends unknown = unknown, GenericConstraintsHandler extends readonly ConstraintHandler[] = readonly []> extends Kind<typeof newTypeHandlerKind.definition> {
14
14
  /**
15
15
  * The NewType name used as the brand (for example "userId").
16
16
  *
@@ -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 constrains: GenericConstrainHandler;
28
+ readonly constrains: GenericConstraintsHandler;
29
29
  /**
30
30
  * Creates a NewType value and returns an Either.
31
31
  *
@@ -34,8 +34,8 @@ export interface NewTypeHandler<GenericName extends string = string, GenericValu
34
34
  * ```
35
35
  *
36
36
  */
37
- create<const GenericData extends GenericValue>(data: GenericData): (DEither.Right<"createNewType", NewType<GenericName, GenericData, GenericConstrainHandler[number]["name"]>> | DEither.Left<"createNewTypeError", DDataParser.DataParserError>);
38
- create<GenericPrimitive extends Primitive<Extract<GenericValue, EligiblePrimitive>>>(data: GenericPrimitive): (DEither.Right<"createNewType", (GenericPrimitive & NewType<GenericName, Unwrap<GenericPrimitive>, GenericConstrainHandler[number]["name"]>)> | DEither.Left<"createNewTypeError", DDataParser.DataParserError>);
37
+ create<const GenericInput extends GenericValue>(data: GenericInput): (DEither.Right<"createNewType", NewType<GenericName, GenericInput, GenericConstraintsHandler[number]["name"]>> | DEither.Left<"createNewTypeError", DDataParser.DataParserError>);
38
+ create<GenericPrimitive extends Primitive<Extract<GenericValue, EligiblePrimitive>>>(data: GenericPrimitive): (DEither.Right<"createNewType", (GenericPrimitive & NewType<GenericName, Unwrap<GenericPrimitive>, GenericConstraintsHandler[number]["name"]>)> | DEither.Left<"createNewTypeError", DDataParser.DataParserError>);
39
39
  /**
40
40
  * Creates a NewType value and throws on error. Works with raw values or primitives.
41
41
  *
@@ -50,8 +50,8 @@ export interface NewTypeHandler<GenericName extends string = string, GenericValu
50
50
  * ```
51
51
  *
52
52
  */
53
- createOrThrow<const GenericData extends GenericValue>(data: GenericData): NewType<GenericName, GenericData, GenericConstrainHandler[number]["name"]>;
54
- createOrThrow<GenericPrimitive extends Primitive<Extract<GenericValue, EligiblePrimitive>>>(data: GenericPrimitive): (GenericPrimitive & NewType<GenericName, Unwrap<GenericPrimitive>, GenericConstrainHandler[number]["name"]>);
53
+ createOrThrow<const GenericData extends GenericValue>(data: GenericData): NewType<GenericName, GenericData, GenericConstraintsHandler[number]["name"]>;
54
+ createOrThrow<GenericPrimitive extends Primitive<Extract<GenericValue, EligiblePrimitive>>>(data: GenericPrimitive): (GenericPrimitive & NewType<GenericName, Unwrap<GenericPrimitive>, GenericConstraintsHandler[number]["name"]>);
55
55
  /**
56
56
  * Creates a NewType value from an unknown input and returns an Either.
57
57
  *
@@ -65,7 +65,7 @@ export interface NewTypeHandler<GenericName extends string = string, GenericValu
65
65
  * ```
66
66
  *
67
67
  */
68
- createWithUnknown<GenericData extends unknown>(data: GenericData): (DEither.Right<"createNewType", NewType<GenericName, GenericValue, GenericConstrainHandler[number]["name"]>> | DEither.Left<"createNewTypeError", DDataParser.DataParserError>);
68
+ createWithUnknown<GenericInput extends unknown>(data: GenericInput): (DEither.Right<"createNewType", NewType<GenericName, GenericValue, GenericConstraintsHandler[number]["name"]>> | DEither.Left<"createNewTypeError", DDataParser.DataParserError>);
69
69
  /**
70
70
  * Creates a NewType value from an unknown input and throws on error.
71
71
  *
@@ -74,7 +74,7 @@ export interface NewTypeHandler<GenericName extends string = string, GenericValu
74
74
  * ```
75
75
  *
76
76
  */
77
- createWithUnknownOrThrow<GenericData extends unknown>(data: GenericData): NewType<GenericName, GenericValue, GenericConstrainHandler[number]["name"]>;
77
+ createWithUnknownOrThrow<GenericInput extends unknown>(data: GenericInput): NewType<GenericName, GenericValue, GenericConstraintsHandler[number]["name"]>;
78
78
  /**
79
79
  * Checks if a value is a NewType of this handler (type guard).
80
80
  *
@@ -83,7 +83,17 @@ export interface NewTypeHandler<GenericName extends string = string, GenericValu
83
83
  * ```
84
84
  *
85
85
  */
86
- is<GenericInput extends WrappedValue>(input: GenericInput): input is Extract<GenericInput, NewType<GenericName, GenericValue, GenericConstrainHandler[number]["name"]>>;
86
+ is<GenericInput extends WrappedValue>(input: GenericInput): input is Extract<GenericInput, NewType<GenericName, GenericValue, GenericConstraintsHandler[number]["name"]>>;
87
+ /**
88
+ * Returns a constraint handler by name from the NewType constraints list.
89
+ *
90
+ * ```ts
91
+ * const constraint = UserId.getConstraint("positive");
92
+ * constraint.createOrThrow(1);
93
+ * ```
94
+ *
95
+ */
96
+ getConstraint<GenericConstraintName extends GenericConstraintsHandler[number]["name"]>(name: GenericConstraintName): Extract<GenericConstraintsHandler[number], ConstraintHandler<GenericConstraintName>>;
87
97
  }
88
98
  declare const CreateNewTypeError_base: new (params: {
89
99
  "@DuplojsUtilsError/create-new-type-error"?: unknown;
@@ -137,9 +147,12 @@ export declare class CreateNewTypeError extends CreateNewTypeError_base {
137
147
  * @namespace C
138
148
  *
139
149
  */
140
- export declare function createNewType<GenericName extends string, GenericDataParser extends DDataParser.DataParser, const GenericConstrainHandler extends (ConstraintHandler<string, EligiblePrimitive, readonly DDataParser.DataParserChecker<DDataParser.DataParserCheckerDefinition, DDataParser.Output<GenericDataParser>>[]> | readonly [
150
+ export declare function createNewType<GenericName extends string, GenericDataParser extends DDataParser.DataParser, const GenericConstraintsHandler extends (ConstraintHandler<string, EligiblePrimitive, readonly DDataParser.DataParserChecker<DDataParser.DataParserCheckerDefinition, DDataParser.Output<GenericDataParser>>[]> | readonly [
141
151
  ConstraintHandler<string, EligiblePrimitive, readonly DDataParser.DataParserChecker<DDataParser.DataParserCheckerDefinition, DDataParser.Output<GenericDataParser>>[]>,
142
152
  ...ConstraintHandler<string, EligiblePrimitive, readonly DDataParser.DataParserChecker<DDataParser.DataParserCheckerDefinition, DDataParser.Output<GenericDataParser>>[]>[]
143
- ]) = never>(name: GenericName, dataParser: GenericDataParser & DataParserContainTransform<GenericDataParser>, constraint?: GenericConstrainHandler): NewTypeHandler<GenericName, DeepReadonly<DDataParser.Output<GenericDataParser>>, DArray.ArrayCoalescing<NeverCoalescing<GenericConstrainHandler, readonly []>>>;
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
+ }
144
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>;
145
158
  export {};
@@ -1,5 +1,4 @@
1
1
  import { createCleanKind } from './kind.mjs';
2
- import { constrainedTypeKind } from './constraint/base.mjs';
3
2
  import { kindHeritage } from '../common/kind.mjs';
4
3
  import { flatMap } from '../array/flatMap.mjs';
5
4
  import { coalescing } from '../array/coalescing.mjs';
@@ -7,12 +6,14 @@ import { pipe } from '../common/pipe.mjs';
7
6
  import { map } from '../array/map.mjs';
8
7
  import { entry } from '../object/entry.mjs';
9
8
  import { createErrorKind } from '../common/errorKindNamespace.mjs';
9
+ import { fromEntries } from '../object/fromEntries.mjs';
10
+ import { createOverride } from '../common/override.mjs';
10
11
  import { isLeft } from '../either/left/is.mjs';
11
12
  import { unwrap } from '../common/unwrap.mjs';
12
13
  import { left } from '../either/left/create.mjs';
14
+ import { constrainedTypeKind } from './constraint/base.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 newTypeKind = createCleanKind("new-type");
18
19
  const newTypeHandlerKind = createCleanKind("new-type-handler");
@@ -31,12 +32,16 @@ class CreateNewTypeError extends kindHeritage("create-new-type-error", createErr
31
32
  * {@include clean/createNewType/index.md}
32
33
  */
33
34
  function createNewType(name, dataParser, constraint) {
34
- const constrains = coalescing(constraint ?? []);
35
- const checkers = flatMap(constrains, ({ checkers }) => checkers);
35
+ const constraints = coalescing(constraint ?? []);
36
+ const checkers = flatMap(constraints, ({ checkers }) => checkers);
36
37
  const dataParserWithCheckers = constraint
37
38
  ? dataParser.addChecker(...checkers)
38
39
  : dataParser;
39
- const constraintKindValue = pipe(constrains, map(({ name }) => entry(name, null)), fromEntries);
40
+ const constraintKindValue = pipe(constraints, map(({ name }) => entry(name, null)), fromEntries);
41
+ const wrappedConstraints = pipe(constraints, map((constrain) => entry(constrain.name, constrain)), fromEntries);
42
+ function getConstraint(name) {
43
+ return wrappedConstraints[name];
44
+ }
40
45
  function create(data) {
41
46
  const result = dataParserWithCheckers.parse(unwrap(data));
42
47
  if (isLeft(result)) {
@@ -67,23 +72,25 @@ function createNewType(name, dataParser, constraint) {
67
72
  return false;
68
73
  }
69
74
  // eslint-disable-next-line @typescript-eslint/prefer-for-of
70
- for (let index = 0; index < constrains.length; index++) {
71
- if (!constrains[index].is(input)) {
75
+ for (let index = 0; index < constraints.length; index++) {
76
+ if (!constraints[index].is(input)) {
72
77
  return false;
73
78
  }
74
79
  }
75
80
  return true;
76
81
  }
77
- return newTypeHandlerKind.setTo({
82
+ return pipe({
78
83
  name,
79
84
  dataParser: dataParserWithCheckers,
80
- constrains,
85
+ constrains: constraints,
86
+ getConstraint,
81
87
  create,
82
88
  createOrThrow,
83
89
  createWithUnknown: create,
84
90
  createWithUnknownOrThrow: createOrThrow,
85
91
  is,
86
- });
92
+ }, newTypeHandlerKind.setTo, createNewType.overrideHandler.apply);
87
93
  }
94
+ createNewType.overrideHandler = createOverride("@duplojs/utils/clean/new-type");
88
95
 
89
96
  export { CreateNewTypeError, createNewType, newTypeHandlerKind, newTypeKind };
@@ -3,12 +3,14 @@
3
3
  var kind = require('../kind.cjs');
4
4
  var kind$1 = require('../../common/kind.cjs');
5
5
  var index = require('../../dataParser/parsers/string/index.cjs');
6
+ var pipe = require('../../common/pipe.cjs');
6
7
  var index$1 = require('../../dataParser/parsers/number/index.cjs');
7
8
  var index$2 = require('../../dataParser/parsers/bigint/index.cjs');
8
9
  var boolean = require('../../dataParser/parsers/boolean.cjs');
9
10
  var date = require('../../dataParser/parsers/date.cjs');
10
11
  var index$3 = require('../../dataParser/parsers/time/index.cjs');
11
12
  var errorKindNamespace = require('../../common/errorKindNamespace.cjs');
13
+ var override = require('../../common/override.cjs');
12
14
  var unwrap = require('../../common/unwrap.cjs');
13
15
  var is = require('../../either/right/is.cjs');
14
16
  var is$1 = require('../../either/left/is.cjs');
@@ -49,15 +51,16 @@ function createPrimitive(dataParser) {
49
51
  const result = dataParser.parse(unwrap.unwrap(input));
50
52
  return is.isRight(result);
51
53
  }
52
- return primitiveHandlerKind.setTo({
54
+ return pipe.pipe({
53
55
  dataParser,
54
56
  create: create$2,
55
57
  createOrThrow,
56
58
  createWithUnknown: create$2,
57
59
  createWithUnknownOrThrow: createOrThrow,
58
60
  is: is$2,
59
- });
61
+ }, primitiveHandlerKind.setTo, createPrimitive.overrideHandler.apply);
60
62
  }
63
+ createPrimitive.overrideHandler = override.createOverride("@duplojs/utils/clean/primitive");
61
64
  /**
62
65
  * {@include clean/String/index.md}
63
66
  */
@@ -1,12 +1,14 @@
1
1
  import { createCleanKind } from '../kind.mjs';
2
2
  import { kindHeritage } from '../../common/kind.mjs';
3
3
  import { string } from '../../dataParser/parsers/string/index.mjs';
4
+ import { pipe } from '../../common/pipe.mjs';
4
5
  import { number } from '../../dataParser/parsers/number/index.mjs';
5
6
  import { bigint } from '../../dataParser/parsers/bigint/index.mjs';
6
7
  import { boolean } from '../../dataParser/parsers/boolean.mjs';
7
8
  import { date } from '../../dataParser/parsers/date.mjs';
8
9
  import { time } from '../../dataParser/parsers/time/index.mjs';
9
10
  import { createErrorKind } from '../../common/errorKindNamespace.mjs';
11
+ import { createOverride } from '../../common/override.mjs';
10
12
  import { unwrap } from '../../common/unwrap.mjs';
11
13
  import { isRight } from '../../either/right/is.mjs';
12
14
  import { isLeft } from '../../either/left/is.mjs';
@@ -47,15 +49,16 @@ function createPrimitive(dataParser) {
47
49
  const result = dataParser.parse(unwrap(input));
48
50
  return isRight(result);
49
51
  }
50
- return primitiveHandlerKind.setTo({
52
+ return pipe({
51
53
  dataParser,
52
54
  create,
53
55
  createOrThrow,
54
56
  createWithUnknown: create,
55
57
  createWithUnknownOrThrow: createOrThrow,
56
58
  is,
57
- });
59
+ }, primitiveHandlerKind.setTo, createPrimitive.overrideHandler.apply);
58
60
  }
61
+ createPrimitive.overrideHandler = createOverride("@duplojs/utils/clean/primitive");
59
62
  /**
60
63
  * {@include clean/String/index.md}
61
64
  */
@@ -1,18 +1,21 @@
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 repositoryHandlerKind = kind.createCleanKind("repository-handler");
6
8
  /**
7
9
  * {@include clean/createRepository/index.md}
8
10
  */
9
11
  function createRepository() {
10
- return repositoryHandlerKind.setTo({
12
+ return pipe.pipe({
11
13
  createImplementation(implementation) {
12
14
  return implementation;
13
15
  },
14
- });
16
+ }, repositoryHandlerKind.setTo, createRepository.overrideHandler.apply);
15
17
  }
18
+ createRepository.overrideHandler = override.createOverride("@duplojs/utils/clean/repository");
16
19
 
17
20
  exports.createRepository = createRepository;
18
21
  exports.repositoryHandlerKind = repositoryHandlerKind;
@@ -93,3 +93,6 @@ export interface RepositoryHandler<GenericRepository extends object = object> ex
93
93
  *
94
94
  */
95
95
  export declare function createRepository<GenericRepository extends object>(): RepositoryHandler<GenericRepository>;
96
+ export declare namespace createRepository {
97
+ var overrideHandler: import("../common").OverrideHandler<RepositoryHandler<object>>;
98
+ }
@@ -1,15 +1,18 @@
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 repositoryHandlerKind = createCleanKind("repository-handler");
4
6
  /**
5
7
  * {@include clean/createRepository/index.md}
6
8
  */
7
9
  function createRepository() {
8
- return repositoryHandlerKind.setTo({
10
+ return pipe({
9
11
  createImplementation(implementation) {
10
12
  return implementation;
11
13
  },
12
- });
14
+ }, repositoryHandlerKind.setTo, createRepository.overrideHandler.apply);
13
15
  }
16
+ createRepository.overrideHandler = createOverride("@duplojs/utils/clean/repository");
14
17
 
15
18
  export { createRepository, repositoryHandlerKind };
@@ -7,19 +7,24 @@ var entry = require('../object/entry.cjs');
7
7
  var uncapitalize = require('../string/uncapitalize.cjs');
8
8
  var entries = require('../object/entries.cjs');
9
9
  var fromEntries = require('../object/fromEntries.cjs');
10
+ var override = require('../common/override.cjs');
10
11
 
11
12
  const useCaseHandlerKind = kind.createCleanKind("use-case-handler");
12
13
  /**
13
14
  * {@include clean/createUseCase/index.md}
14
15
  */
15
16
  function createUseCase(dependencies, getUseCase) {
16
- return useCaseHandlerKind.setTo({
17
+ return pipe.pipe({
17
18
  dependencies,
18
- getUseCase: (repositories) => getUseCase(pipe.pipe(dependencies, entries.entries, map.map(([key, value]) => entry.entry(uncapitalize.uncapitalize(key), useCaseHandlerKind.has(value)
19
- ? value.getUseCase(repositories)
20
- : repositories[uncapitalize.uncapitalize(key)])), fromEntries.fromEntries)),
21
- });
19
+ getUseCase: (injectedDependencies) => getUseCase(pipe.pipe(dependencies, entries.entries, map.map(([key, value]) => {
20
+ const formattedKey = uncapitalize.uncapitalize(key);
21
+ return entry.entry(formattedKey, useCaseHandlerKind.has(value) && !injectedDependencies[formattedKey]
22
+ ? value.getUseCase(injectedDependencies)
23
+ : injectedDependencies[formattedKey]);
24
+ }), fromEntries.fromEntries)),
25
+ }, useCaseHandlerKind.setTo, createUseCase.overrideHandler.apply);
22
26
  }
27
+ createUseCase.overrideHandler = override.createOverride("@duplojs/utils/clean/use-case");
23
28
  /**
24
29
  * {@include clean/useCaseInstances/index.md}
25
30
  */
@@ -1,12 +1,12 @@
1
- import { type ObjectEntry, type Kind, type SimplifyTopLevel, type UnionToIntersection } from "../common";
1
+ import { type ObjectEntry, type Kind, type SimplifyTopLevel, type UnionToIntersection, type Adaptor } from "../common";
2
2
  import { type RepositoryHandler } from "./repository";
3
3
  export type UseCaseDependencies = Record<string, RepositoryHandler | UseCaseHandler>;
4
4
  export type UseCaseDependenciesValue<GenericDependencies extends UseCaseDependencies> = SimplifyTopLevel<{
5
- [Prop in keyof GenericDependencies as (Prop extends string ? Uncapitalize<Prop> : Prop)]: GenericDependencies[Prop] extends RepositoryHandler ? ReturnType<GenericDependencies[Prop]["createImplementation"]> : GenericDependencies[Prop] extends UseCaseHandler ? ReturnType<GenericDependencies[Prop]["getUseCase"]> : never;
5
+ [Prop in keyof GenericDependencies as Uncapitalize<Adaptor<Prop, string>>]: GenericDependencies[Prop] extends RepositoryHandler ? ReturnType<GenericDependencies[Prop]["createImplementation"]> : GenericDependencies[Prop] extends UseCaseHandler ? ReturnType<GenericDependencies[Prop]["getUseCase"]> : never;
6
6
  }>;
7
7
  export type GetAllRepositories<GenericDependenciesValue extends UseCaseDependencies> = GenericDependenciesValue extends any ? ({
8
8
  [Prop in keyof GenericDependenciesValue]: (GenericDependenciesValue[Prop] extends RepositoryHandler ? [
9
- (Prop extends string ? Uncapitalize<Prop> : Prop),
9
+ Uncapitalize<Adaptor<Prop, string>>,
10
10
  ReturnType<GenericDependenciesValue[Prop]["createImplementation"]>
11
11
  ] : GenericDependenciesValue[Prop] extends UseCaseHandler ? GetAllRepositories<GenericDependenciesValue[Prop]["dependencies"]> : never);
12
12
  })[keyof GenericDependenciesValue] : never;
@@ -26,9 +26,11 @@ export interface UseCaseHandler<GenericDependencies extends UseCaseDependencies
26
26
  * ```
27
27
  *
28
28
  */
29
- getUseCase(repositories: (GetAllRepositories<GenericDependencies> extends infer InferredEntriesDependenciesValue extends ObjectEntry ? {
30
- [Entry in InferredEntriesDependenciesValue as InferredEntriesDependenciesValue[0]]: InferredEntriesDependenciesValue[1];
31
- } : never)): GenericUseCase;
29
+ getUseCase(repositories: ((GetAllRepositories<GenericDependencies> extends infer InferredEntriesDependenciesValue extends ObjectEntry ? {
30
+ [Entry in InferredEntriesDependenciesValue as Entry[0]]: Entry[1];
31
+ } : never) & ({
32
+ [Prop in keyof GenericDependencies as GenericDependencies[Prop] extends UseCaseHandler ? Uncapitalize<Adaptor<Prop, string>> : never]?: GenericDependencies[Prop] extends UseCaseHandler ? ReturnType<GenericDependencies[Prop]["getUseCase"]> : never;
33
+ }))): GenericUseCase;
32
34
  }
33
35
  /**
34
36
  * Creates a use case handler with explicit dependencies.
@@ -109,6 +111,9 @@ export interface UseCaseHandler<GenericDependencies extends UseCaseDependencies
109
111
  *
110
112
  */
111
113
  export declare function createUseCase<const GenericDependencies extends UseCaseDependencies, GenericUseCase extends (input: any) => any>(dependencies: GenericDependencies, getUseCase: (dependenciesValue: UseCaseDependenciesValue<GenericDependencies>) => GenericUseCase): UseCaseHandler<GenericDependencies, GenericUseCase>;
114
+ export declare namespace createUseCase {
115
+ var overrideHandler: import("../common").OverrideHandler<UseCaseHandler<any, any>>;
116
+ }
112
117
  /**
113
118
  * Instantiates multiple use cases at once.
114
119
  *
@@ -159,5 +164,7 @@ export declare function createUseCase<const GenericDependencies extends UseCaseD
159
164
  *
160
165
  */
161
166
  export declare function useCaseInstances<GenericUseCases extends Record<string, UseCaseHandler>>(useCases: GenericUseCases, repositories: SimplifyTopLevel<UnionToIntersection<{
162
- [Prop in keyof GenericUseCases]: Parameters<GenericUseCases[Prop]["getUseCase"]>[0];
167
+ [Prop in keyof GenericUseCases]: GetAllRepositories<GenericUseCases[Prop]["dependencies"]> extends infer InferredEntriesDependenciesValue extends ObjectEntry ? {
168
+ [Entry in InferredEntriesDependenciesValue as Entry[0]]: Entry[1];
169
+ } : never;
163
170
  }[keyof GenericUseCases]>>): UseCaseDependenciesValue<GenericUseCases>;