@duplojs/utils 1.3.21 → 1.3.23

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 (101) hide show
  1. package/README.md +21 -1
  2. package/dist/array/index.cjs +3 -0
  3. package/dist/array/index.d.ts +1 -0
  4. package/dist/array/index.mjs +1 -0
  5. package/dist/array/select.cjs +35 -0
  6. package/dist/array/select.d.ts +18 -0
  7. package/dist/array/select.mjs +32 -0
  8. package/dist/clean/constraint/base.d.ts +1 -1
  9. package/dist/clean/constraint/defaultConstraint/number.d.ts +4 -4
  10. package/dist/clean/constraint/defaultConstraint/string.d.ts +3 -3
  11. package/dist/clean/entity.cjs +4 -0
  12. package/dist/clean/entity.d.ts +1 -0
  13. package/dist/clean/entity.mjs +4 -0
  14. package/dist/clean/flag.d.ts +1 -0
  15. package/dist/clean/index.d.ts +1 -0
  16. package/dist/clean/newType.d.ts +2 -1
  17. package/dist/clean/repository.d.ts +4 -4
  18. package/dist/clean/types/dataParserContainTransform.d.ts +6 -0
  19. package/dist/clean/types/index.d.ts +1 -0
  20. package/dist/clean/useCase.cjs +4 -3
  21. package/dist/clean/useCase.d.ts +2 -2
  22. package/dist/clean/useCase.mjs +4 -3
  23. package/dist/common/index.d.ts +1 -1
  24. package/dist/common/{toJson.d.ts → toJSON.d.ts} +1 -1
  25. package/dist/dataParser/base.d.ts +3 -0
  26. package/dist/dataParser/baseExtended.d.ts +3 -0
  27. package/dist/dataParser/extended/array.d.ts +3 -0
  28. package/dist/dataParser/extended/bigint.d.ts +3 -0
  29. package/dist/dataParser/extended/boolean.d.ts +3 -0
  30. package/dist/dataParser/extended/date.d.ts +3 -0
  31. package/dist/dataParser/extended/empty.d.ts +3 -0
  32. package/dist/dataParser/extended/lazy.d.ts +3 -0
  33. package/dist/dataParser/extended/literal.d.ts +3 -0
  34. package/dist/dataParser/extended/nil.d.ts +3 -0
  35. package/dist/dataParser/extended/nullable.d.ts +3 -0
  36. package/dist/dataParser/extended/number.d.ts +3 -0
  37. package/dist/dataParser/extended/object.cjs +16 -4
  38. package/dist/dataParser/extended/object.d.ts +16 -5
  39. package/dist/dataParser/extended/object.mjs +20 -8
  40. package/dist/dataParser/extended/optional.d.ts +3 -0
  41. package/dist/dataParser/extended/pipe.d.ts +3 -0
  42. package/dist/dataParser/extended/record.d.ts +3 -0
  43. package/dist/dataParser/extended/recover.d.ts +3 -0
  44. package/dist/dataParser/extended/string.d.ts +3 -0
  45. package/dist/dataParser/extended/templateLiteral.d.ts +3 -0
  46. package/dist/dataParser/extended/transform.d.ts +3 -0
  47. package/dist/dataParser/extended/tuple.d.ts +3 -0
  48. package/dist/dataParser/extended/union.d.ts +3 -0
  49. package/dist/dataParser/extended/unknown.d.ts +3 -0
  50. package/dist/dataParser/identifier.d.ts +2 -2
  51. package/dist/dataParser/index.cjs +4 -0
  52. package/dist/dataParser/index.mjs +4 -4
  53. package/dist/dataParser/parsers/array/index.d.ts +4 -1
  54. package/dist/dataParser/parsers/bigint/index.d.ts +3 -0
  55. package/dist/dataParser/parsers/boolean.d.ts +3 -0
  56. package/dist/dataParser/parsers/date.d.ts +3 -0
  57. package/dist/dataParser/parsers/empty.d.ts +3 -0
  58. package/dist/dataParser/parsers/lazy.d.ts +3 -0
  59. package/dist/dataParser/parsers/literal.d.ts +3 -0
  60. package/dist/dataParser/parsers/nil.d.ts +3 -0
  61. package/dist/dataParser/parsers/nullable.d.ts +3 -0
  62. package/dist/dataParser/parsers/number/index.d.ts +3 -0
  63. package/dist/dataParser/parsers/object/index.d.ts +3 -0
  64. package/dist/dataParser/parsers/object/omit.cjs +5 -1
  65. package/dist/dataParser/parsers/object/omit.d.ts +2 -1
  66. package/dist/dataParser/parsers/object/omit.mjs +5 -2
  67. package/dist/dataParser/parsers/object/partial.cjs +5 -1
  68. package/dist/dataParser/parsers/object/partial.d.ts +1 -0
  69. package/dist/dataParser/parsers/object/partial.mjs +5 -2
  70. package/dist/dataParser/parsers/object/pick.cjs +6 -2
  71. package/dist/dataParser/parsers/object/pick.d.ts +3 -2
  72. package/dist/dataParser/parsers/object/pick.mjs +6 -3
  73. package/dist/dataParser/parsers/object/required.cjs +5 -1
  74. package/dist/dataParser/parsers/object/required.d.ts +1 -0
  75. package/dist/dataParser/parsers/object/required.mjs +5 -2
  76. package/dist/dataParser/parsers/optional.d.ts +3 -0
  77. package/dist/dataParser/parsers/pipe.d.ts +3 -0
  78. package/dist/dataParser/parsers/record/index.d.ts +3 -0
  79. package/dist/dataParser/parsers/recover.d.ts +3 -0
  80. package/dist/dataParser/parsers/refine.cjs +1 -1
  81. package/dist/dataParser/parsers/refine.d.ts +1 -1
  82. package/dist/dataParser/parsers/refine.mjs +1 -1
  83. package/dist/dataParser/parsers/string/index.d.ts +3 -0
  84. package/dist/dataParser/parsers/templateLiteral/index.d.ts +3 -0
  85. package/dist/dataParser/parsers/transform.d.ts +3 -0
  86. package/dist/dataParser/parsers/tuple.d.ts +3 -0
  87. package/dist/dataParser/parsers/union.d.ts +3 -0
  88. package/dist/dataParser/parsers/unknown.d.ts +3 -0
  89. package/dist/dataParser/types/contain.d.ts +4 -0
  90. package/dist/dataParser/types/index.d.ts +1 -0
  91. package/dist/either/future/create.d.ts +1 -1
  92. package/dist/index.cjs +2 -2
  93. package/dist/index.mjs +1 -1
  94. package/dist/metadata.json +4433 -0
  95. package/dist/string/capitalize.cjs +1 -1
  96. package/dist/string/capitalize.mjs +1 -1
  97. package/dist/string/uncapitalize.cjs +1 -1
  98. package/dist/string/uncapitalize.mjs +1 -1
  99. package/package.json +37 -5
  100. /package/dist/common/{toJson.cjs → toJSON.cjs} +0 -0
  101. /package/dist/common/{toJson.mjs → toJSON.mjs} +0 -0
