@duplojs/utils 1.1.13 → 1.1.14

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 (224) hide show
  1. package/dist/array/flat.cjs +1 -13
  2. package/dist/array/flat.d.ts +1 -4
  3. package/dist/array/flat.mjs +1 -13
  4. package/dist/array/index.cjs +2 -0
  5. package/dist/array/index.d.ts +1 -0
  6. package/dist/array/index.mjs +1 -0
  7. package/dist/array/notIncludes.cjs +12 -0
  8. package/dist/array/notIncludes.d.ts +4 -0
  9. package/dist/array/notIncludes.mjs +10 -0
  10. package/dist/array/reduce.d.ts +6 -7
  11. package/dist/array/reduceRight.d.ts +4 -3
  12. package/dist/common/createKindIdentifier.cjs +27 -0
  13. package/dist/common/createKindIdentifier.d.ts +7 -0
  14. package/dist/common/createKindIdentifier.mjs +25 -0
  15. package/dist/common/index.d.ts +1 -0
  16. package/dist/common/kind.d.ts +2 -2
  17. package/dist/common/or.d.ts +9 -9
  18. package/dist/common/types/index.d.ts +1 -0
  19. package/dist/common/types/onlyLiteral.d.ts +18 -0
  20. package/dist/dataParser/base.cjs +55 -29
  21. package/dist/dataParser/base.d.ts +1 -1
  22. package/dist/dataParser/base.mjs +55 -29
  23. package/dist/dataParser/baseExtended.cjs +15 -2
  24. package/dist/dataParser/baseExtended.d.ts +8 -3
  25. package/dist/dataParser/baseExtended.mjs +15 -2
  26. package/dist/dataParser/extended/array.cjs +1 -0
  27. package/dist/dataParser/extended/array.d.ts +11 -5
  28. package/dist/dataParser/extended/array.mjs +1 -0
  29. package/dist/dataParser/extended/bigint.cjs +1 -0
  30. package/dist/dataParser/extended/bigint.d.ts +9 -2
  31. package/dist/dataParser/extended/bigint.mjs +1 -0
  32. package/dist/dataParser/extended/boolean.cjs +1 -0
  33. package/dist/dataParser/extended/boolean.d.ts +13 -2
  34. package/dist/dataParser/extended/boolean.mjs +1 -0
  35. package/dist/dataParser/extended/coerce/bigint.cjs +1 -0
  36. package/dist/dataParser/extended/coerce/bigint.mjs +1 -0
  37. package/dist/dataParser/extended/coerce/boolean.cjs +1 -0
  38. package/dist/dataParser/extended/coerce/boolean.mjs +1 -0
  39. package/dist/dataParser/extended/coerce/empty.cjs +1 -0
  40. package/dist/dataParser/extended/coerce/empty.mjs +1 -0
  41. package/dist/dataParser/extended/coerce/nil.cjs +1 -0
  42. package/dist/dataParser/extended/coerce/nil.mjs +1 -0
  43. package/dist/dataParser/extended/coerce/number.cjs +1 -0
  44. package/dist/dataParser/extended/coerce/number.mjs +1 -0
  45. package/dist/dataParser/extended/coerce/string.cjs +1 -0
  46. package/dist/dataParser/extended/coerce/string.mjs +1 -0
  47. package/dist/dataParser/extended/empty.cjs +1 -0
  48. package/dist/dataParser/extended/empty.d.ts +13 -2
  49. package/dist/dataParser/extended/empty.mjs +1 -0
  50. package/dist/dataParser/extended/index.cjs +2 -0
  51. package/dist/dataParser/extended/index.d.ts +1 -0
  52. package/dist/dataParser/extended/index.mjs +1 -0
  53. package/dist/dataParser/extended/lazy.cjs +1 -0
  54. package/dist/dataParser/extended/lazy.d.ts +13 -3
  55. package/dist/dataParser/extended/lazy.mjs +1 -0
  56. package/dist/dataParser/extended/literal.cjs +1 -0
  57. package/dist/dataParser/extended/literal.d.ts +13 -2
  58. package/dist/dataParser/extended/literal.mjs +1 -0
  59. package/dist/dataParser/extended/nil.cjs +1 -0
  60. package/dist/dataParser/extended/nil.d.ts +13 -2
  61. package/dist/dataParser/extended/nil.mjs +1 -0
  62. package/dist/dataParser/extended/nullable.cjs +1 -0
  63. package/dist/dataParser/extended/nullable.d.ts +14 -4
  64. package/dist/dataParser/extended/nullable.mjs +1 -0
  65. package/dist/dataParser/extended/number.cjs +1 -0
  66. package/dist/dataParser/extended/number.d.ts +9 -2
  67. package/dist/dataParser/extended/number.mjs +1 -0
  68. package/dist/dataParser/extended/object.cjs +1 -0
  69. package/dist/dataParser/extended/object.d.ts +13 -2
  70. package/dist/dataParser/extended/object.mjs +1 -0
  71. package/dist/dataParser/extended/optional.cjs +1 -0
  72. package/dist/dataParser/extended/optional.d.ts +14 -4
  73. package/dist/dataParser/extended/optional.mjs +1 -0
  74. package/dist/dataParser/extended/pipe.cjs +1 -0
  75. package/dist/dataParser/extended/pipe.d.ts +13 -3
  76. package/dist/dataParser/extended/pipe.mjs +1 -0
  77. package/dist/dataParser/extended/record.cjs +3 -2
  78. package/dist/dataParser/extended/record.d.ts +13 -3
  79. package/dist/dataParser/extended/record.mjs +2 -1
  80. package/dist/dataParser/extended/recover.cjs +14 -0
  81. package/dist/dataParser/extended/recover.d.ts +23 -0
  82. package/dist/dataParser/extended/recover.mjs +12 -0
  83. package/dist/dataParser/extended/string.cjs +1 -0
  84. package/dist/dataParser/extended/string.d.ts +9 -2
  85. package/dist/dataParser/extended/string.mjs +1 -0
  86. package/dist/dataParser/extended/templateLiteral.cjs +4 -2
  87. package/dist/dataParser/extended/templateLiteral.d.ts +13 -2
  88. package/dist/dataParser/extended/templateLiteral.mjs +3 -1
  89. package/dist/dataParser/extended/transform.cjs +1 -0
  90. package/dist/dataParser/extended/transform.d.ts +12 -2
  91. package/dist/dataParser/extended/transform.mjs +1 -0
  92. package/dist/dataParser/extended/tuple.cjs +11 -1
  93. package/dist/dataParser/extended/tuple.d.ts +19 -2
  94. package/dist/dataParser/extended/tuple.mjs +11 -1
  95. package/dist/dataParser/extended/union.cjs +1 -0
  96. package/dist/dataParser/extended/union.d.ts +13 -2
  97. package/dist/dataParser/extended/union.mjs +1 -0
  98. package/dist/dataParser/extended/unknown.cjs +1 -0
  99. package/dist/dataParser/extended/unknown.d.ts +13 -2
  100. package/dist/dataParser/extended/unknown.mjs +1 -0
  101. package/dist/dataParser/identifier.cjs +2 -17
  102. package/dist/dataParser/identifier.d.ts +216 -8
  103. package/dist/dataParser/identifier.mjs +2 -17
  104. package/dist/dataParser/index.cjs +29 -18
  105. package/dist/dataParser/index.mjs +18 -14
  106. package/dist/dataParser/parsers/array/checkers/max.cjs +3 -3
  107. package/dist/dataParser/parsers/array/checkers/max.d.ts +2 -2
  108. package/dist/dataParser/parsers/array/checkers/max.mjs +3 -3
  109. package/dist/dataParser/parsers/array/checkers/min.cjs +3 -3
  110. package/dist/dataParser/parsers/array/checkers/min.d.ts +2 -2
  111. package/dist/dataParser/parsers/array/checkers/min.mjs +3 -3
  112. package/dist/dataParser/parsers/array/index.d.ts +14 -7
  113. package/dist/dataParser/parsers/bigint/checkers/max.cjs +3 -3
  114. package/dist/dataParser/parsers/bigint/checkers/max.d.ts +2 -2
  115. package/dist/dataParser/parsers/bigint/checkers/max.mjs +3 -3
  116. package/dist/dataParser/parsers/bigint/checkers/min.cjs +3 -3
  117. package/dist/dataParser/parsers/bigint/checkers/min.d.ts +2 -2
  118. package/dist/dataParser/parsers/bigint/checkers/min.mjs +3 -3
  119. package/dist/dataParser/parsers/bigint/index.d.ts +11 -4
  120. package/dist/dataParser/parsers/boolean.d.ts +16 -4
  121. package/dist/dataParser/parsers/coerce/bigint.cjs +1 -0
  122. package/dist/dataParser/parsers/coerce/bigint.mjs +1 -0
  123. package/dist/dataParser/parsers/coerce/boolean.cjs +1 -0
  124. package/dist/dataParser/parsers/coerce/boolean.mjs +1 -0
  125. package/dist/dataParser/parsers/coerce/empty.cjs +1 -0
  126. package/dist/dataParser/parsers/coerce/empty.mjs +1 -0
  127. package/dist/dataParser/parsers/coerce/nil.cjs +1 -0
  128. package/dist/dataParser/parsers/coerce/nil.mjs +1 -0
  129. package/dist/dataParser/parsers/coerce/number.cjs +1 -0
  130. package/dist/dataParser/parsers/coerce/number.mjs +1 -0
  131. package/dist/dataParser/parsers/coerce/string.cjs +1 -0
  132. package/dist/dataParser/parsers/coerce/string.mjs +1 -0
  133. package/dist/dataParser/parsers/empty.d.ts +16 -4
  134. package/dist/dataParser/parsers/index.d.ts +2 -0
  135. package/dist/dataParser/parsers/lazy.d.ts +16 -4
  136. package/dist/dataParser/parsers/literal.d.ts +16 -4
  137. package/dist/dataParser/parsers/nil.d.ts +16 -4
  138. package/dist/dataParser/parsers/nullable.cjs +3 -2
  139. package/dist/dataParser/parsers/nullable.d.ts +19 -6
  140. package/dist/dataParser/parsers/nullable.mjs +3 -2
  141. package/dist/dataParser/parsers/number/checkers/int.cjs +3 -3
  142. package/dist/dataParser/parsers/number/checkers/int.d.ts +2 -2
  143. package/dist/dataParser/parsers/number/checkers/int.mjs +3 -3
  144. package/dist/dataParser/parsers/number/checkers/max.cjs +3 -3
  145. package/dist/dataParser/parsers/number/checkers/max.d.ts +2 -2
  146. package/dist/dataParser/parsers/number/checkers/max.mjs +3 -3
  147. package/dist/dataParser/parsers/number/checkers/min.cjs +3 -3
  148. package/dist/dataParser/parsers/number/checkers/min.d.ts +2 -2
  149. package/dist/dataParser/parsers/number/checkers/min.mjs +3 -3
  150. package/dist/dataParser/parsers/number/index.d.ts +11 -4
  151. package/dist/dataParser/parsers/object.d.ts +16 -4
  152. package/dist/dataParser/parsers/optional.cjs +3 -2
  153. package/dist/dataParser/parsers/optional.d.ts +19 -6
  154. package/dist/dataParser/parsers/optional.mjs +3 -2
  155. package/dist/dataParser/parsers/pipe.d.ts +16 -4
  156. package/dist/dataParser/parsers/record/findRecordRequiredKey.cjs +50 -0
  157. package/dist/dataParser/parsers/record/findRecordRequiredKey.d.ts +4 -0
  158. package/dist/dataParser/parsers/record/findRecordRequiredKey.mjs +47 -0
  159. package/dist/dataParser/parsers/{record.cjs → record/index.cjs} +21 -3
  160. package/dist/dataParser/parsers/record/index.d.ts +42 -0
  161. package/dist/dataParser/parsers/{record.mjs → record/index.mjs} +21 -4
  162. package/dist/dataParser/parsers/recover.cjs +32 -0
  163. package/dist/dataParser/parsers/recover.d.ts +28 -0
  164. package/dist/dataParser/parsers/recover.mjs +29 -0
  165. package/dist/dataParser/parsers/refine.cjs +18 -0
  166. package/dist/dataParser/parsers/refine.d.ts +17 -0
  167. package/dist/dataParser/parsers/refine.mjs +15 -0
  168. package/dist/dataParser/parsers/string/checkers/email.cjs +3 -3
  169. package/dist/dataParser/parsers/string/checkers/email.d.ts +2 -2
  170. package/dist/dataParser/parsers/string/checkers/email.mjs +3 -3
  171. package/dist/dataParser/parsers/string/checkers/max.cjs +3 -3
  172. package/dist/dataParser/parsers/string/checkers/max.d.ts +2 -2
  173. package/dist/dataParser/parsers/string/checkers/max.mjs +3 -3
  174. package/dist/dataParser/parsers/string/checkers/min.cjs +3 -3
  175. package/dist/dataParser/parsers/string/checkers/min.d.ts +2 -2
  176. package/dist/dataParser/parsers/string/checkers/min.mjs +3 -3
  177. package/dist/dataParser/parsers/string/checkers/regex.cjs +3 -3
  178. package/dist/dataParser/parsers/string/checkers/regex.d.ts +2 -2
  179. package/dist/dataParser/parsers/string/checkers/regex.mjs +3 -3
  180. package/dist/dataParser/parsers/string/checkers/url.cjs +3 -3
  181. package/dist/dataParser/parsers/string/checkers/url.d.ts +2 -2
  182. package/dist/dataParser/parsers/string/checkers/url.mjs +3 -3
  183. package/dist/dataParser/parsers/string/index.d.ts +11 -4
  184. package/dist/dataParser/parsers/templateLiteral/createTemplateLiteralPattern.cjs +75 -0
  185. package/dist/dataParser/parsers/templateLiteral/createTemplateLiteralPattern.d.ts +2 -0
  186. package/dist/dataParser/parsers/templateLiteral/createTemplateLiteralPattern.mjs +73 -0
  187. package/dist/dataParser/parsers/templateLiteral/index.cjs +31 -0
  188. package/dist/dataParser/parsers/templateLiteral/index.d.ts +66 -0
  189. package/dist/dataParser/parsers/templateLiteral/index.mjs +27 -0
  190. package/dist/dataParser/parsers/transform.d.ts +16 -4
  191. package/dist/dataParser/parsers/tuple.d.ts +14 -4
  192. package/dist/dataParser/parsers/union.d.ts +16 -4
  193. package/dist/dataParser/parsers/unknown.d.ts +16 -4
  194. package/dist/dataParser/types/checkers.d.ts +1 -1
  195. package/dist/dataParser/types/dataParsers.d.ts +2 -2
  196. package/dist/either/bool/falsy.cjs +1 -1
  197. package/dist/either/bool/falsy.mjs +1 -1
  198. package/dist/either/bool/truthy.cjs +2 -2
  199. package/dist/either/bool/truthy.mjs +2 -2
  200. package/dist/either/future/create.cjs +1 -1
  201. package/dist/either/future/create.mjs +1 -1
  202. package/dist/either/nullable/empty.cjs +1 -1
  203. package/dist/either/nullable/empty.mjs +1 -1
  204. package/dist/either/nullish/filled.cjs +2 -2
  205. package/dist/either/nullish/filled.mjs +2 -2
  206. package/dist/either/optional/filled.cjs +2 -2
  207. package/dist/either/optional/filled.mjs +2 -2
  208. package/dist/either/right/asyncPipe.cjs +1 -1
  209. package/dist/either/right/asyncPipe.mjs +1 -1
  210. package/dist/either/right/pipe.cjs +1 -1
  211. package/dist/either/right/pipe.mjs +1 -1
  212. package/dist/generator/asyncReduce.cjs +1 -1
  213. package/dist/generator/asyncReduce.d.ts +4 -3
  214. package/dist/generator/asyncReduce.mjs +1 -1
  215. package/dist/generator/reduce.d.ts +6 -7
  216. package/dist/index.cjs +2 -0
  217. package/dist/index.mjs +1 -0
  218. package/dist/string/types/index.d.ts +1 -0
  219. package/dist/string/types/templateLiteralContainLargeType.d.ts +5 -0
  220. package/package.json +3 -3
  221. package/dist/dataParser/parsers/record.d.ts +0 -30
  222. package/dist/dataParser/parsers/templateLiteral.cjs +0 -47
  223. package/dist/dataParser/parsers/templateLiteral.d.ts +0 -49
  224. package/dist/dataParser/parsers/templateLiteral.mjs +0 -44