package/README.md CHANGED
@@ -1,2 +1,22 @@
1
1
  # @duplojs/utils
2
- [![NPM version](https://img.shields.io/npm/v/@duplojs/utils)](https://www.npmjs.com/package/@duplojs/utils)
2
+ [![NPM version](https://img.shields.io/npm/v/@duplojs/utils)](https://www.npmjs.com/package/@duplojs/utils)
3
+
4
+ `@duplojs/utils` is the TypeScript utility toolbox used across the DuploJS ecosystem. It focuses on **strong typing**, **god DX**, and **small composable primitives** that scale from simple helpers to full validation pipelines.
5
+
6
+ ## What’s inside?
7
+
8
+ - **Common functional utilities**: `pipe`/`asyncPipe`, `when`, `memo`, `clone`, `escapeRegExp`, etc.
9
+ - **Typed runtime tagging**: `kind` helpers to discriminate data without polluting public shapes.
10
+ - **Either**: a typed success/error container with mandatory “information” for precise pattern matching.
11
+ - **DataParser**: schema-based validation with checkers, coercion (`DP.coerce.*`), transforms, async support, and a fluent “extended” API (`DPE`).
12
+ - **Clean-domain building blocks**: `newType`, `entity`, constraints, repositories, and use-cases.
13
+ - **Pure helpers by domain**: `array`, `object`, `string`, `number`, `date`, `generator`, `pattern` (match/exhaustive).
14
+
15
+ ## Documentation
16
+ - https://utils.duplojs.dev
17
+
18
+ ## Install
19
+
20
+ ```bash
21
+ npm install @duplojs/utils
22
+ ```
@@ -42,6 +42,7 @@ var notIncludes = require('./notIncludes.cjs');
42
42
  var chunk = require('./chunk.cjs');
43
43
  var insert$2 = require('./insert.cjs');
44
44
  var isLastIndex = require('./isLastIndex.cjs');
45
+ var select = require('./select.cjs');
45
46
  var _delete = require('./splice/delete.cjs');
46
47
  var insert = require('./splice/insert.cjs');
47
48
  var replace = require('./splice/replace.cjs');
@@ -101,6 +102,8 @@ exports.notIncludes = notIncludes.notIncludes;
101
102
  exports.chunk = chunk.chunk;
102
103
  exports.insert = insert$2.insert;
103
104
  exports.isLastIndex = isLastIndex.isLastIndex;
105
+ exports.select = select.select;
106
+ exports.selectTools = select.selectTools;
104
107
  exports.spliceDelete = _delete.spliceDelete;
105
108
  exports.spliceInsert = insert.spliceInsert;
106
109
  exports.spliceReplace = replace.spliceReplace;
@@ -45,3 +45,4 @@ export * from "./notIncludes";
45
45
  export * from "./chunk";
46
46
  export * from "./insert";
47
47
  export * from "./isLastIndex";
48
+ export * from "./select";
@@ -40,6 +40,7 @@ export { notIncludes } from './notIncludes.mjs';
40
40
  export { chunk } from './chunk.mjs';
41
41
  export { insert } from './insert.mjs';
42
42
  export { isLastIndex } from './isLastIndex.mjs';
43
+ export { select, selectTools } from './select.mjs';
43
44
  export { spliceDelete } from './splice/delete.mjs';
44
45
  export { spliceInsert } from './splice/insert.mjs';
45
46
  export { spliceReplace } from './splice/replace.mjs';
@@ -0,0 +1,35 @@
1
+ 'use strict';
2
+
3
+ const selectTools = {
4
+ skip() {
5
+ return { "-skip": null };
6
+ },
7
+ select(output) {
8
+ return { "-select": output };
9
+ },
10
+ };
11
+ function select(...args) {
12
+ if (args.length === 1) {
13
+ const [theFunction] = args;
14
+ return (input) => select(input, theFunction);
15
+ }
16
+ const [input, theFunction] = args;
17
+ const outputArray = [];
18
+ for (let index = 0; index < input.length; index++) {
19
+ const element = input[index];
20
+ const result = theFunction({
21
+ element,
22
+ index,
23
+ self: input,
24
+ ...selectTools,
25
+ });
26
+ if ("-skip" in result) {
27
+ continue;
28
+ }
29
+ outputArray.push(result["-select"]);
30
+ }
31
+ return outputArray;
32
+ }
33
+
34
+ exports.select = select;
35
+ exports.selectTools = selectTools;
@@ -0,0 +1,18 @@
1
+ import { type AnyValue } from "../common";
2
+ export interface ArraySelectSelect<GenericOutput extends unknown = unknown> {
3
+ "-select": GenericOutput;
4
+ }
5
+ export interface ArraySelectSkip {
6
+ "-skip": null;
7
+ }
8
+ interface ArraySelectParams<GenericInputArray extends readonly unknown[]> {
9
+ element: GenericInputArray[number];
10
+ index: number;
11
+ self: GenericInputArray;
12
+ skip(): ArraySelectSkip;
13
+ select<GenericOutput extends AnyValue = AnyValue>(output: GenericOutput): ArraySelectSelect<GenericOutput>;
14
+ }
15
+ export declare const selectTools: Pick<ArraySelectParams<any>, "skip" | "select">;
16
+ export declare function select<GenericInput extends readonly unknown[], GenericSelect extends ArraySelectSelect>(theFunction: (params: ArraySelectParams<GenericInput>) => GenericSelect | ArraySelectSkip): (input: GenericInput) => GenericSelect["-select"][];
17
+ export declare function select<GenericInput extends readonly unknown[], GenericSelect extends ArraySelectSelect>(input: GenericInput, theFunction: (params: ArraySelectParams<GenericInput>) => GenericSelect | ArraySelectSkip): GenericSelect["-select"][];
18
+ export {};
@@ -0,0 +1,32 @@
1
+ const selectTools = {
2
+ skip() {
3
+ return { "-skip": null };
4
+ },
5
+ select(output) {
6
+ return { "-select": output };
7
+ },
8
+ };
9
+ function select(...args) {
10
+ if (args.length === 1) {
11
+ const [theFunction] = args;
12
+ return (input) => select(input, theFunction);
13
+ }
14
+ const [input, theFunction] = args;
15
+ const outputArray = [];
16
+ for (let index = 0; index < input.length; index++) {
17
+ const element = input[index];
18
+ const result = theFunction({
19
+ element,
20
+ index,
21
+ self: input,
22
+ ...selectTools,
23
+ });
24
+ if ("-skip" in result) {
25
+ continue;
26
+ }
27
+ outputArray.push(result["-select"]);
28
+ }
29
+ return outputArray;
30
+ }
31
+
32
+ export { select, selectTools };
@@ -32,5 +32,5 @@ export declare function createConstraint<GenericName extends string, GenericPrim
32
32
  DDataParser.DataParserChecker<DDataParser.DataParserCheckerDefinition, GenericPrimitiveValue>,
33
33
  ...DDataParser.DataParserChecker<DDataParser.DataParserCheckerDefinition, GenericPrimitiveValue>[]
34
34
  ]) = never>(name: GenericName, primitiveHandler: PrimitiveHandler<GenericPrimitiveValue>, checker: GenericChecker): ConstraintHandler<GenericName, GenericPrimitiveValue, DArray.ArrayCoalescing<GenericChecker>>;
35
- export type Constraint<GenericConstrainHandler extends ConstraintHandler, GenericValue extends DDataParser.InputChecker<GenericConstrainHandler["checkers"][number]> = DDataParser.InputChecker<GenericConstrainHandler["checkers"][number]>> = Extract<ConstrainedType<GenericConstrainHandler["name"], GenericValue>, any>;
35
+ export type GetConstraint<GenericConstrainHandler extends ConstraintHandler, GenericValue extends DDataParser.InputChecker<GenericConstrainHandler["checkers"][number]> = DDataParser.InputChecker<GenericConstrainHandler["checkers"][number]>> = Extract<ConstrainedType<GenericConstrainHandler["name"], GenericValue>, any>;
36
36
  export {};
@@ -1,8 +1,8 @@
1
- import { type Constraint } from "../base";
1
+ import { type GetConstraint } from "../base";
2
2
  import * as DDataParser from "../../../dataParser";
3
3
  export declare const Int: import("..").ConstraintHandler<"int", number, readonly [DDataParser.DataParserCheckerInt]>;
4
- export type Int = Constraint<typeof Int>;
4
+ export type Int = GetConstraint<typeof Int>;
5
5
  export declare const Positive: import("..").ConstraintHandler<"positive", number, readonly [DDataParser.DataParserCheckerNumberMin]>;
6
- export type Positive = Constraint<typeof Positive>;
6
+ export type Positive = GetConstraint<typeof Positive>;
7
7
  export declare const Negative: import("..").ConstraintHandler<"negative", number, readonly [DDataParser.DataParserCheckerNumberMax]>;
8
- export type Negative = Constraint<typeof Negative>;
8
+ export type Negative = GetConstraint<typeof Negative>;
@@ -1,6 +1,6 @@
1
- import { type Constraint } from "../base";
1
+ import { type GetConstraint } from "../base";
2
2
  import * as DDataParser from "../../../dataParser";
3
3
  export declare const Email: import("..").ConstraintHandler<"email", string, readonly [DDataParser.DataParserCheckerEmail]>;
4
- export type Email = Constraint<typeof Email>;
4
+ export type Email = GetConstraint<typeof Email>;
5
5
  export declare const Url: import("..").ConstraintHandler<"url", string, readonly [DDataParser.DataParserCheckerUrl]>;
6
- export type Url = Constraint<typeof Url>;
6
+ export type Url = GetConstraint<typeof Url>;
@@ -110,6 +110,9 @@ function createEntity(name, getPropertiesDefinition) {
110
110
  }
111
111
  return unwrap.unwrap(result);
112
112
  }
113
+ function is$1(input) {
114
+ return entityKind.has(input) && entityKind.getValue(input) === name;
115
+ }
113
116
  return entityHandlerKind.setTo({
114
117
  name,
115
118
  propertiesDefinition,
@@ -117,6 +120,7 @@ function createEntity(name, getPropertiesDefinition) {
117
120
  new: theNew,
118
121
  map: map$1,
119
122
  mapOrThrow,
123
+ is: is$1,
120
124
  });
121
125
  }
122
126
 
@@ -43,6 +43,7 @@ export interface EntityHandler<GenericName extends string = string, GenericPrope
43
43
  "new"<GenericProperties extends EntityProperties<GenericPropertiesDefinition>>(properties: GenericProperties): Entity<GenericName> & GenericProperties;
44
44
  map(rawProperties: EntityRawProperties<GenericPropertiesDefinition>): (DEither.EitherRight<"createEntity", Entity<GenericName> & EntityProperties<GenericPropertiesDefinition>> | DEither.EitherLeft<"createEntityError", DDataParser.DataParserError>);
45
45
  mapOrThrow(rawProperties: EntityRawProperties<GenericPropertiesDefinition>): Entity<GenericName> & EntityProperties<GenericPropertiesDefinition>;
46
+ is<GenericInput extends unknown>(input: GenericInput): input is Extract<GenericInput, Entity<GenericName>>;
46
47
  }
47
48
  declare const CreateEntityError_base: new (params: {
48
49
  "@DuplojsUtilsError/create-entity-error"?: unknown;
@@ -108,6 +108,9 @@ function createEntity(name, getPropertiesDefinition) {
108
108
  }
109
109
  return unwrap(result);
110
110
  }
111
+ function is(input) {
112
+ return entityKind.has(input) && entityKind.getValue(input) === name;
113
+ }
111
114
  return entityHandlerKind.setTo({
112
115
  name,
113
116
  propertiesDefinition,
@@ -115,6 +118,7 @@ function createEntity(name, getPropertiesDefinition) {
115
118
  new: theNew,
116
119
  map: map$1,
117
120
  mapOrThrow,
121
+ is,
118
122
  });
119
123
  }
120
124
 
@@ -13,4 +13,5 @@ export declare function createFlag<GenericEntity extends Entity = never, Generic
13
13
  IsEqual<GenericEntity, never>,
14
14
  IsEqual<GenericName, never>
15
15
  ]> extends true ? never : NoInfer<GenericName>): FlagHandler<GenericEntity, GenericName, GenericValue>;
16
+ export type GetFlag<GenericHandler extends FlagHandler<any, any, any>> = Extract<Flag<GenericHandler["name"], ReturnType<GenericHandler["getValue"]>>, any>;
16
17
  export {};