@@ -4,9 +4,9 @@ var base = require('../../../base.cjs');
4
4
  var error = require('../../../error.cjs');
5
5
  var kind = require('../../../kind.cjs');
6
6
 
7
- const dataParserCheckerNumberMinKind = kind.createDataParserKind("checker-number-min");
7
+ const checkerNumberMinKind = kind.createDataParserKind("checker-number-min");
8
8
  function checkerNumberMin(min, definition = {}) {
9
- return base.dataParserCheckerInit(dataParserCheckerNumberMinKind, {
9
+ return base.dataParserCheckerInit(checkerNumberMinKind, {
10
10
  definition: {
11
11
  ...definition,
12
12
  min,
@@ -15,4 +15,4 @@ function checkerNumberMin(min, definition = {}) {
15
15
  }
16
16
 
17
17
  exports.checkerNumberMin = checkerNumberMin;
18
- exports.dataParserCheckerNumberMinKind = dataParserCheckerNumberMinKind;
18
+ exports.checkerNumberMinKind = checkerNumberMinKind;
@@ -3,8 +3,8 @@ import { type DataParserCheckerDefinition, type DataParserChecker } from "../../
3
3
  export interface DataParserCheckerDefinitionNumberMin extends DataParserCheckerDefinition {
4
4
  min: number;
5
5
  }
6
- export declare const dataParserCheckerNumberMinKind: import("../../../../common").KindHandler<import("../../../../common").KindDefinition<"@DuplojsUtilsDataParser/checker-number-min", unknown>>;
7
- type _DataParserCheckerNumberMin = (Kind<typeof dataParserCheckerNumberMinKind.definition> & DataParserChecker<DataParserCheckerDefinitionNumberMin, number>);
6
+ export declare const checkerNumberMinKind: import("../../../../common").KindHandler<import("../../../../common").KindDefinition<"@DuplojsUtilsDataParser/checker-number-min", unknown>>;
7
+ type _DataParserCheckerNumberMin = (Kind<typeof checkerNumberMinKind.definition> & DataParserChecker<DataParserCheckerDefinitionNumberMin, number>);
8
8
  export interface DataParserCheckerNumberMin extends _DataParserCheckerNumberMin {
9
9
  }
10
10
  export declare function checkerNumberMin(min: number, definition?: Partial<Omit<DataParserCheckerDefinitionNumberMin, "min">>): DataParserCheckerNumberMin;
@@ -2,9 +2,9 @@ import { dataParserCheckerInit } from '../../../base.mjs';
2
2
  import { SymbolDataParserErrorIssue } from '../../../error.mjs';
3
3
  import { createDataParserKind } from '../../../kind.mjs';
4
4
 
5
- const dataParserCheckerNumberMinKind = createDataParserKind("checker-number-min");
5
+ const checkerNumberMinKind = createDataParserKind("checker-number-min");
6
6
  function checkerNumberMin(min, definition = {}) {
7
- return dataParserCheckerInit(dataParserCheckerNumberMinKind, {
7
+ return dataParserCheckerInit(checkerNumberMinKind, {
8
8
  definition: {
9
9
  ...definition,
10
10
  min,
@@ -12,4 +12,4 @@ function checkerNumberMin(min, definition = {}) {
12
12
  }, (value, self) => value >= self.definition.min ? value : SymbolDataParserErrorIssue);
13
13
  }
14
14
 
15
- export { checkerNumberMin, dataParserCheckerNumberMinKind };
15
+ export { checkerNumberMin, checkerNumberMinKind };
@@ -1,9 +1,13 @@
1
- import { type NeverCoalescing, type Kind } from "../../../common";
2
- import { type DataParserDefinition, type DataParser } from "../../base";
1
+ import { type NeverCoalescing, type Kind, type FixDeepFunctionInfer } from "../../../common";
2
+ import { type DataParserDefinition, type DataParser, type DataParserChecker } from "../../base";
3
3
  import { type AddCheckersToDefinition, type MergeDefinition } from "../../../dataParser/types";
4
4
  import { type DataParserCheckerInt, type DataParserCheckerNumberMin, type DataParserCheckerNumberMax } from "./checkers";
5
+ import { type CheckerRefineImplementation } from "../refine";
6
+ import { type GetPropsWithValueExtends } from "../../../object";
5
7
  export * from "./checkers";
6
- export type DataParserNumberCheckers = (DataParserCheckerInt | DataParserCheckerNumberMin | DataParserCheckerNumberMax);
8
+ export interface DataParserNumberCheckerCustom {
9
+ }
10
+ export type DataParserNumberCheckers = (DataParserNumberCheckerCustom[GetPropsWithValueExtends<DataParserNumberCheckerCustom, DataParserChecker>] | DataParserCheckerInt | DataParserCheckerNumberMin | DataParserCheckerNumberMax | CheckerRefineImplementation<number>);
7
11
  export interface DataParserDefinitionNumber extends DataParserDefinition<DataParserNumberCheckers> {
8
12
  readonly coerce: boolean;
9
13
  }
@@ -13,6 +17,9 @@ export interface DataParserNumber<GenericDefinition extends DataParserDefinition
13
17
  addChecker<GenericChecker extends readonly [
14
18
  DataParserNumberCheckers,
15
19
  ...DataParserNumberCheckers[]
16
- ]>(...args: GenericChecker): DataParserNumber<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
20
+ ]>(...args: FixDeepFunctionInfer<readonly [
21
+ DataParserNumberCheckers,
22
+ ...DataParserNumberCheckers[]
23
+ ], GenericChecker>): DataParserNumber<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
17
24
  }
18
25
  export declare function number<const GenericDefinition extends Partial<DataParserDefinitionNumber> = never>(definition?: GenericDefinition): DataParserNumber<MergeDefinition<DataParserDefinitionNumber, NeverCoalescing<GenericDefinition, {}>>>;
@@ -1,7 +1,9 @@
1
- import { type Kind, type IsEqual, type NeverCoalescing, type Memoized } from "../../common";
2
- import { dataParserKind, type Input, type Output, type DataParser, type DataParserDefinition } from "../base";
3
- import { type MergeDefinition } from "../types";
1
+ import { type Kind, type IsEqual, type NeverCoalescing, type Memoized, type FixDeepFunctionInfer } from "../../common";
2
+ import { dataParserKind, type Input, type Output, type DataParser, type DataParserDefinition, type DataParserChecker } from "../base";
3
+ import { type AddCheckersToDefinition, type MergeDefinition } from "../types";
4
4
  import * as DObject from "../../object";
5
+ import { type GetPropsWithValueExtends } from "../../object";
6
+ import { type CheckerRefineImplementation } from "./refine";
5
7
  export type DataParserObjectShape = Readonly<Record<string, DataParser>>;
6
8
  export type DataParserObjectShapeOutput<GenericShape extends DataParserObjectShape> = IsEqual<GenericShape, DataParserObjectShape> extends true ? DataParserObjectShape : {
7
9
  -readonly [Prop in keyof GenericShape as GenericShape[Prop] extends Kind<typeof dataParserKind.definition> ? Prop : never]: Output<GenericShape[Prop]>;
@@ -9,7 +11,10 @@ export type DataParserObjectShapeOutput<GenericShape extends DataParserObjectSha
9
11
  export type DataParserObjectShapeInput<GenericShape extends DataParserObjectShape> = IsEqual<GenericShape, DataParserObjectShape> extends true ? DataParserObjectShape : {
10
12
  -readonly [Prop in keyof GenericShape as GenericShape[Prop] extends Kind<typeof dataParserKind.definition> ? Prop : never]: Input<GenericShape[Prop]>;
11
13
  } extends infer InferredResult extends object ? DObject.PartialKeys<InferredResult, DObject.GetPropsWithValueExtends<InferredResult, undefined>> : never;
12
- export interface DataParserDefinitionObject extends DataParserDefinition<never> {
14
+ export interface DataParserObjectCheckerCustom<GenericInput extends DataParserObjectShape = DataParserObjectShape> {
15
+ }
16
+ export type DataParserObjectCheckers<GenericInput extends DataParserObjectShape = DataParserObjectShape> = (DataParserObjectCheckerCustom<GenericInput>[GetPropsWithValueExtends<DataParserObjectCheckerCustom<GenericInput>, DataParserChecker>] | CheckerRefineImplementation<GenericInput>);
17
+ export interface DataParserDefinitionObject extends DataParserDefinition<DataParserObjectCheckers> {
13
18
  readonly shape: DataParserObjectShape;
14
19
  readonly optimizedShape: Memoized<{
15
20
  readonly key: string;
@@ -19,6 +24,13 @@ export interface DataParserDefinitionObject extends DataParserDefinition<never>
19
24
  export declare const objectKind: import("../../common").KindHandler<import("../../common").KindDefinition<"@DuplojsUtilsDataParser/object", unknown>>;
20
25
  type _DataParserObject<GenericDefinition extends DataParserDefinitionObject> = (DataParser<GenericDefinition, DataParserObjectShapeOutput<GenericDefinition["shape"]>, DataParserObjectShapeInput<GenericDefinition["shape"]>> & Kind<typeof objectKind.definition>);
21
26
  export interface DataParserObject<GenericDefinition extends DataParserDefinitionObject = DataParserDefinitionObject> extends _DataParserObject<GenericDefinition> {
27
+ addChecker<GenericChecker extends readonly [
28
+ DataParserObjectCheckers<Output<this>>,
29
+ ...DataParserObjectCheckers<Output<this>>[]
30
+ ]>(...args: FixDeepFunctionInfer<readonly [
31
+ DataParserObjectCheckers<Output<this>>,
32
+ ...DataParserObjectCheckers<Output<this>>[]
33
+ ], GenericChecker>): DataParserObject<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
22
34
  }
23
35
  export declare function object<const GenericShape extends DataParserObjectShape, const GenericDefinition extends Partial<Omit<DataParserDefinitionObject, "shape">> = never>(shape: GenericShape, definition?: GenericDefinition): DataParserObject<MergeDefinition<DataParserDefinitionObject, NeverCoalescing<GenericDefinition, {}> & {
24
36
  shape: GenericShape;
@@ -10,17 +10,18 @@ function optional(inner, definition) {
10
10
  errorMessage: definition?.errorMessage,
11
11
  checkers: definition?.checkers ?? [],
12
12
  inner,
13
+ coalescingValue: definition?.coalescingValue,
13
14
  },
14
15
  }, {
15
16
  sync: (data, error, self) => {
16
17
  if (data === undefined) {
17
- return data;
18
+ return self.definition.coalescingValue;
18
19
  }
19
20
  return self.definition.inner.exec(data, error);
20
21
  },
21
22
  async: async (data, error, self) => {
22
23
  if (data === undefined) {
23
- return data;
24
+ return self.definition.coalescingValue;
24
25
  }
25
26
  return self.definition.inner.asyncExec(data, error);
26
27
  },
@@ -1,14 +1,27 @@
1
- import { type NeverCoalescing, type Kind } from "../../common";
2
- import { type DataParserDefinition, type DataParser, type Output, type Input } from "../base";
3
- import { type MergeDefinition } from "../../dataParser/types";
4
- export interface DataParserDefinitionOptional extends DataParserDefinition<never> {
1
+ import { type NeverCoalescing, type Kind, type FixDeepFunctionInfer, type IsEqual } from "../../common";
2
+ import { type DataParserDefinition, type DataParser, type Output, type Input, type DataParserChecker } from "../base";
3
+ import { type AddCheckersToDefinition, type MergeDefinition } from "../../dataParser/types";
4
+ import { type CheckerRefineImplementation } from "./refine";
5
+ import { type GetPropsWithValueExtends } from "../../object";
6
+ export interface DataParserOptionalCheckerCustom<GenericInput extends unknown = unknown> {
7
+ }
8
+ export type DataParserOptionalCheckers<GenericInput extends unknown = unknown> = (DataParserOptionalCheckerCustom<GenericInput>[GetPropsWithValueExtends<DataParserOptionalCheckerCustom<GenericInput>, DataParserChecker>] | CheckerRefineImplementation<GenericInput>);
9
+ export interface DataParserDefinitionOptional<GenericCoalescingValue extends unknown = unknown> extends DataParserDefinition<DataParserOptionalCheckers> {
5
10
  readonly inner: DataParser;
11
+ readonly coalescingValue: GenericCoalescingValue;
6
12
  }
7
13
  export declare const optionalKind: import("../../common").KindHandler<import("../../common").KindDefinition<"@DuplojsUtilsDataParser/optional", unknown>>;
8
- type _DataParserOptional<GenericDefinition extends DataParserDefinitionOptional> = (DataParser<GenericDefinition, Output<GenericDefinition["inner"]> | undefined, Input<GenericDefinition["inner"]> | undefined> & Kind<typeof optionalKind.definition>);
14
+ type _DataParserOptional<GenericDefinition extends DataParserDefinitionOptional> = (DataParser<GenericDefinition, IsEqual<GenericDefinition["coalescingValue"], unknown> extends true ? Output<GenericDefinition["inner"]> | undefined : Output<GenericDefinition["inner"]>, Input<GenericDefinition["inner"]> | undefined> & Kind<typeof optionalKind.definition>);
9
15
  export interface DataParserOptional<GenericDefinition extends DataParserDefinitionOptional = DataParserDefinitionOptional> extends _DataParserOptional<GenericDefinition> {
16
+ addChecker<GenericChecker extends readonly [
17
+ DataParserOptionalCheckers<Output<this>>,
18
+ ...DataParserOptionalCheckers<Output<this>>[]
19
+ ]>(...args: FixDeepFunctionInfer<readonly [
20
+ DataParserOptionalCheckers<Output<this>>,
21
+ ...DataParserOptionalCheckers<Output<this>>[]
22
+ ], GenericChecker>): DataParserOptional<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
10
23
  }
11
- export declare function optional<GenericDataParser extends DataParser, const GenericDefinition extends Partial<Omit<DataParserDefinitionOptional, "inner">> = never>(inner: GenericDataParser, definition?: GenericDefinition): DataParserOptional<MergeDefinition<DataParserDefinitionOptional, NeverCoalescing<GenericDefinition, {}> & {
24
+ export declare function optional<GenericDataParser extends DataParser, const GenericDefinition extends Partial<Omit<DataParserDefinitionOptional<Output<GenericDataParser> | undefined>, "inner">> = never>(inner: GenericDataParser, definition?: GenericDefinition): DataParserOptional<MergeDefinition<DataParserDefinitionOptional, NeverCoalescing<GenericDefinition, {}> & {
12
25
  inner: GenericDataParser;
13
26
  }>>;
14
27
  export {};
@@ -8,17 +8,18 @@ function optional(inner, definition) {
8
8
  errorMessage: definition?.errorMessage,
9
9
  checkers: definition?.checkers ?? [],
10
10
  inner,
11
+ coalescingValue: definition?.coalescingValue,
11
12
  },
12
13
  }, {
13
14
  sync: (data, error, self) => {
14
15
  if (data === undefined) {
15
- return data;
16
+ return self.definition.coalescingValue;
16
17
  }
17
18
  return self.definition.inner.exec(data, error);
18
19
  },
19
20
  async: async (data, error, self) => {
20
21
  if (data === undefined) {
21
- return data;
22
+ return self.definition.coalescingValue;
22
23
  }
23
24
  return self.definition.inner.asyncExec(data, error);
24
25
  },
@@ -1,13 +1,25 @@
1
- import { type NeverCoalescing, type Kind } from "../../common";
2
- import { type DataParserDefinition, type DataParser, type Output, type Input } from "../base";
3
- import { type MergeDefinition } from "../../dataParser/types";
4
- export interface DataParserDefinitionPipe extends DataParserDefinition<never> {
1
+ import { type NeverCoalescing, type Kind, type FixDeepFunctionInfer } from "../../common";
2
+ import { type DataParserDefinition, type DataParser, type Output, type Input, type DataParserChecker } from "../base";
3
+ import { type AddCheckersToDefinition, type MergeDefinition } from "../../dataParser/types";
4
+ import { type CheckerRefineImplementation } from "./refine";
5
+ import { type GetPropsWithValueExtends } from "../../object";
6
+ export interface DataParserPipeCheckerCustom<GenericInput extends unknown = unknown> {
7
+ }
8
+ export type DataParserPipeCheckers<GenericInput extends unknown = unknown> = (DataParserPipeCheckerCustom<GenericInput>[GetPropsWithValueExtends<DataParserPipeCheckerCustom<GenericInput>, DataParserChecker>] | CheckerRefineImplementation<GenericInput>);
9
+ export interface DataParserDefinitionPipe extends DataParserDefinition<DataParserPipeCheckers> {
5
10
  readonly input: DataParser;
6
11
  readonly output: DataParser;
7
12
  }
8
13
  export declare const pipeKind: import("../../common").KindHandler<import("../../common").KindDefinition<"@DuplojsUtilsDataParser/pipe", unknown>>;
9
14
  type _DataParserPipe<GenericDefinition extends DataParserDefinitionPipe> = (DataParser<GenericDefinition, Output<GenericDefinition["output"]>, Input<GenericDefinition["input"]>> & Kind<typeof pipeKind.definition>);
10
15
  export interface DataParserPipe<GenericDefinition extends DataParserDefinitionPipe = DataParserDefinitionPipe> extends _DataParserPipe<GenericDefinition> {
16
+ addChecker<GenericChecker extends readonly [
17
+ DataParserPipeCheckers<Output<this>>,
18
+ ...DataParserPipeCheckers<Output<this>>[]
19
+ ]>(...args: FixDeepFunctionInfer<readonly [
20
+ DataParserPipeCheckers<Output<this>>,
21
+ ...DataParserPipeCheckers<Output<this>>[]
22
+ ], GenericChecker>): DataParserPipe<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
11
23
  }
12
24
  export declare function pipe<GenericInput extends DataParser, GenericOutput extends DataParser, const GenericDefinition extends Partial<Omit<DataParserDefinitionPipe, "input" | "output">> = never>(input: GenericInput, output: GenericOutput, definition?: GenericDefinition): DataParserPipe<MergeDefinition<DataParserDefinitionPipe, NeverCoalescing<GenericDefinition, {}> & {
13
25
  input: GenericInput;
@@ -0,0 +1,50 @@
1
+ 'use strict';
2
+
3
+ var pipe = require('../../../common/pipe.cjs');
4
+ var innerPipe = require('../../../common/innerPipe.cjs');
5
+ var when$1 = require('../../../common/when.cjs');
6
+ var isType = require('../../../common/isType.cjs');
7
+ var or = require('../../../common/or.cjs');
8
+ var justReturn = require('../../../common/justReturn.cjs');
9
+ var filter = require('../../../array/filter.cjs');
10
+ var reduce = require('../../../array/reduce.cjs');
11
+ var includes = require('../../../array/includes.cjs');
12
+ var map = require('../../../array/map.cjs');
13
+ var flat = require('../../../array/flat.cjs');
14
+ var flatMap = require('../../../array/flatMap.cjs');
15
+ var notIncludes = require('../../../array/notIncludes.cjs');
16
+ require('../../../common/globalStore.cjs');
17
+ require('../../../common/builder.cjs');
18
+ require('../../../pattern/result.cjs');
19
+ var exhaustive = require('../../../pattern/exhaustive.cjs');
20
+ var otherwise = require('../../../pattern/otherwise.cjs');
21
+ var when = require('../../../pattern/when.cjs');
22
+ var concat = require('../../../string/concat.cjs');
23
+ var index$1 = require('../string/index.cjs');
24
+ var index$2 = require('../number/index.cjs');
25
+ var literal = require('../literal.cjs');
26
+ var union = require('../union.cjs');
27
+ var index = require('../templateLiteral/index.cjs');
28
+ var index$3 = require('../bigint/index.cjs');
29
+ var boolean = require('../boolean.cjs');
30
+ var empty = require('../empty.cjs');
31
+ var nil = require('../nil.cjs');
32
+
33
+ function findRecordRequiredKeyOnTemplateLiteralPart(templatePart) {
34
+ return pipe.pipe(templatePart, map.map(innerPipe.innerPipe(when.when((value) => index$1.stringKind.has(value)
35
+ || index$2.numberKind.has(value)
36
+ || index$3.bigIntKind.has(value), justReturn.justReturn(null)), when.when(or.or([
37
+ isType.isType("bigint"),
38
+ isType.isType("boolean"),
39
+ isType.isType("null"),
40
+ isType.isType("number"),
41
+ isType.isType("string"),
42
+ isType.isType("undefined"),
43
+ ]), innerPipe.innerPipe(when$1.when(isType.isType("bigint"), (value) => `${value}n`), String)), when.when(literal.literalKind.has, (value) => findRecordRequiredKey(value)), when.when(index.templateLiteralKind.has, (value) => findRecordRequiredKeyOnTemplateLiteralPart(value.definition.template)), when.when(boolean.booleanKind.has, justReturn.justReturn(["true", "false"])), when.when(empty.emptyKind.has, justReturn.justReturn("undefined")), when.when(nil.nilKind.has, justReturn.justReturn("null")), when.when(union.unionKind.has, (dataParser) => pipe.pipe(dataParser.definition.options, map.map((element) => findRecordRequiredKeyOnTemplateLiteralPart([element])), when.when(notIncludes.notIncludes(null), flat.flat), otherwise.otherwise(justReturn.justReturn(null)))), exhaustive.exhaustive)), reduce.reduce(reduce.reduceFrom([""]), ({ lastValue, element, exit, next }) => pipe.pipe(element, when.when(isType.isType("null"), justReturn.justReturn(exit(null))), when.when(isType.isType("string"), (element) => next(map.map(lastValue, (value) => concat.concat(value, element)))), when.when(isType.isType("array"), (elements) => next(flatMap.flatMap(lastValue, (value) => map.map(elements, (subValue) => concat.concat(value, subValue))))), exhaustive.exhaustive)));
44
+ }
45
+ function findRecordRequiredKey(keyParser) {
46
+ return pipe.pipe(keyParser, when.when((value) => index$1.stringKind.has(value) || index$2.numberKind.has(value), justReturn.justReturn(null)), when.when(literal.literalKind.has, (dataParser) => pipe.pipe(dataParser.definition.value, map.map(innerPipe.innerPipe(when$1.when(isType.isType("bigint"), (value) => `${value}n`), String)))), when.when(union.unionKind.has, (dataParser) => pipe.pipe(dataParser.definition.options, map.map(findRecordRequiredKey), when.when(includes.includes(null), justReturn.justReturn(null)), otherwise.otherwise(innerPipe.innerPipe(filter.filter(isType.isType("array")), flat.flat)))), when.when(index.templateLiteralKind.has, (dataParser) => findRecordRequiredKeyOnTemplateLiteralPart(dataParser.definition.template)), exhaustive.exhaustive);
47
+ }
48
+
49
+ exports.findRecordRequiredKey = findRecordRequiredKey;
50
+ exports.findRecordRequiredKeyOnTemplateLiteralPart = findRecordRequiredKeyOnTemplateLiteralPart;
@@ -0,0 +1,4 @@
1
+ import { type DataParserRecordKey } from ".";
2
+ import { type TemplateLiteralParts } from "../templateLiteral";
3
+ export declare function findRecordRequiredKeyOnTemplateLiteralPart(templatePart: readonly TemplateLiteralParts[]): string[] | null;
4
+ export declare function findRecordRequiredKey(keyParser: DataParserRecordKey): string[] | null;
@@ -0,0 +1,47 @@
1
+ import { pipe } from '../../../common/pipe.mjs';
2
+ import { innerPipe } from '../../../common/innerPipe.mjs';
3
+ import { when as when$1 } from '../../../common/when.mjs';
4
+ import { isType } from '../../../common/isType.mjs';
5
+ import { or } from '../../../common/or.mjs';
6
+ import { justReturn } from '../../../common/justReturn.mjs';
7
+ import { filter } from '../../../array/filter.mjs';
8
+ import { reduce, reduceFrom } from '../../../array/reduce.mjs';
9
+ import { includes } from '../../../array/includes.mjs';
10
+ import { map } from '../../../array/map.mjs';
11
+ import { flat } from '../../../array/flat.mjs';
12
+ import { flatMap } from '../../../array/flatMap.mjs';
13
+ import { notIncludes } from '../../../array/notIncludes.mjs';
14
+ import '../../../common/globalStore.mjs';
15
+ import '../../../common/builder.mjs';
16
+ import '../../../pattern/result.mjs';
17
+ import { exhaustive } from '../../../pattern/exhaustive.mjs';
18
+ import { otherwise } from '../../../pattern/otherwise.mjs';
19
+ import { when } from '../../../pattern/when.mjs';
20
+ import { concat } from '../../../string/concat.mjs';
21
+ import { stringKind } from '../string/index.mjs';
22
+ import { numberKind } from '../number/index.mjs';
23
+ import { literalKind } from '../literal.mjs';
24
+ import { unionKind } from '../union.mjs';
25
+ import { templateLiteralKind } from '../templateLiteral/index.mjs';
26
+ import { bigIntKind } from '../bigint/index.mjs';
27
+ import { booleanKind } from '../boolean.mjs';
28
+ import { emptyKind } from '../empty.mjs';
29
+ import { nilKind } from '../nil.mjs';
30
+
31
+ function findRecordRequiredKeyOnTemplateLiteralPart(templatePart) {
32
+ return pipe(templatePart, map(innerPipe(when((value) => stringKind.has(value)
33
+ || numberKind.has(value)
34
+ || bigIntKind.has(value), justReturn(null)), when(or([
35
+ isType("bigint"),
36
+ isType("boolean"),
37
+ isType("null"),
38
+ isType("number"),
39
+ isType("string"),
40
+ isType("undefined"),
41
+ ]), innerPipe(when$1(isType("bigint"), (value) => `${value}n`), String)), when(literalKind.has, (value) => findRecordRequiredKey(value)), when(templateLiteralKind.has, (value) => findRecordRequiredKeyOnTemplateLiteralPart(value.definition.template)), when(booleanKind.has, justReturn(["true", "false"])), when(emptyKind.has, justReturn("undefined")), when(nilKind.has, justReturn("null")), when(unionKind.has, (dataParser) => pipe(dataParser.definition.options, map((element) => findRecordRequiredKeyOnTemplateLiteralPart([element])), when(notIncludes(null), flat), otherwise(justReturn(null)))), exhaustive)), reduce(reduceFrom([""]), ({ lastValue, element, exit, next }) => pipe(element, when(isType("null"), justReturn(exit(null))), when(isType("string"), (element) => next(map(lastValue, (value) => concat(value, element)))), when(isType("array"), (elements) => next(flatMap(lastValue, (value) => map(elements, (subValue) => concat(value, subValue))))), exhaustive)));
42
+ }
43
+ function findRecordRequiredKey(keyParser) {
44
+ return pipe(keyParser, when((value) => stringKind.has(value) || numberKind.has(value), justReturn(null)), when(literalKind.has, (dataParser) => pipe(dataParser.definition.value, map(innerPipe(when$1(isType("bigint"), (value) => `${value}n`), String)))), when(unionKind.has, (dataParser) => pipe(dataParser.definition.options, map(findRecordRequiredKey), when(includes(null), justReturn(null)), otherwise(innerPipe(filter(isType("array")), flat)))), when(templateLiteralKind.has, (dataParser) => findRecordRequiredKeyOnTemplateLiteralPart(dataParser.definition.template)), exhaustive);
45
+ }
46
+
47
+ export { findRecordRequiredKey, findRecordRequiredKeyOnTemplateLiteralPart };
@@ -1,8 +1,9 @@
1
1
  'use strict';
2
2
 
3
- var base = require('../base.cjs');
4
- var error = require('../error.cjs');
5
- var kind = require('../kind.cjs');
3
+ var base = require('../../base.cjs');
4
+ var error = require('../../error.cjs');
5
+ var kind = require('../../kind.cjs');
6
+ var findRecordRequiredKey = require('./findRecordRequiredKey.cjs');
6
7
 
7
8
  const recordKind = kind.createDataParserKind("record");
8
9
  function record(key, value, definition) {
@@ -12,6 +13,7 @@ function record(key, value, definition) {
12
13
  checkers: definition?.checkers ?? [],
13
14
  key,
14
15
  value,
16
+ requireKey: findRecordRequiredKey.findRecordRequiredKey(key),
15
17
  },
16
18
  }, {
17
19
  sync: (data, error$1, self) => {
@@ -43,6 +45,13 @@ function record(key, value, definition) {
43
45
  }
44
46
  }
45
47
  error.popErrorPath(error$1);
48
+ if (output === base.SymbolDataParserError) {
49
+ return output;
50
+ }
51
+ if (self.definition.requireKey
52
+ && self.definition.requireKey.length !== Object.keys(output).length) {
53
+ return error.SymbolDataParserErrorIssue;
54
+ }
46
55
  return output;
47
56
  },
48
57
  async: async (data, error$1, self) => {
@@ -74,10 +83,19 @@ function record(key, value, definition) {
74
83
  }
75
84
  }
76
85
  error.popErrorPath(error$1);
86
+ if (output === base.SymbolDataParserError) {
87
+ return output;
88
+ }
89
+ if (self.definition.requireKey
90
+ && self.definition.requireKey.length !== Object.keys(output).length) {
91
+ return error.SymbolDataParserErrorIssue;
92
+ }
77
93
  return output;
78
94
  },
79
95
  });
80
96
  }
81
97
 
98
+ exports.findRecordRequiredKey = findRecordRequiredKey.findRecordRequiredKey;
99
+ exports.findRecordRequiredKeyOnTemplateLiteralPart = findRecordRequiredKey.findRecordRequiredKeyOnTemplateLiteralPart;
82
100
  exports.record = record;
83
101
  exports.recordKind = recordKind;
@@ -0,0 +1,42 @@
1
+ import { type NeverCoalescing, type Kind, type FixDeepFunctionInfer, type Adaptor } from "../../../common";
2
+ import { type DataParserDefinition, type DataParser, type Output, type Input, type DataParserChecker } from "../../base";
3
+ import { type AddCheckersToDefinition, type MergeDefinition } from "../../../dataParser/types";
4
+ import { type DataParserString } from "../string";
5
+ import { type DataParserTemplateLiteral } from "../templateLiteral";
6
+ import { type DataParserLiteral } from "../literal";
7
+ import { type DataParserDefinitionNumber, type DataParserNumber } from "../number";
8
+ import { type DataParserDefinitionUnion, type DataParserUnion } from "../union";
9
+ import { type CheckerRefineImplementation } from "../refine";
10
+ import { type TemplateLiteralContainLargeType } from "../../../string";
11
+ import { type GetPropsWithValueExtends } from "../../../object";
12
+ export * from "./findRecordRequiredKey";
13
+ export type DataParserRecordKey = (DataParserString | DataParserTemplateLiteral | DataParserLiteral | DataParserNumber<DataParserDefinitionNumber & {
14
+ coerce: true;
15
+ }> | DataParserUnion<DataParserDefinitionUnion & {
16
+ options: DataParserRecordKey[];
17
+ }>);
18
+ export interface DataParserRecordCheckerCustom<GenericInput extends Record<string, unknown> = Record<string, unknown>> {
19
+ }
20
+ export type DataParserRecordCheckers<GenericInput extends Record<string, unknown> = Record<string, unknown>> = (DataParserRecordCheckerCustom<GenericInput>[GetPropsWithValueExtends<DataParserRecordCheckerCustom<GenericInput>, DataParserChecker>] | CheckerRefineImplementation<GenericInput>);
21
+ export interface DataParserDefinitionRecord extends DataParserDefinition<DataParserRecordCheckers> {
22
+ readonly key: DataParserRecordKey;
23
+ readonly value: DataParser;
24
+ readonly requireKey: string[] | null;
25
+ }
26
+ export declare const recordKind: import("../../../common").KindHandler<import("../../../common").KindDefinition<"@DuplojsUtilsDataParser/record", unknown>>;
27
+ export type DataParserRecordShapeOutput<GenericDataParserKey extends DataParserRecordKey, GenericDataParserValue extends DataParser> = Extract<Record<Output<GenericDataParserKey> extends infer InferredKey extends string | number ? `${InferredKey}` : never, Output<GenericDataParserValue> extends infer InferredValue ? InferredValue : never>, any>;
28
+ export type DataParserRecordShapeInput<GenericDataParserKey extends DataParserRecordKey, GenericDataParserValue extends DataParser> = Extract<Record<Input<GenericDataParserKey> extends infer InferredKey extends string | number ? `${InferredKey}` : never, Input<GenericDataParserValue> extends infer InferredValue ? InferredValue : never>, any>;
29
+ type _DataParserRecord<GenericDefinition extends DataParserDefinitionRecord> = (DataParser<GenericDefinition, DataParserRecordShapeOutput<GenericDefinition["key"], GenericDefinition["value"]> extends infer InferredOutput extends Record<string, unknown> ? TemplateLiteralContainLargeType<Adaptor<keyof InferredOutput, string>> extends true ? Partial<InferredOutput> : InferredOutput : never, DataParserRecordShapeInput<GenericDefinition["key"], GenericDefinition["value"]> extends infer InferredInput extends Record<string, unknown> ? TemplateLiteralContainLargeType<Adaptor<keyof InferredInput, string>> extends true ? Partial<InferredInput> : InferredInput : never> & Kind<typeof recordKind.definition>);
30
+ export interface DataParserRecord<GenericDefinition extends DataParserDefinitionRecord = DataParserDefinitionRecord> extends _DataParserRecord<GenericDefinition> {
31
+ addChecker<GenericChecker extends readonly [
32
+ DataParserRecordCheckers<Output<this>>,
33
+ ...DataParserRecordCheckers<Output<this>>[]
34
+ ]>(...args: FixDeepFunctionInfer<readonly [
35
+ DataParserRecordCheckers<Output<this>>,
36
+ ...DataParserRecordCheckers<Output<this>>[]
37
+ ], GenericChecker>): DataParserRecord<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
38
+ }
39
+ export declare function record<GenericDataParserKey extends DataParserRecordKey, GenericDataParserValue extends DataParser, const GenericDefinition extends Partial<DataParserDefinitionRecord> = never>(key: GenericDataParserKey, value: GenericDataParserValue, definition?: GenericDefinition): DataParserRecord<MergeDefinition<DataParserDefinitionRecord, NeverCoalescing<GenericDefinition, {}> & {
40
+ key: GenericDataParserKey;
41
+ value: GenericDataParserValue;
42
+ }>>;
@@ -1,6 +1,8 @@
1
- import { dataParserInit, SymbolDataParserError } from '../base.mjs';
2
- import { SymbolDataParserErrorIssue, setErrorPath, popErrorPath } from '../error.mjs';
3
- import { createDataParserKind } from '../kind.mjs';
1
+ import { dataParserInit, SymbolDataParserError } from '../../base.mjs';
2
+ import { SymbolDataParserErrorIssue, setErrorPath, popErrorPath } from '../../error.mjs';
3
+ import { createDataParserKind } from '../../kind.mjs';
4
+ import { findRecordRequiredKey } from './findRecordRequiredKey.mjs';
5
+ export { findRecordRequiredKeyOnTemplateLiteralPart } from './findRecordRequiredKey.mjs';
4
6
 
5
7
  const recordKind = createDataParserKind("record");
6
8
  function record(key, value, definition) {
@@ -10,6 +12,7 @@ function record(key, value, definition) {
10
12
  checkers: definition?.checkers ?? [],
11
13
  key,
12
14
  value,
15
+ requireKey: findRecordRequiredKey(key),
13
16
  },
14
17
  }, {
15
18
  sync: (data, error, self) => {
@@ -41,6 +44,13 @@ function record(key, value, definition) {
41
44
  }
42
45
  }
43
46
  popErrorPath(error);
47
+ if (output === SymbolDataParserError) {
48
+ return output;
49
+ }
50
+ if (self.definition.requireKey
51
+ && self.definition.requireKey.length !== Object.keys(output).length) {
52
+ return SymbolDataParserErrorIssue;
53
+ }
44
54
  return output;
45
55
  },
46
56
  async: async (data, error, self) => {
@@ -72,9 +82,16 @@ function record(key, value, definition) {
72
82
  }
73
83
  }
74
84
  popErrorPath(error);
85
+ if (output === SymbolDataParserError) {
86
+ return output;
87
+ }
88
+ if (self.definition.requireKey
89
+ && self.definition.requireKey.length !== Object.keys(output).length) {
90
+ return SymbolDataParserErrorIssue;
91
+ }
75
92
  return output;
76
93
  },
77
94
  });
78
95
  }
79
96
 
80
- export { record, recordKind };
97
+ export { findRecordRequiredKey, record, recordKind };
@@ -0,0 +1,32 @@
1
+ 'use strict';
2
+
3
+ var base = require('../base.cjs');
4
+ var kind = require('../kind.cjs');
5
+
6
+ const recoverKind = kind.createDataParserKind("recover");
7
+ function recover(inner, recoveredValue, definition) {
8
+ return base.dataParserInit(recoverKind, {
9
+ definition: {
10
+ errorMessage: definition?.errorMessage,
11
+ checkers: definition?.checkers ?? [],
12
+ inner,
13
+ recoveredValue,
14
+ },
15
+ }, {
16
+ sync: (data, error, self) => {
17
+ const result = self.definition.inner.exec(data, error);
18
+ return result === base.SymbolDataParserError
19
+ ? self.definition.recoveredValue
20
+ : result;
21
+ },
22
+ async: async (data, error, self) => {
23
+ const result = await self.definition.inner.asyncExec(data, error);
24
+ return result === base.SymbolDataParserError
25
+ ? self.definition.recoveredValue
26
+ : result;
27
+ },
28
+ });
29
+ }
30
+
31
+ exports.recover = recover;
32
+ exports.recoverKind = recoverKind;
@@ -0,0 +1,28 @@
1
+ import { type NeverCoalescing, type Kind, type FixDeepFunctionInfer } from "../../common";
2
+ import { type DataParserDefinition, type DataParser, type Output, type Input, type DataParserChecker } from "../base";
3
+ import { type AddCheckersToDefinition, type MergeDefinition } from "../../dataParser/types";
4
+ import { type CheckerRefineImplementation } from "./refine";
5
+ import { type GetPropsWithValueExtends } from "../../object";
6
+ export interface DataParserRecoverCheckerCustom<GenericInput extends unknown = unknown> {
7
+ }
8
+ export type DataParserRecoverCheckers<GenericInput extends unknown = unknown> = (DataParserRecoverCheckerCustom<GenericInput>[GetPropsWithValueExtends<DataParserRecoverCheckerCustom<GenericInput>, DataParserChecker>] | CheckerRefineImplementation<GenericInput>);
9
+ export interface DataParserDefinitionRecover extends DataParserDefinition<DataParserRecoverCheckers> {
10
+ readonly inner: DataParser;
11
+ readonly recoveredValue: unknown;
12
+ }
13
+ export declare const recoverKind: import("../../common").KindHandler<import("../../common").KindDefinition<"@DuplojsUtilsDataParser/recover", unknown>>;
14
+ type _DataParserRecover<GenericDefinition extends DataParserDefinitionRecover> = (DataParser<GenericDefinition, GenericDefinition["recoveredValue"], Input<GenericDefinition["inner"]>> & Kind<typeof recoverKind.definition>);
15
+ export interface DataParserRecover<GenericDefinition extends DataParserDefinitionRecover = DataParserDefinitionRecover> extends _DataParserRecover<GenericDefinition> {
16
+ addChecker<GenericChecker extends readonly [
17
+ DataParserRecoverCheckers<Output<this>>,
18
+ ...DataParserRecoverCheckers<Output<this>>[]
19
+ ]>(...args: FixDeepFunctionInfer<readonly [
20
+ DataParserRecoverCheckers<Output<this>>,
21
+ ...DataParserRecoverCheckers<Output<this>>[]
22
+ ], GenericChecker>): DataParserRecover<AddCheckersToDefinition<GenericDefinition, GenericChecker>>;
23
+ }
24
+ export declare function recover<GenericDataParser extends DataParser, GenericRecoveredValue extends unknown, const GenericDefinition extends Partial<Omit<DataParserDefinitionRecover, "inner" | "recoveredValue">> = never>(inner: GenericDataParser, recoveredValue: GenericRecoveredValue, definition?: GenericDefinition): DataParserRecover<MergeDefinition<DataParserDefinitionRecover, NeverCoalescing<GenericDefinition, {}> & {
25
+ inner: GenericDataParser;
26
+ recoveredValue: GenericRecoveredValue;
27
+ }>>;
28
+ export {};
@@ -0,0 +1,29 @@
1
+ import { dataParserInit, SymbolDataParserError } from '../base.mjs';
2
+ import { createDataParserKind } from '../kind.mjs';
3
+
4
+ const recoverKind = createDataParserKind("recover");
5
+ function recover(inner, recoveredValue, definition) {
6
+ return dataParserInit(recoverKind, {
7
+ definition: {
8
+ errorMessage: definition?.errorMessage,
9
+ checkers: definition?.checkers ?? [],
10
+ inner,
11
+ recoveredValue,
12
+ },
13
+ }, {
14
+ sync: (data, error, self) => {
15
+ const result = self.definition.inner.exec(data, error);
16
+ return result === SymbolDataParserError
17
+ ? self.definition.recoveredValue
18
+ : result;
19
+ },
20
+ async: async (data, error, self) => {
21
+ const result = await self.definition.inner.asyncExec(data, error);
22
+ return result === SymbolDataParserError
23
+ ? self.definition.recoveredValue
24
+ : result;
25
+ },
26
+ });
27
+ }
28
+
29
+ export { recover, recoverKind };
@@ -0,0 +1,18 @@
1
+ 'use strict';
2
+
3
+ var base = require('../base.cjs');
4
+ var error = require('../error.cjs');
5
+ var kind = require('../kind.cjs');
6
+
7
+ const dataParserCheckerRefineKind = kind.createDataParserKind("checker-string-max");
8
+ function checkerRefine(theFunction, definition) {
9
+ return base.dataParserCheckerInit(dataParserCheckerRefineKind, {
10
+ definition: {
11
+ ...definition,
12
+ theFunction,
13
+ },
14
+ }, (value, self) => self.definition.theFunction(value) ? value : error.SymbolDataParserErrorIssue);
15
+ }
16
+
17
+ exports.checkerRefine = checkerRefine;
18
+ exports.dataParserCheckerRefineKind = dataParserCheckerRefineKind;
@@ -0,0 +1,17 @@
1
+ import { type NeverCoalescing, type Kind } from "../../common";
2
+ import { type DataParserCheckerDefinition, type DataParserChecker } from "../../dataParser/base";
3
+ import { type AssignObjects } from "../../object";
4
+ export interface DataParserCheckerDefinitionRefine extends DataParserCheckerDefinition {
5
+ theFunction(input: unknown): boolean;
6
+ }
7
+ export declare const dataParserCheckerRefineKind: import("../../common").KindHandler<import("../../common").KindDefinition<"@DuplojsUtilsDataParser/checker-string-max", unknown>>;
8
+ type _DataParserCheckerRefine<GenericDefinition extends DataParserCheckerDefinitionRefine> = (Kind<typeof dataParserCheckerRefineKind.definition> & DataParserChecker<GenericDefinition, string>);
9
+ export interface DataParserCheckerRefine<GenericDefinition extends DataParserCheckerDefinitionRefine = DataParserCheckerDefinitionRefine> extends _DataParserCheckerRefine<GenericDefinition> {
10
+ }
11
+ export declare function checkerRefine<GenericInput extends unknown, const GenericDefinition extends Partial<Omit<DataParserCheckerDefinitionRefine, "theFunction">> = never>(theFunction: (input: GenericInput) => boolean, definition?: GenericDefinition): DataParserCheckerRefine<AssignObjects<NeverCoalescing<GenericDefinition, {}>, {
12
+ theFunction(input: GenericInput): boolean;
13
+ }>>;
14
+ export type CheckerRefineImplementation<GenericInput extends unknown> = DataParserCheckerRefine<AssignObjects<DataParserCheckerDefinitionRefine, {
15
+ theFunction(input: GenericInput): boolean;
16
+ }>>;
17
+ export {};