@@ -1,3 +1,4 @@
1
+ export * from "./types";
1
2
  export * from "./kind";
2
3
  export * from "./newType";
3
4
  export * from "./entity";
@@ -4,6 +4,7 @@ import { type Primitive, type EligiblePrimitive } from "./primitive";
4
4
  import * as DEither from "../either";
5
5
  import * as DArray from "../array";
6
6
  import type * as DDataParser from "../dataParser";
7
+ import { type DataParserContainTransform } from "./types";
7
8
  export declare const newTypeKind: import("..").KindHandler<import("..").KindDefinition<"@DuplojsUtilsClean/new-type", string>>;
8
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>);
9
10
  export interface NewType<GenericName extends string = string, GenericValue extends unknown = unknown, GenericConstrainName extends string = never> extends _NewType<GenericName, GenericValue, GenericConstrainName> {
@@ -33,6 +34,6 @@ export declare class CreateNewTypeError extends CreateNewTypeError_base {
33
34
  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 [
34
35
  ConstraintHandler<string, EligiblePrimitive, readonly DDataParser.DataParserChecker<DDataParser.DataParserCheckerDefinition, DDataParser.Output<GenericDataParser>>[]>,
35
36
  ...ConstraintHandler<string, EligiblePrimitive, readonly DDataParser.DataParserChecker<DDataParser.DataParserCheckerDefinition, DDataParser.Output<GenericDataParser>>[]>[]
36
- ]) = never>(name: GenericName, dataParser: GenericDataParser, constraint?: GenericConstrainHandler): NewTypeHandler<GenericName, DDataParser.Output<GenericDataParser>, DArray.ArrayCoalescing<NeverCoalescing<GenericConstrainHandler, readonly []>>>;
37
+ ]) = never>(name: GenericName, dataParser: GenericDataParser & DataParserContainTransform<GenericDataParser>, constraint?: GenericConstrainHandler): NewTypeHandler<GenericName, DDataParser.Output<GenericDataParser>, DArray.ArrayCoalescing<NeverCoalescing<GenericConstrainHandler, readonly []>>>;
37
38
  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>;
38
39
  export {};
@@ -1,8 +1,8 @@
1
- import { type AnyFunction, type Kind } from "../common";
1
+ import { type SimplifyTopLevel, type AnyFunction, type Kind } from "../common";
2
2
  export declare const repositoryHandlerKind: import("../common").KindHandler<import("../common").KindDefinition<"@DuplojsUtilsClean/repository-handler", unknown>>;
3
3
  export interface RepositoryHandler<GenericRepository extends object = object> extends Kind<typeof repositoryHandlerKind.definition> {
4
- createImplementation(implementation: {
5
- [Prop in keyof GenericRepository]: GenericRepository[Prop] extends AnyFunction ? AnyFunction<Parameters<GenericRepository[Prop]>, ReturnType<GenericRepository[Prop]>> : GenericRepository[Prop];
6
- }): GenericRepository;
4
+ createImplementation(implementation: SimplifyTopLevel<{
5
+ [Prop in keyof GenericRepository]: GenericRepository[Prop] extends AnyFunction ? (...args: Parameters<GenericRepository[Prop]>) => ReturnType<GenericRepository[Prop]> : GenericRepository[Prop];
6
+ }>): GenericRepository;
7
7
  }
8
8
  export declare function createRepository<GenericRepository extends object>(): RepositoryHandler<GenericRepository>;
@@ -0,0 +1,6 @@
1
+ import type * as DDataParser from "../../dataParser";
2
+ declare const SymbolErrorForbidden: unique symbol;
3
+ export type DataParserContainTransform<GenericDataParser extends DDataParser.DataParser> = DDataParser.Contain<GenericDataParser, DDataParser.DataParserTransform> extends true ? {
4
+ [SymbolErrorForbidden]: "It is forbidden to use a transform dataParser.";
5
+ } : GenericDataParser;
6
+ export {};
@@ -0,0 +1 @@
1
+ export * from "./dataParserContainTransform";
@@ -4,6 +4,7 @@ var kind = require('./kind.cjs');
4
4
  var pipe = require('../common/pipe.cjs');
5
5
  var map = require('../array/map.cjs');
6
6
  var entry = require('../object/entry.cjs');
7
+ var uncapitalize = require('../string/uncapitalize.cjs');
7
8
  var entries = require('../object/entries.cjs');
8
9
  var fromEntries = require('../object/fromEntries.cjs');
9
10
 
@@ -11,13 +12,13 @@ const useCaseHandlerKind = kind.createCleanKind("use-case-handler");
11
12
  function createUseCase(dependencies, getUseCase) {
12
13
  return useCaseHandlerKind.setTo({
13
14
  dependencies,
14
- getUseCase: (repositories) => getUseCase(pipe.pipe(dependencies, entries.entries, map.map(([key, value]) => entry.entry(key, useCaseHandlerKind.has(value)
15
+ getUseCase: (repositories) => getUseCase(pipe.pipe(dependencies, entries.entries, map.map(([key, value]) => entry.entry(uncapitalize.uncapitalize(key), useCaseHandlerKind.has(value)
15
16
  ? value.getUseCase(repositories)
16
- : repositories[key])), fromEntries.fromEntries)),
17
+ : repositories[uncapitalize.uncapitalize(key)])), fromEntries.fromEntries)),
17
18
  });
18
19
  }
19
20
  function useCaseInstances(useCases, repositories) {
20
- return pipe.pipe(useCases, entries.entries, map.map(([key, useCase]) => entry.entry(key, useCase.getUseCase(repositories))), fromEntries.fromEntries);
21
+ return pipe.pipe(useCases, entries.entries, map.map(([key, useCase]) => entry.entry(uncapitalize.uncapitalize(key), useCase.getUseCase(repositories))), fromEntries.fromEntries);
21
22
  }
22
23
 
23
24
  exports.createUseCase = createUseCase;
@@ -2,11 +2,11 @@ import { type ObjectEntry, type Kind, type SimplifyTopLevel, type UnionToInterse
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]: GenericDependencies[Prop] extends RepositoryHandler ? ReturnType<GenericDependencies[Prop]["createImplementation"]> : GenericDependencies[Prop] extends UseCaseHandler ? ReturnType<GenericDependencies[Prop]["getUseCase"]> : never;
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;
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,
9
+ (Prop extends string ? Uncapitalize<Prop> : Prop),
10
10
  ReturnType<GenericDependenciesValue[Prop]["createImplementation"]>
11
11
  ] : GenericDependenciesValue[Prop] extends UseCaseHandler ? GetAllRepositories<GenericDependenciesValue[Prop]["dependencies"]> : never);
12
12
  })[keyof GenericDependenciesValue] : never;
@@ -2,6 +2,7 @@ import { createCleanKind } from './kind.mjs';
2
2
  import { pipe } from '../common/pipe.mjs';
3
3
  import { map } from '../array/map.mjs';
4
4
  import { entry } from '../object/entry.mjs';
5
+ import { uncapitalize } from '../string/uncapitalize.mjs';
5
6
  import { entries } from '../object/entries.mjs';
6
7
  import { fromEntries } from '../object/fromEntries.mjs';
7
8
 
@@ -9,13 +10,13 @@ const useCaseHandlerKind = createCleanKind("use-case-handler");
9
10
  function createUseCase(dependencies, getUseCase) {
10
11
  return useCaseHandlerKind.setTo({
11
12
  dependencies,
12
- getUseCase: (repositories) => getUseCase(pipe(dependencies, entries, map(([key, value]) => entry(key, useCaseHandlerKind.has(value)
13
+ getUseCase: (repositories) => getUseCase(pipe(dependencies, entries, map(([key, value]) => entry(uncapitalize(key), useCaseHandlerKind.has(value)
13
14
  ? value.getUseCase(repositories)
14
- : repositories[key])), fromEntries)),
15
+ : repositories[uncapitalize(key)])), fromEntries)),
15
16
  });
16
17
  }
17
18
  function useCaseInstances(useCases, repositories) {
18
- return pipe(useCases, entries, map(([key, useCase]) => entry(key, useCase.getUseCase(repositories))), fromEntries);
19
+ return pipe(useCases, entries, map(([key, useCase]) => entry(uncapitalize(key), useCase.getUseCase(repositories))), fromEntries);
19
20
  }
20
21
 
21
22
  export { createUseCase, useCaseHandlerKind, useCaseInstances };
@@ -13,7 +13,7 @@ export * from "./simpleClone";
13
13
  export * from "./sleep";
14
14
  export * from "./stringToBytes";
15
15
  export * from "./stringToMillisecond";
16
- export * from "./toJson";
16
+ export * from "./toJSON";
17
17
  export * from "./toTransform";
18
18
  export * from "./toWrappedValue";
19
19
  export * from "./unwrap";
@@ -5,7 +5,7 @@ export type ToJSON<GenericValue extends unknown> = GenericValue extends number |
5
5
  }) ? ReturnType<GenericValue["toJSON"]> : GenericValue extends [infer InferredFirst, ...infer InferredRest] ? [
6
6
  ToJSON<InferredFirst>,
7
7
  ...(ToJSON<InferredRest> extends infer InferredSubRest extends any[] ? IsEqual<InferredSubRest, never[]> extends false ? InferredSubRest : [] : [])
8
- ] : GenericValue extends any[] ? ToJSON<GenericValue[number]>[] : GenericValue extends Record<number, unknown> ? {
8
+ ] : GenericValue extends any[] ? ToJSON<GenericValue[number]>[] : GenericValue extends object ? {
9
9
  [Prop in keyof GenericValue as GenericValue[Prop] extends AnyFunction ? never : Prop]: ToJSON<GenericValue[Prop]>;
10
10
  } : undefined;
11
11
  export declare function toJSON<GenericValue extends unknown>(value: GenericValue): ToJSON<GenericValue>;
@@ -33,6 +33,9 @@ export interface DataParser<GenericDefinition extends DataParserDefinition = Dat
33
33
  asyncParse(data: unknown): Promise<DEither.EitherSuccess<GenericOutput> | DEither.EitherError<DataParserError>>;
34
34
  addChecker(...args: never): DataParser;
35
35
  clone(): this;
36
+ /**
37
+ * @deprecated Method with unreliable typing.
38
+ */
36
39
  construct(definition: never): DataParser;
37
40
  }
38
41
  interface DataParserInitExecParams<GenericDataParser extends DataParser> {
@@ -43,6 +43,9 @@ export interface DataParserExtended<GenericDefinition extends DataParserDefiniti
43
43
  inner: GenericThis;
44
44
  recoveredValue: GenericRecoveredValue;
45
45
  }>>;
46
+ /**
47
+ * @deprecated Method with unreliable typing.
48
+ */
46
49
  construct(definition: never): DataParserExtended;
47
50
  }
48
51
  export declare function dataParserExtendedInit<GenericDataParser extends DataParser, GenericDataParserExtended extends GenericDataParser & DataParserExtended>(dataParser: NoInfer<GenericDataParser>, rest: NoInfer<{
@@ -12,6 +12,9 @@ export interface DataParserArrayExtended<GenericDefinition extends dataParsers.D
12
12
  dataParsers.DataParserArrayCheckers<Output<this>>,
13
13
  ...dataParsers.DataParserArrayCheckers<Output<this>>[]
14
14
  ], GenericChecker>): DataParserArrayExtended<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
15
+ /**
16
+ * @deprecated Method with unreliable typing.
17
+ */
15
18
  construct<const GenericDefinition extends dataParsers.DataParserDefinitionArray>(definition: GenericDefinition): DataParserArrayExtended<MergeDefinition<dataParsers.DataParserDefinitionArray, GenericDefinition>>;
16
19
  refine(theFunction: (input: Output<this>) => boolean, definition?: Partial<Omit<dataParsers.DataParserCheckerDefinitionRefine, "theFunction">>): DataParserArrayExtended<AddCheckersToDefinition<GenericDefinition, [
17
20
  dataParsers.CheckerRefineImplementation<Output<this>>
@@ -12,6 +12,9 @@ export interface DataParserBigIntExtended<GenericDefinition extends dataParsers.
12
12
  dataParsers.DataParserBigIntCheckers,
13
13
  ...dataParsers.DataParserBigIntCheckers[]
14
14
  ], GenericChecker>): DataParserBigIntExtended<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
15
+ /**
16
+ * @deprecated Method with unreliable typing.
17
+ */
15
18
  construct<const GenericDefinition extends dataParsers.DataParserDefinitionBigInt>(definition: GenericDefinition): DataParserBigIntExtended<MergeDefinition<dataParsers.DataParserDefinitionBigInt, GenericDefinition>>;
16
19
  refine(theFunction: (input: Output<this>) => boolean, definition?: Partial<Omit<dataParsers.DataParserCheckerDefinitionRefine, "theFunction">>): DataParserBigIntExtended<AddCheckersToDefinition<GenericDefinition, [
17
20
  dataParsers.CheckerRefineImplementation<Output<this>>
@@ -12,6 +12,9 @@ export interface DataParserBooleanExtended<GenericDefinition extends dataParsers
12
12
  dataParsers.DataParserBooleanCheckers,
13
13
  ...dataParsers.DataParserBooleanCheckers[]
14
14
  ], GenericChecker>): DataParserBooleanExtended<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
15
+ /**
16
+ * @deprecated Method with unreliable typing.
17
+ */
15
18
  construct<const GenericDefinition extends dataParsers.DataParserDefinitionBoolean>(definition: GenericDefinition): DataParserBooleanExtended<MergeDefinition<dataParsers.DataParserDefinitionBoolean, GenericDefinition>>;
16
19
  refine(theFunction: (input: Output<this>) => boolean, definition?: Partial<Omit<dataParsers.DataParserCheckerDefinitionRefine, "theFunction">>): DataParserBooleanExtended<AddCheckersToDefinition<GenericDefinition, [
17
20
  dataParsers.CheckerRefineImplementation<Output<this>>
@@ -13,6 +13,9 @@ export interface DataParserDateExtended<GenericDefinition extends dataParsers.Da
13
13
  dataParsers.DataParserDateCheckers,
14
14
  ...dataParsers.DataParserDateCheckers[]
15
15
  ], GenericChecker>): DataParserDateExtended<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
16
+ /**
17
+ * @deprecated Method with unreliable typing.
18
+ */
16
19
  construct<const GenericDefinition extends dataParsers.DataParserDefinitionDate>(definition: GenericDefinition): DataParserDateExtended<MergeDefinition<dataParsers.DataParserDefinitionDate, GenericDefinition>>;
17
20
  refine(theFunction: (input: Output<this>) => boolean, definition?: Partial<Omit<dataParsers.DataParserCheckerDefinitionRefine, "theFunction">>): DataParserDateExtended<AddCheckersToDefinition<GenericDefinition, [
18
21
  dataParsers.CheckerRefineImplementation<Output<this>>
@@ -12,6 +12,9 @@ export interface DataParserEmptyExtended<GenericDefinition extends dataParsers.D
12
12
  dataParsers.DataParserEmptyCheckers,
13
13
  ...dataParsers.DataParserEmptyCheckers[]
14
14
  ], GenericChecker>): DataParserEmptyExtended<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
15
+ /**
16
+ * @deprecated Method with unreliable typing.
17
+ */
15
18
  construct<const GenericDefinition extends dataParsers.DataParserDefinitionEmpty>(definition: GenericDefinition): DataParserEmptyExtended<MergeDefinition<dataParsers.DataParserDefinitionEmpty, GenericDefinition>>;
16
19
  refine(theFunction: (input: Output<this>) => boolean, definition?: Partial<Omit<dataParsers.DataParserCheckerDefinitionRefine, "theFunction">>): DataParserEmptyExtended<AddCheckersToDefinition<GenericDefinition, [
17
20
  dataParsers.CheckerRefineImplementation<Output<this>>
@@ -12,6 +12,9 @@ export interface DataParserLazyExtended<GenericDefinition extends dataParsers.Da
12
12
  dataParsers.DataParserLazyCheckers<Output<this>>,
13
13
  ...dataParsers.DataParserLazyCheckers<Output<this>>[]
14
14
  ], GenericChecker>): DataParserLazyExtended<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
15
+ /**
16
+ * @deprecated Method with unreliable typing.
17
+ */
15
18
  construct<const GenericDefinition extends dataParsers.DataParserDefinitionLazy>(definition: GenericDefinition): DataParserLazyExtended<MergeDefinition<dataParsers.DataParserDefinitionLazy, GenericDefinition>>;
16
19
  refine(theFunction: (input: Output<this>) => boolean, definition?: Partial<Omit<dataParsers.DataParserCheckerDefinitionRefine, "theFunction">>): DataParserLazyExtended<AddCheckersToDefinition<GenericDefinition, [
17
20
  dataParsers.CheckerRefineImplementation<Output<this>>
@@ -12,6 +12,9 @@ export interface DataParserLiteralExtended<GenericDefinition extends dataParsers
12
12
  dataParsers.DataParserLiteralCheckers<Output<this>>,
13
13
  ...dataParsers.DataParserLiteralCheckers<Output<this>>[]
14
14
  ], GenericChecker>): DataParserLiteralExtended<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
15
+ /**
16
+ * @deprecated Method with unreliable typing.
17
+ */
15
18
  construct<const GenericDefinition extends dataParsers.DataParserDefinitionLiteral>(definition: GenericDefinition): DataParserLiteralExtended<MergeDefinition<dataParsers.DataParserDefinitionLiteral, GenericDefinition>>;
16
19
  refine(theFunction: (input: Output<this>) => boolean, definition?: Partial<Omit<dataParsers.DataParserCheckerDefinitionRefine, "theFunction">>): DataParserLiteralExtended<AddCheckersToDefinition<GenericDefinition, [
17
20
  dataParsers.CheckerRefineImplementation<Output<this>>
@@ -12,6 +12,9 @@ export interface DataParserNilExtended<GenericDefinition extends dataParsers.Dat
12
12
  dataParsers.DataParserNilCheckers,
13
13
  ...dataParsers.DataParserNilCheckers[]
14
14
  ], GenericChecker>): DataParserNilExtended<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
15
+ /**
16
+ * @deprecated Method with unreliable typing.
17
+ */
15
18
  construct<const GenericDefinition extends dataParsers.DataParserDefinitionNil>(definition: GenericDefinition): DataParserNilExtended<MergeDefinition<dataParsers.DataParserDefinitionNil, GenericDefinition>>;
16
19
  refine(theFunction: (input: Output<this>) => boolean, definition?: Partial<Omit<dataParsers.DataParserCheckerDefinitionRefine, "theFunction">>): DataParserNilExtended<AddCheckersToDefinition<GenericDefinition, [
17
20
  dataParsers.CheckerRefineImplementation<Output<this>>
@@ -12,6 +12,9 @@ export interface DataParserNullableExtended<GenericDefinition extends dataParser
12
12
  dataParsers.DataParserNullableCheckers<Output<this>>,
13
13
  ...dataParsers.DataParserNullableCheckers<Output<this>>[]
14
14
  ], GenericChecker>): DataParserNullableExtended<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
15
+ /**
16
+ * @deprecated Method with unreliable typing.
17
+ */
15
18
  construct<const GenericDefinition extends dataParsers.DataParserDefinitionNullable>(definition: GenericDefinition): DataParserNullableExtended<MergeDefinition<dataParsers.DataParserDefinitionNullable, GenericDefinition>>;
16
19
  refine(theFunction: (input: Output<this>) => boolean, definition?: Partial<Omit<dataParsers.DataParserCheckerDefinitionRefine, "theFunction">>): DataParserNullableExtended<AddCheckersToDefinition<GenericDefinition, [
17
20
  dataParsers.CheckerRefineImplementation<Output<this>>
@@ -12,6 +12,9 @@ export interface DataParserNumberExtended<GenericDefinition extends dataParsers.
12
12
  dataParsers.DataParserNumberCheckers,
13
13
  ...dataParsers.DataParserNumberCheckers[]
14
14
  ], GenericChecker>): DataParserNumberExtended<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
15
+ /**
16
+ * @deprecated Method with unreliable typing.
17
+ */
15
18
  construct<const GenericDefinition extends dataParsers.DataParserDefinitionNumber>(definition: GenericDefinition): DataParserNumberExtended<MergeDefinition<dataParsers.DataParserDefinitionNumber, GenericDefinition>>;
16
19
  refine(theFunction: (input: Output<this>) => boolean, definition?: Partial<Omit<dataParsers.DataParserCheckerDefinitionRefine, "theFunction">>): DataParserNumberExtended<AddCheckersToDefinition<GenericDefinition, [
17
20
  dataParsers.CheckerRefineImplementation<Output<this>>
@@ -10,10 +10,22 @@ var override = require('../../common/override.cjs');
10
10
 
11
11
  function object(shape, definition) {
12
12
  const self = baseExtended.dataParserExtendedInit(index.object(shape, definition), {
13
- omit: (self, omitObject, definition) => omit.omit(self, omitObject, definition),
14
- pick: (self, pickObject, definition) => pick.pick(self, pickObject, definition),
15
- partial: (self, definition) => partial.partial(self, definition),
16
- required: (self, definition) => required.required(self, definition),
13
+ omit: (self, omitObject, definition) => {
14
+ const newShape = omit.omitShape(self.definition.shape, omitObject);
15
+ return object(newShape, definition);
16
+ },
17
+ pick: (self, pickObject, definition) => {
18
+ const newShape = pick.pickShape(self.definition.shape, pickObject);
19
+ return object(newShape, definition);
20
+ },
21
+ partial: (self, definition) => {
22
+ const newShape = partial.partialShape(self.definition.shape);
23
+ return object(newShape, definition);
24
+ },
25
+ required: (self, definition) => {
26
+ const newShape = required.requiredShape(self.definition.shape);
27
+ return object(newShape, definition);
28
+ },
17
29
  });
18
30
  return object.overrideHandler.apply(self);
19
31
  }
@@ -1,4 +1,4 @@
1
- import { type FixDeepFunctionInfer, type Kind, type NeverCoalescing } from "../../common";
1
+ import { type Adaptor, type FixDeepFunctionInfer, type Kind, type NeverCoalescing, type SimplifyTopLevel } from "../../common";
2
2
  import { type DataParserExtended } from "../baseExtended";
3
3
  import { type AddCheckersToDefinition, type MergeDefinition } from "../types";
4
4
  import * as dataParsers from "../parsers";
@@ -12,14 +12,25 @@ export interface DataParserObjectExtended<GenericDefinition extends dataParsers.
12
12
  dataParsers.DataParserObjectCheckers<Output<this>>,
13
13
  ...dataParsers.DataParserObjectCheckers<Output<this>>[]
14
14
  ], GenericChecker>): DataParserObjectExtended<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
15
+ /**
16
+ * @deprecated Method with unreliable typing.
17
+ */
15
18
  construct<const GenericDefinition extends dataParsers.DataParserDefinitionObject>(definition: GenericDefinition): DataParserObjectExtended<MergeDefinition<dataParsers.DataParserDefinitionObject, GenericDefinition>>;
16
19
  refine(theFunction: (input: Output<this>) => boolean, definition?: Partial<Omit<dataParsers.DataParserCheckerDefinitionRefine, "theFunction">>): DataParserObjectExtended<AddCheckersToDefinition<GenericDefinition, [
17
20
  dataParsers.CheckerRefineImplementation<Output<this>>
18
21
  ]>>;
19
- omit<const GenericOmitObject extends Partial<Record<keyof GenericDefinition["shape"], true>>, const GenericSubDefinition extends Partial<Omit<dataParsers.DataParserDefinitionObject, "shape" | "optimizedShape">> = never>(omitObject: GenericOmitObject, definition?: GenericDefinition): ReturnType<typeof dataParsers.omit<dataParsers.DataParserObject<GenericDefinition>, GenericOmitObject, GenericSubDefinition>>;
20
- pick<const GenericPickObject extends Partial<Record<keyof GenericDefinition["shape"], true>>, const GenericSubDefinition extends Partial<Omit<dataParsers.DataParserDefinitionObject, "shape" | "optimizedShape">> = never>(pickObject: GenericPickObject, definition?: GenericDefinition): ReturnType<typeof dataParsers.pick<dataParsers.DataParserObject<GenericDefinition>, GenericPickObject, GenericSubDefinition>>;
21
- partial<const GenericSubDefinition extends Partial<Omit<dataParsers.DataParserDefinitionObject, "shape" | "optimizedShape">> = never>(definition?: GenericDefinition): ReturnType<typeof dataParsers.partial<dataParsers.DataParserObject<GenericDefinition>, GenericSubDefinition>>;
22
- required<const GenericSubDefinition extends Partial<Omit<dataParsers.DataParserDefinitionObject, "shape" | "optimizedShape">> = never>(definition?: GenericDefinition): ReturnType<typeof dataParsers.required<dataParsers.DataParserObject<GenericDefinition>, GenericSubDefinition>>;
22
+ omit<const GenericOmitObject extends Partial<Record<keyof GenericDefinition["shape"], true>>, const GenericSubDefinition extends Partial<Omit<dataParsers.DataParserDefinitionObject, "shape" | "optimizedShape">> = never>(omitObject: GenericOmitObject, definition?: GenericDefinition): DataParserObjectExtended<MergeDefinition<dataParsers.DataParserDefinitionObject, NeverCoalescing<GenericSubDefinition, {}> & {
23
+ readonly shape: SimplifyTopLevel<Omit<GenericDefinition["shape"], keyof GenericOmitObject>>;
24
+ }>>;
25
+ pick<const GenericPickObject extends Partial<Record<keyof GenericDefinition["shape"], true>>, const GenericSubDefinition extends Partial<Omit<dataParsers.DataParserDefinitionObject, "shape" | "optimizedShape">> = never>(pickObject: GenericPickObject, definition?: GenericDefinition): DataParserObjectExtended<MergeDefinition<dataParsers.DataParserDefinitionObject, NeverCoalescing<GenericSubDefinition, {}> & {
26
+ readonly shape: SimplifyTopLevel<Pick<GenericDefinition["shape"], Adaptor<keyof GenericPickObject, keyof GenericDefinition["shape"]>>>;
27
+ }>>;
28
+ partial<const GenericSubDefinition extends Partial<Omit<dataParsers.DataParserDefinitionObject, "shape" | "optimizedShape">> = never>(definition?: GenericDefinition): DataParserObjectExtended<MergeDefinition<dataParsers.DataParserDefinitionObject, NeverCoalescing<GenericSubDefinition, {}> & {
29
+ readonly shape: dataParsers.PartialDataParserObject<GenericDefinition["shape"]>;
30
+ }>>;
31
+ required<const GenericSubDefinition extends Partial<Omit<dataParsers.DataParserDefinitionObject, "shape" | "optimizedShape">> = never>(definition?: GenericDefinition): DataParserObjectExtended<MergeDefinition<dataParsers.DataParserDefinitionObject, NeverCoalescing<GenericSubDefinition, {}> & {
32
+ readonly shape: dataParsers.RequireDataParserObject<GenericDefinition["shape"]>;
33
+ }>>;
23
34
  }
24
35
  export declare function object<const GenericShape extends dataParsers.DataParserObjectShape, const GenericDefinition extends Partial<Omit<dataParsers.DataParserDefinitionObject, "shape">> = never>(shape: GenericShape, definition?: GenericDefinition): DataParserObjectExtended<MergeDefinition<dataParsers.DataParserDefinitionObject, NeverCoalescing<GenericDefinition, {}> & {
25
36
  shape: GenericShape;