@duplojs/lang 0.0.1-beta.8 → 0.1.0-beta.1

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 (267) hide show
  1. package/dist/array/concat.d.ts +2 -2
  2. package/dist/array/flat.d.ts +1 -1
  3. package/dist/array/flatMap.d.ts +2 -2
  4. package/dist/array/from.d.ts +1 -1
  5. package/dist/array/length.d.ts +3 -2
  6. package/dist/array/push.d.ts +4 -2
  7. package/dist/chrono/operators/addTime.d.ts +2 -4
  8. package/dist/common/constraint/cast/index.d.ts +5 -5
  9. package/dist/common/constraint/cast/string.d.ts +4 -0
  10. package/dist/common/constraint/infer/index.d.ts +2 -1
  11. package/dist/common/constraint/infer/string.d.ts +1 -0
  12. package/dist/common/constraint/types/index.d.ts +1 -0
  13. package/dist/common/constraint/types/maybe.d.ts +2 -0
  14. package/dist/common/formData.d.ts +2 -1
  15. package/dist/common/memo.cjs +3 -2
  16. package/dist/common/memo.mjs +3 -2
  17. package/dist/common/memoPromise.cjs +3 -2
  18. package/dist/common/memoPromise.mjs +3 -2
  19. package/dist/common/timeout.cjs +2 -2
  20. package/dist/common/timeout.d.ts +1 -1
  21. package/dist/common/timeout.mjs +2 -2
  22. package/dist/common/types/applyPromiseIf.d.ts +1 -0
  23. package/dist/common/types/index.d.ts +2 -0
  24. package/dist/common/types/isObject.d.ts +8 -0
  25. package/dist/common/types/json.d.ts +12 -1
  26. package/dist/dataStructure/common/codec/base.cjs +2 -2
  27. package/dist/dataStructure/common/codec/base.mjs +2 -2
  28. package/dist/dataStructure/common/codec/defaults/string.cjs +1 -1
  29. package/dist/dataStructure/common/codec/defaults/string.d.ts +1 -1
  30. package/dist/dataStructure/common/codec/defaults/string.mjs +1 -1
  31. package/dist/dataStructure/common/{error.cjs → error/base.cjs} +22 -5
  32. package/dist/dataStructure/common/{error.d.ts → error/base.d.ts} +18 -9
  33. package/dist/dataStructure/common/{error.mjs → error/base.mjs} +21 -6
  34. package/dist/dataStructure/common/error/defaultInterpreter.cjs +87 -0
  35. package/dist/dataStructure/common/error/defaultInterpreter.d.ts +60 -0
  36. package/dist/dataStructure/common/error/defaultInterpreter.mjs +86 -0
  37. package/dist/dataStructure/common/error/index.d.ts +3 -0
  38. package/dist/dataStructure/common/error/interpreter.cjs +44 -0
  39. package/dist/dataStructure/common/error/interpreter.d.ts +32 -0
  40. package/dist/dataStructure/common/error/interpreter.mjs +44 -0
  41. package/dist/dataStructure/common/index.d.ts +0 -1
  42. package/dist/dataStructure/constraint/defaults/allowedCharacters.d.ts +1 -3
  43. package/dist/dataStructure/constraint/types/constraints.d.ts +1 -0
  44. package/dist/dataStructure/fundamentalType/types/fundamentalTypes.d.ts +1 -0
  45. package/dist/dataStructure/helpers/extend.cjs +1 -1
  46. package/dist/dataStructure/helpers/extend.d.ts +1 -1
  47. package/dist/dataStructure/helpers/extend.mjs +1 -1
  48. package/dist/dataStructure/helpers/index.d.ts +6 -2
  49. package/dist/dataStructure/helpers/isNullable.cjs +12 -0
  50. package/dist/dataStructure/helpers/isNullable.d.ts +2 -0
  51. package/dist/dataStructure/helpers/isNullable.mjs +12 -0
  52. package/dist/dataStructure/helpers/isOptional.cjs +12 -0
  53. package/dist/dataStructure/helpers/isOptional.d.ts +2 -0
  54. package/dist/dataStructure/helpers/isOptional.mjs +12 -0
  55. package/dist/dataStructure/helpers/partial.cjs +1 -1
  56. package/dist/dataStructure/helpers/partial.mjs +1 -1
  57. package/dist/dataStructure/helpers/required.cjs +1 -1
  58. package/dist/dataStructure/helpers/required.mjs +1 -1
  59. package/dist/dataStructure/helpers/typeStructureIdentifier.cjs +14 -0
  60. package/dist/dataStructure/helpers/typeStructureIdentifier.d.ts +6 -0
  61. package/dist/dataStructure/helpers/typeStructureIdentifier.mjs +14 -0
  62. package/dist/dataStructure/helpers/unwrapLazy.cjs +9 -0
  63. package/dist/dataStructure/helpers/unwrapLazy.d.ts +2 -0
  64. package/dist/dataStructure/helpers/unwrapLazy.mjs +9 -0
  65. package/dist/dataStructure/index.cjs +56 -35
  66. package/dist/dataStructure/index.mjs +18 -5
  67. package/dist/dataStructure/structure/base.cjs +31 -19
  68. package/dist/dataStructure/structure/base.d.ts +16 -16
  69. package/dist/dataStructure/structure/base.mjs +25 -13
  70. package/dist/dataStructure/structure/defaults/array.cjs +10 -0
  71. package/dist/dataStructure/structure/defaults/array.d.ts +1 -1
  72. package/dist/dataStructure/structure/defaults/array.mjs +10 -0
  73. package/dist/dataStructure/structure/defaults/lazy.cjs +1 -0
  74. package/dist/dataStructure/structure/defaults/lazy.d.ts +1 -1
  75. package/dist/dataStructure/structure/defaults/lazy.mjs +1 -0
  76. package/dist/dataStructure/structure/defaults/nonEncodableString.cjs +1 -0
  77. package/dist/dataStructure/structure/defaults/nonEncodableString.mjs +1 -0
  78. package/dist/dataStructure/structure/defaults/object.cjs +18 -7
  79. package/dist/dataStructure/structure/defaults/object.d.ts +3 -2
  80. package/dist/dataStructure/structure/defaults/object.mjs +18 -7
  81. package/dist/dataStructure/structure/defaults/record.cjs +20 -7
  82. package/dist/dataStructure/structure/defaults/record.d.ts +1 -1
  83. package/dist/dataStructure/structure/defaults/record.mjs +20 -7
  84. package/dist/dataStructure/structure/defaults/type.cjs +1 -0
  85. package/dist/dataStructure/structure/defaults/type.d.ts +1 -1
  86. package/dist/dataStructure/structure/defaults/type.mjs +1 -0
  87. package/dist/dataStructure/structure/defaults/union.cjs +26 -6
  88. package/dist/dataStructure/structure/defaults/union.d.ts +1 -1
  89. package/dist/dataStructure/structure/defaults/union.mjs +21 -1
  90. package/dist/dataStructure/structure/types/value.d.ts +2 -0
  91. package/dist/dataStructure/type/types/types.d.ts +1 -0
  92. package/dist/either/index.cjs +29 -7
  93. package/dist/either/index.d.ts +4 -0
  94. package/dist/either/index.mjs +22 -8
  95. package/dist/either/left/create.d.ts +2 -1
  96. package/dist/either/left/index.d.ts +3 -2
  97. package/dist/either/left/none.cjs +15 -0
  98. package/dist/either/left/none.d.ts +7 -0
  99. package/dist/either/left/none.mjs +14 -0
  100. package/dist/either/matchInformationOtherwise.d.ts +1 -1
  101. package/dist/either/rewriteInformation.cjs +22 -0
  102. package/dist/either/rewriteInformation.d.ts +14 -0
  103. package/dist/either/rewriteInformation.mjs +22 -0
  104. package/dist/either/right/asyncGroup.cjs +2 -2
  105. package/dist/either/right/asyncGroup.mjs +2 -2
  106. package/dist/either/right/create.d.ts +2 -1
  107. package/dist/either/right/group.cjs +1 -1
  108. package/dist/either/right/group.mjs +1 -1
  109. package/dist/either/right/index.d.ts +6 -5
  110. package/dist/either/right/some.cjs +15 -0
  111. package/dist/either/right/some.d.ts +7 -0
  112. package/dist/either/right/some.mjs +14 -0
  113. package/dist/either/toMaybe.cjs +12 -0
  114. package/dist/either/toMaybe.d.ts +5 -0
  115. package/dist/either/toMaybe.mjs +12 -0
  116. package/dist/either/types/index.d.ts +1 -0
  117. package/dist/either/types/mayBe.d.ts +3 -0
  118. package/dist/either/unwrapOr.cjs +14 -0
  119. package/dist/either/unwrapOr.d.ts +8 -0
  120. package/dist/either/unwrapOr.mjs +14 -0
  121. package/dist/either/unwrapOtherwise.cjs +14 -0
  122. package/dist/either/unwrapOtherwise.d.ts +8 -0
  123. package/dist/either/unwrapOtherwise.mjs +14 -0
  124. package/dist/generator/reduce.cjs +2 -1
  125. package/dist/generator/reduce.mjs +1 -1
  126. package/dist/invocation/evidence.d.ts +1 -1
  127. package/dist/invocation/flow/base.cjs +4 -4
  128. package/dist/invocation/flow/base.d.ts +1 -1
  129. package/dist/invocation/flow/base.mjs +4 -4
  130. package/dist/invocation/flow/controller/defaults/debounce.cjs +1 -1
  131. package/dist/invocation/flow/controller/defaults/debounce.mjs +1 -1
  132. package/dist/invocation/flow/controller/defaults/throttling.cjs +1 -1
  133. package/dist/invocation/flow/controller/defaults/throttling.mjs +1 -1
  134. package/dist/invocation/index.cjs +18 -8
  135. package/dist/invocation/index.d.ts +3 -1
  136. package/dist/invocation/index.mjs +12 -6
  137. package/dist/invocation/reader.cjs +30 -0
  138. package/dist/invocation/reader.d.ts +30 -0
  139. package/dist/invocation/reader.mjs +29 -0
  140. package/dist/invocation/resolver.cjs +31 -0
  141. package/dist/invocation/resolver.d.ts +14 -0
  142. package/dist/invocation/resolver.mjs +31 -0
  143. package/dist/invocation/signature.cjs +8 -0
  144. package/dist/invocation/signature.d.ts +7 -0
  145. package/dist/invocation/signature.mjs +8 -0
  146. package/dist/modeling/entity/base.cjs +22 -11
  147. package/dist/modeling/entity/base.d.ts +16 -8
  148. package/dist/modeling/entity/base.mjs +16 -5
  149. package/dist/modeling/entity/helper.d.ts +6 -8
  150. package/dist/modeling/entity/namespace.cjs +0 -2
  151. package/dist/modeling/entity/namespace.d.ts +0 -2
  152. package/dist/modeling/entity/namespace.mjs +0 -2
  153. package/dist/modeling/fact/base.cjs +36 -0
  154. package/dist/modeling/fact/base.d.ts +29 -0
  155. package/dist/modeling/fact/base.mjs +35 -0
  156. package/dist/modeling/fact/index.d.ts +1 -0
  157. package/dist/modeling/flag/base.cjs +2 -6
  158. package/dist/modeling/flag/base.d.ts +10 -11
  159. package/dist/modeling/flag/base.mjs +2 -6
  160. package/dist/modeling/index.cjs +17 -12
  161. package/dist/modeling/index.d.ts +1 -0
  162. package/dist/modeling/index.mjs +5 -2
  163. package/dist/modeling/newType/base.cjs +12 -11
  164. package/dist/modeling/newType/base.d.ts +8 -8
  165. package/dist/modeling/newType/base.mjs +6 -5
  166. package/dist/modeling/taggedObject/base.cjs +22 -11
  167. package/dist/modeling/taggedObject/base.d.ts +12 -7
  168. package/dist/modeling/taggedObject/base.mjs +16 -5
  169. package/dist/object/assign.d.ts +3 -3
  170. package/dist/object/deepOverride.cjs +33 -0
  171. package/dist/object/deepOverride.d.ts +20 -0
  172. package/dist/object/deepOverride.mjs +33 -0
  173. package/dist/object/entries.d.ts +3 -3
  174. package/dist/object/index.cjs +4 -1
  175. package/dist/object/index.d.ts +1 -0
  176. package/dist/object/index.mjs +4 -2
  177. package/dist/object/isSimple.cjs +1 -1
  178. package/dist/object/isSimple.mjs +1 -1
  179. package/dist/object/keys.d.ts +1 -1
  180. package/dist/object/override.cjs +1 -1
  181. package/dist/object/override.d.ts +5 -2
  182. package/dist/object/override.mjs +1 -1
  183. package/dist/object/types/assign.d.ts +2 -0
  184. package/dist/object/types/forbiddenKey.d.ts +1 -1
  185. package/dist/object/types/forbiddenUndefinedProps.d.ts +3 -0
  186. package/dist/object/types/hasKeySignature.d.ts +1 -0
  187. package/dist/object/types/index.d.ts +6 -2
  188. package/dist/object/types/keyofWithoutSignature.d.ts +3 -0
  189. package/dist/object/types/override.d.ts +4 -0
  190. package/dist/object/types/split.d.ts +2 -2
  191. package/dist/object/values.d.ts +1 -1
  192. package/dist/path/create.cjs +11 -0
  193. package/dist/path/create.d.ts +3 -0
  194. package/dist/path/create.mjs +11 -0
  195. package/dist/path/createAbsolute.cjs +12 -0
  196. package/dist/path/createAbsolute.d.ts +3 -0
  197. package/dist/path/createAbsolute.mjs +12 -0
  198. package/dist/path/createAbsoluteOrThrow.cjs +22 -0
  199. package/dist/path/createAbsoluteOrThrow.d.ts +9 -0
  200. package/dist/path/createAbsoluteOrThrow.mjs +21 -0
  201. package/dist/path/createOrThrow.cjs +22 -0
  202. package/dist/path/createOrThrow.d.ts +9 -0
  203. package/dist/path/createOrThrow.mjs +21 -0
  204. package/dist/path/createSegment.cjs +12 -0
  205. package/dist/path/createSegment.d.ts +3 -0
  206. package/dist/path/createSegment.mjs +12 -0
  207. package/dist/path/createSegmentOrThrow.cjs +22 -0
  208. package/dist/path/createSegmentOrThrow.d.ts +9 -0
  209. package/dist/path/createSegmentOrThrow.mjs +21 -0
  210. package/dist/path/declareAbsolutePath.cjs +6 -0
  211. package/dist/path/declareAbsolutePath.d.ts +3 -0
  212. package/dist/path/declareAbsolutePath.mjs +6 -0
  213. package/dist/path/declarePath.cjs +6 -0
  214. package/dist/path/declarePath.d.ts +3 -0
  215. package/dist/path/declarePath.mjs +6 -0
  216. package/dist/path/declareSegment.cjs +6 -0
  217. package/dist/path/declareSegment.d.ts +3 -0
  218. package/dist/path/declareSegment.mjs +6 -0
  219. package/dist/path/index.cjs +39 -3
  220. package/dist/path/index.d.ts +10 -0
  221. package/dist/path/index.mjs +27 -4
  222. package/dist/path/kind.cjs +4 -0
  223. package/dist/path/kind.d.ts +2 -0
  224. package/dist/path/kind.mjs +5 -0
  225. package/dist/pattern/index.cjs +6 -0
  226. package/dist/pattern/index.d.ts +2 -0
  227. package/dist/pattern/index.mjs +5 -1
  228. package/dist/pattern/match/builder.cjs +1 -1
  229. package/dist/pattern/match/builder.mjs +1 -1
  230. package/dist/pattern/matchWithEntityOtherwise.d.ts +2 -2
  231. package/dist/pattern/matchWithFact.cjs +12 -0
  232. package/dist/pattern/matchWithFact.d.ts +12 -0
  233. package/dist/pattern/matchWithFact.mjs +12 -0
  234. package/dist/pattern/matchWithFactOtherwise.cjs +13 -0
  235. package/dist/pattern/matchWithFactOtherwise.d.ts +14 -0
  236. package/dist/pattern/matchWithFactOtherwise.mjs +13 -0
  237. package/dist/pattern/matchWithNumber.d.ts +4 -4
  238. package/dist/pattern/matchWithNumberOtherwise.d.ts +4 -4
  239. package/dist/pattern/matchWithString.d.ts +4 -4
  240. package/dist/pattern/matchWithStringOtherwise.d.ts +4 -4
  241. package/dist/pattern/matchWithTaggedObjectOtherwise.d.ts +2 -2
  242. package/dist/pattern/types/complexUnMatchedValue/getIncompleteUnion.d.ts +8 -8
  243. package/dist/string/capitalize.d.ts +1 -1
  244. package/dist/string/concat.d.ts +2 -2
  245. package/dist/string/constraints/allowedCharacters.d.ts +3 -3
  246. package/dist/string/isComposedOf.cjs +0 -1
  247. package/dist/string/isComposedOf.d.ts +5 -8
  248. package/dist/string/isComposedOf.mjs +0 -1
  249. package/dist/string/prepend.d.ts +2 -2
  250. package/dist/string/split.cjs +1 -0
  251. package/dist/string/split.d.ts +3 -3
  252. package/dist/string/split.mjs +1 -0
  253. package/dist/string/toLowerCase.d.ts +1 -1
  254. package/dist/string/toUpperCase.d.ts +1 -1
  255. package/dist/string/types/IsAllowedString.d.ts +5 -0
  256. package/dist/string/types/index.d.ts +1 -0
  257. package/dist/string/uncapitalize.d.ts +1 -1
  258. package/dist/tuple/types/map.d.ts +1 -1
  259. package/package.json +16 -30
  260. package/dist/dataStructure/common/errorInterpreter.cjs +0 -45
  261. package/dist/dataStructure/common/errorInterpreter.d.ts +0 -32
  262. package/dist/dataStructure/common/errorInterpreter.mjs +0 -45
  263. package/dist/invocation/useCase.cjs +0 -26
  264. package/dist/invocation/useCase.d.ts +0 -28
  265. package/dist/invocation/useCase.mjs +0 -25
  266. package/dist/object/types/assignObjects.d.ts +0 -2
  267. /package/{README.md → README} +0 -0
@@ -1,5 +1,5 @@
1
1
  import { ReapplyCompatiblesConstraints } from './constraints';
2
- type ConcatOutput<GenericArray extends readonly unknown[], GenericElements extends readonly unknown[], GenericElementsRest extends readonly unknown[][] = []> = GenericArray extends unknown ? ReapplyCompatiblesConstraints<GenericArray, readonly (GenericArray[number] | GenericElements[number] | GenericElementsRest[number][number])[], "minElements"> : never;
2
+ type ConcatOutput<GenericArray extends readonly unknown[], GenericElements extends readonly unknown[], GenericElementsRest extends readonly (readonly unknown[])[] = []> = GenericArray extends unknown ? ReapplyCompatiblesConstraints<GenericArray, readonly (GenericArray[number] | GenericElements[number] | GenericElementsRest[number][number])[], "minElements"> : never;
3
3
  export declare function concat<GenericArray extends readonly unknown[], GenericElements extends readonly unknown[]>(elements: GenericElements): (array: GenericArray) => ConcatOutput<GenericArray, GenericElements>;
4
- export declare function concat<GenericArray extends readonly unknown[], GenericElements extends readonly unknown[], GenericElementsRest extends readonly unknown[][]>(array: GenericArray, elements: GenericElements, ...elementsRest: GenericElementsRest): ConcatOutput<GenericArray, GenericElements, GenericElementsRest>;
4
+ export declare function concat<GenericArray extends readonly unknown[], GenericElements extends readonly unknown[], GenericElementsRest extends readonly unknown[] = []>(array: GenericArray, elements: GenericElements, ...elementsRest: GenericElementsRest[]): ConcatOutput<GenericArray, GenericElements, GenericElementsRest[]>;
5
5
  export {};
@@ -1 +1 @@
1
- export declare function flat<const GenericArray extends readonly unknown[], const Depth extends number = 1>(array: GenericArray, depth?: Depth): FlatArray<GenericArray, Depth>[];
1
+ export declare function flat<const GenericArray extends readonly unknown[], const Depth extends number = 1>(array: GenericArray, depth?: Depth): readonly FlatArray<GenericArray, Depth>[];
@@ -2,5 +2,5 @@ export interface FlatMapTheFunctionParams<GenericArray extends readonly unknown[
2
2
  index: number;
3
3
  self: GenericArray;
4
4
  }
5
- export declare function flatMap<GenericArray extends readonly unknown[], GenericOutput extends unknown>(theFunction: (element: GenericArray[number], params: FlatMapTheFunctionParams<GenericArray>) => GenericOutput): (array: GenericArray) => FlatArray<GenericOutput, 1>[];
6
- export declare function flatMap<GenericArray extends readonly unknown[], GenericOutput extends unknown>(array: GenericArray, theFunction: (element: GenericArray[number], params: FlatMapTheFunctionParams<GenericArray>) => GenericOutput): FlatArray<GenericOutput, 1>[];
5
+ export declare function flatMap<GenericArray extends readonly unknown[], GenericOutput extends unknown>(theFunction: (element: GenericArray[number], params: FlatMapTheFunctionParams<GenericArray>) => GenericOutput): (array: GenericArray) => readonly FlatArray<GenericOutput, 1>[];
6
+ export declare function flatMap<GenericArray extends readonly unknown[], GenericOutput extends unknown>(array: GenericArray, theFunction: (element: GenericArray[number], params: FlatMapTheFunctionParams<GenericArray>) => GenericOutput): readonly FlatArray<GenericOutput, 1>[];
@@ -1,4 +1,4 @@
1
1
  type Enumerable = ArrayLike<unknown> | Iterable<unknown> | AsyncIterable<unknown>;
2
- type FromOutput<GenericEnumerable extends Enumerable> = GenericEnumerable extends AsyncIterable<infer InferredValue> ? Promise<InferredValue[]> : GenericEnumerable extends Iterable<infer InferredValue> ? InferredValue[] : GenericEnumerable extends ArrayLike<infer InferredValue> ? InferredValue[] : never;
2
+ type FromOutput<GenericEnumerable extends Enumerable> = GenericEnumerable extends AsyncIterable<infer InferredValue> ? Promise<readonly InferredValue[]> : GenericEnumerable extends Iterable<infer InferredValue> ? readonly InferredValue[] : GenericEnumerable extends ArrayLike<infer InferredValue> ? readonly InferredValue[] : never;
3
3
  export declare function from<const GenericEnumerable extends Enumerable>(input: GenericEnumerable): FromOutput<GenericEnumerable>;
4
4
  export {};
@@ -1,5 +1,6 @@
1
+ import { ExtractMinElements, MinElements, ExtractMaxElements, MaxElements } from './constraints';
1
2
  import type * as DCommon from '../common';
2
3
  import type * as DNumber from '../number';
3
- type LengthOutput<GenericArray extends readonly unknown[]> = GenericArray extends unknown ? DCommon.IsEqual<GenericArray["length"], number> extends true ? number & DNumber.Positive : DNumber.IsGreater<GenericArray["length"], 0> extends true ? GenericArray["length"] & DNumber.StrictPositive : 0 & DNumber.Positive : never;
4
- export declare function length<GenericArray extends readonly unknown[]>(array: GenericArray): LengthOutput<GenericArray>;
4
+ type LengthOutput<GenericArray extends readonly unknown[]> = Extract<GenericArray extends unknown ? (number & DNumber.Positive & (ExtractMaxElements<GenericArray, unknown> extends MaxElements<infer InferredValue> ? DCommon.UnionToIntersection<InferredValue extends number ? DNumber.LessThanOrEqual<InferredValue> : never> : unknown) & (ExtractMinElements<GenericArray, unknown> extends MinElements<infer InferredValue> ? DCommon.UnionToIntersection<InferredValue extends number ? DNumber.GreaterThanOrEqual<InferredValue> : never> : unknown)) : never, any>;
5
+ export declare function length<const GenericArray extends readonly unknown[]>(array: GenericArray): LengthOutput<GenericArray>;
5
6
  export {};
@@ -1,5 +1,7 @@
1
- import { ReapplyCompatiblesConstraints } from './constraints';
2
- type PushOutput<GenericArray extends readonly unknown[], GenericValue extends unknown, GenericValuesRest extends readonly unknown[] = []> = GenericArray extends unknown ? ReapplyCompatiblesConstraints<GenericArray, readonly (GenericArray[number] | GenericValue | GenericValuesRest[number])[], "minElements"> : never;
1
+ import { ExtractMaxElements, ExtractMinElements, MaxElements, MinElements } from './constraints';
2
+ import type * as DCommon from '../common';
3
+ import type * as DNumber from '../number';
4
+ type PushOutput<GenericArray extends readonly unknown[], GenericValue extends unknown, GenericValuesRest extends readonly unknown[] = []> = GenericArray extends unknown ? (readonly (GenericArray[number] | GenericValue | GenericValuesRest[number])[] & (ExtractMinElements<GenericArray, unknown> extends MinElements<infer InferredValue> ? DCommon.UnionToIntersection<InferredValue extends number ? MinElements<DNumber.AddOne<InferredValue>> : never> : unknown) & (DCommon.IsEqual<GenericValuesRest, []> extends true ? ExtractMaxElements<GenericArray, unknown> extends MaxElements<infer InferredValue> ? DCommon.UnionToIntersection<InferredValue extends number ? MaxElements<DNumber.AddOne<InferredValue>> : never> : unknown : unknown)) : never;
3
5
  export declare function push<GenericArray extends readonly unknown[], const GenericValue extends unknown>(value: GenericValue): (array: GenericArray) => PushOutput<GenericArray, GenericValue>;
4
6
  export declare function push<GenericArray extends readonly unknown[], const GenericValue extends unknown, GenericValuesRest extends readonly unknown[]>(array: GenericArray, value: GenericValue, ...valuesRest: GenericValuesRest): PushOutput<GenericArray, GenericValue, GenericValuesRest>;
5
7
  export {};
@@ -1,7 +1,5 @@
1
1
  import { TheDate } from '../theDate';
2
2
  import { TheTime } from '../theTime';
3
3
  import { SerializedTheDate, SerializedTheTime } from '../types';
4
- export declare function addTime<GenericInput extends TheDate | SerializedTheDate>(time: TheTime | SerializedTheTime): (input: GenericInput) => TheDate;
5
- export declare function addTime<GenericInput extends TheTime | SerializedTheTime>(time: TheTime | SerializedTheTime): (input: GenericInput) => TheTime;
6
- export declare function addTime<GenericInput extends TheDate | SerializedTheDate>(input: GenericInput, time: TheTime | SerializedTheTime): TheDate;
7
- export declare function addTime<GenericInput extends TheTime | SerializedTheTime>(input: GenericInput, time: TheTime | SerializedTheTime): TheTime;
4
+ export declare function addTime<GenericInput extends (TheDate | SerializedTheDate | TheTime | SerializedTheTime)>(time: TheTime | SerializedTheTime): (input: GenericInput) => (GenericInput extends (TheDate | SerializedTheDate) ? TheDate : GenericInput extends (TheTime | SerializedTheTime) ? TheTime : never);
5
+ export declare function addTime<GenericInput extends (TheDate | SerializedTheDate | TheTime | SerializedTheTime)>(input: GenericInput, time: TheTime | SerializedTheTime): (GenericInput extends (TheDate | SerializedTheDate) ? TheDate : GenericInput extends (TheTime | SerializedTheTime) ? TheTime : never);
@@ -3,7 +3,7 @@ import { UnbundlesConstraint, BaseConstraint, RemoveConstraint } from '../types'
3
3
  import { CastError, RemoveCastError } from './error';
4
4
  import { ComputeCastConstraintNumberRule } from './number';
5
5
  import { ComputeCastConstraintStringRule } from './string';
6
- import { AnyTuple, IsExtends, BreakGenericLink, NeverCoalescing, UnionContain, IsEqual } from '../../types';
6
+ import { IsExtends, BreakGenericLink, NeverCoalescing, UnionContain, IsEqual, AnyTuple, IsNever } from '../../types';
7
7
  import type * as DArray from '../../../array';
8
8
  import type * as DTuple from '../../../tuple';
9
9
  import type * as DObject from '../../../object';
@@ -16,8 +16,8 @@ export interface ComputeCastConstraintRule<GenericValue extends unknown, Generic
16
16
  number: GenericValue extends number ? DObject.Values<ComputeCastConstraintNumberRule<GenericValue, GenericConstraint>> : never;
17
17
  array: GenericValue extends readonly unknown[] ? DObject.Values<ComputeCastConstraintArrayRule<GenericValue, GenericConstraint>> : never;
18
18
  }
19
- export type ComputeCastConstraint<GenericValue extends unknown, GenericExpectedValue extends unknown> = (GenericExpectedValue extends any ? [UnbundlesConstraint<GenericExpectedValue>] : never) extends infer InferredComputedExpectedValue extends [BaseConstraint] ? DArray.Unwrap<NeverCoalescing<Extract<GenericValue extends any ? (InferredComputedExpectedValue extends [infer InferredConstraint extends BaseConstraint] ? NeverCoalescing<Extract<InferredConstraint extends any ? [
20
- NeverCoalescing<DObject.Values<ComputeCastConstraintRule<GenericValue, InferredConstraint>>, CastError<"None of the intended constraints is possible on the current value.", GenericValue, InferredConstraint>>
19
+ export type ComputeCastConstraint<GenericValue extends unknown, GenericExpectedValue extends unknown> = (GenericExpectedValue extends any ? [UnbundlesConstraint<GenericExpectedValue>] : never) extends infer InferredComputedExpectedValue extends [BaseConstraint] ? DArray.Unwrap<NeverCoalescing<Extract<GenericValue extends any ? (InferredComputedExpectedValue extends [infer InferredConstraint extends BaseConstraint] ? IsNever<InferredConstraint> extends true ? never : NeverCoalescing<Extract<InferredConstraint extends any ? [
20
+ GenericValue extends InferredConstraint ? unknown : NeverCoalescing<DObject.Values<ComputeCastConstraintRule<GenericValue, InferredConstraint>>, CastError<"None of the intended constraints is possible on the current value.", GenericValue, InferredConstraint>>
21
21
  ] : never, [
22
22
  CastError<any, any, any>
23
23
  ]>, [
@@ -25,7 +25,7 @@ export type ComputeCastConstraint<GenericValue extends unknown, GenericExpectedV
25
25
  ]> : never) extends infer InferredResult ? UnionContain<InferredResult, [unknown]> extends true ? [unknown] : InferredResult : never : never, [
26
26
  CastError<any, any, any>
27
27
  ]>, unknown>> : never;
28
- type ComputeTransformCastValue<GenericValue extends unknown> = GenericValue extends (string | number | AnyTuple) ? RemoveConstraint<GenericValue> : GenericValue extends readonly unknown[] ? DArray.ExtractLengthEqual<GenericValue, unknown> extends DArray.LengthEqual<infer InferredLength> ? DTuple.Create<GenericValue[number], InferredLength> : DArray.ExtractMinElements<GenericValue, unknown> extends DArray.MinElements<infer InferredMin> ? readonly [...DTuple.Create<GenericValue[number], InferredMin>, ...GenericValue] : RemoveConstraint<GenericValue> : never;
28
+ type ComputeTransformCastValue<GenericValue extends unknown> = GenericValue extends AnyTuple ? RemoveConstraint<GenericValue> : GenericValue extends readonly unknown[] ? DArray.ExtractLengthEqual<GenericValue, unknown> extends DArray.LengthEqual<infer InferredLength> ? DTuple.Create<GenericValue[number], InferredLength> : DArray.ExtractMinElements<GenericValue, unknown> extends DArray.MinElements<infer InferredMin> ? readonly [...DTuple.Create<GenericValue[number], InferredMin>, ...GenericValue[number][]] : RemoveConstraint<GenericValue> : RemoveConstraint<GenericValue>;
29
29
  export type ComputeCastValue<GenericValue extends unknown, GenericExpectedValue extends unknown> = [
30
30
  ComputeTransformCastValue<GenericValue>,
31
31
  ComputeTransformCastValue<GenericExpectedValue>
@@ -33,5 +33,5 @@ export type ComputeCastValue<GenericValue extends unknown, GenericExpectedValue
33
33
  infer InferredValue,
34
34
  infer InferredExpectedValue
35
35
  ] ? IsExtends<InferredValue, InferredExpectedValue> extends true ? unknown : CastError<"Input value are not Extends", InferredValue, InferredExpectedValue> : never;
36
- export declare function cast<GenericInput extends unknown, GenericExpectedValue extends unknown, GenericError = (RemoveCastError<GenericInput> extends infer InferredInput ? ComputeCastConstraint<InferredInput, GenericExpectedValue> extends infer InferredConstraintResult ? IsEqual<InferredConstraintResult, unknown> extends true ? ComputeCastValue<InferredInput, GenericExpectedValue> : InferredConstraintResult : never : never)>(input: (GenericInput & BreakGenericLink<GenericError>)): GenericExpectedValue;
36
+ export declare function cast<const GenericInput extends unknown, GenericExpectedValue extends unknown, GenericError = (RemoveCastError<GenericInput> extends infer InferredInput ? ComputeCastConstraint<InferredInput, GenericExpectedValue> extends infer InferredConstraintResult ? IsEqual<InferredConstraintResult, unknown> extends true ? ComputeCastValue<InferredInput, GenericExpectedValue> : InferredConstraintResult : never : never)>(input: (GenericInput & BreakGenericLink<GenericError>)): GenericExpectedValue;
37
37
  export declare function shameOnYou<GenericOutput extends unknown>(value: NoInfer<RemoveConstraint<GenericOutput>>): GenericOutput;
@@ -7,6 +7,10 @@ export interface ComputeCastConstraintStringRule<GenericValue extends string, Ge
7
7
  maxCharacters: GenericExpectedConstraint extends DString.MaxCharacters<number> ? DCommon.NeverCoalescing<(DString.ComputeMaxCharactersCompatibility<GenericValue, GenericExpectedConstraint, unknown> extends infer InferredResult extends CompatibilityConstraintResult<boolean, number, number> ? InferredResult extends CompatibilityConstraintResult<true> ? unknown : DCommon.IsNever<DString.ExtractLengthEqual<GenericValue>> extends true ? CastError<`Impossible to cast on MaxCharacters<${InferredResult["to"]}> because constraint MaxCharacters<${InferredResult["from"]}> from the value is more than.`, GenericValue, GenericExpectedConstraint> : CastError<`Impossible to cast on MaxCharacters<${InferredResult["to"]}> because constraint LengthEqual<${InferredResult["from"]}> from the value is more than.`, GenericValue, GenericExpectedConstraint> : never), CastError<"Impossible to cast on MaxCharacters because value does not have MaxCharacters constraint.", GenericValue, GenericExpectedConstraint>> : never;
8
8
  minCharacters: GenericExpectedConstraint extends DString.MinCharacters<number> ? DCommon.NeverCoalescing<(DString.ComputeMinCharactersCompatibility<GenericValue, GenericExpectedConstraint, unknown> extends infer InferredResult extends CompatibilityConstraintResult<boolean, number, number> ? InferredResult extends CompatibilityConstraintResult<true> ? unknown : DCommon.IsNever<DString.ExtractLengthEqual<GenericValue>> extends true ? CastError<`Impossible to cast on MinCharacters<${InferredResult["to"]}> because constraint MinCharacters<${InferredResult["from"]}> from the value is less than.`, GenericValue, GenericExpectedConstraint> : CastError<`Impossible to cast on MinCharacters<${InferredResult["to"]}> because constraint LengthEqual<${InferredResult["from"]}> from the value is less than.`, GenericValue, GenericExpectedConstraint> : never), CastError<"Impossible to cast on MinCharacters because value does not have MinCharacters constraint.", GenericValue, GenericExpectedConstraint>> : never;
9
9
  lengthEqual: GenericExpectedConstraint extends DString.LengthEqual<number> ? DCommon.NeverCoalescing<(DString.ComputeLengthEqualCompatibility<GenericValue, GenericExpectedConstraint, unknown> extends infer InferredResult extends CompatibilityConstraintResult<boolean, number, number> ? InferredResult extends CompatibilityConstraintResult<true> ? unknown : CastError<`Impossible to cast on LengthEqual<${InferredResult["to"]}> because constraint LengthEqual<${InferredResult["from"]}> from the value is not equal.`, GenericValue, GenericExpectedConstraint> : never), CastError<"Impossible to cast on LengthEqual because value does not have LengthEqual constraint.", GenericValue, GenericExpectedConstraint>> : never;
10
+ allowedCharacters: GenericExpectedConstraint extends DString.AllowedCharacters<infer InferredCharactersRange> ? DCommon.Or<[
11
+ DString.IsAllowedString<Extract<DCommon.RemoveConstraint<GenericValue>, string>, DString.CharactersRangeStore[InferredCharactersRange]>,
12
+ DCommon.IsExtends<GenericValue, GenericExpectedConstraint>
13
+ ]> extends true ? unknown : CastError<`Impossible to cast on AllowedCharacters because value ${GenericValue} contains forbidden characters.`, GenericValue, GenericExpectedConstraint> : never;
10
14
  number: DCommon.IsExtends<GenericExpectedConstraint, DString.Number> extends true ? DCommon.Or<[
11
15
  DCommon.IsExtends<GenericValue, DString.NumberInString>,
12
16
  DCommon.IsExtends<GenericValue, DString.Number>
@@ -19,8 +19,9 @@ export type ComputeInferConstraint<GenericInput extends unknown, GenericOutput e
19
19
  DCommon.IsNever<GenericOutput>
20
20
  ]> extends true ? unknown : (GenericInput extends unknown ? (GenericOutput extends unknown ? DObject.Values<ComputeInferConstraintRule<GenericInput, GenericOutput>> extends infer InferredResult ? DCommon.ContainExtends<InferredResult, DCommon.ComputedTypeError<string>> extends true ? Extract<InferredResult, DCommon.ComputedTypeError<string>> : GenericInput & DCommon.UnionToIntersection<InferredResult> : never : never) extends infer InferredResult ? DCommon.IsExtends<InferredResult, DCommon.ComputedTypeError<string>> extends true ? InferredResult : Extract<InferredResult, DCommon.BaseConstraint> : never : never) extends infer InferredResult ? DCommon.IsExtends<InferredResult, DCommon.BaseConstraint> extends true ? Extract<InferredResult, DCommon.BaseConstraint> : InferredResult : never;
21
21
  export type SupportedOutputInfer = (string | readonly unknown[] | number);
22
+ type ComputeInput<GenericInput extends unknown> = GenericInput extends SupportedOutputInfer ? DCommon.RemoveConstraint<GenericInput> extends infer InferredResult ? InferredResult extends readonly unknown[] ? readonly [...InferredResult] : InferredResult : never : never;
22
23
  type ComputeInferInputRequirement<GenericInput extends unknown> = GenericInput extends string ? DString.RequireLiteral<GenericInput> : GenericInput extends number ? DNumber.RequireLiteral<GenericInput> : GenericInput extends readonly unknown[] ? DTuple.Require<GenericInput> : never;
23
- export declare function infer<GenericOutput extends SupportedOutputInfer, const GenericInput extends DCommon.RemoveConstraint<GenericOutput> = never, GenericComputedOutput = ComputeInferConstraint<GenericInput, GenericOutput>>(input: (GenericInput & ComputeInferInputRequirement<GenericInput> & DCommon.BreakGenericLink<DCommon.NeverCoalescing<GenericComputedOutput extends DCommon.ComputedTypeError<string> ? GenericComputedOutput : never, unknown>>)): DCommon.Or<[
24
+ export declare function infer<GenericOutput extends unknown, const GenericInput extends ComputeInput<GenericOutput> = never, GenericComputedOutput = ComputeInferConstraint<GenericInput, Extract<GenericOutput, SupportedOutputInfer>>>(input: (GenericInput & ComputeInferInputRequirement<GenericInput> & DCommon.BreakGenericLink<DCommon.NeverCoalescing<GenericComputedOutput extends DCommon.ComputedTypeError<string> ? GenericComputedOutput : never, unknown>>)): DCommon.Or<[
24
25
  DCommon.IsNever<GenericInput>,
25
26
  DCommon.ContainExtends<GenericComputedOutput, DCommon.ComputedTypeError<string>>
26
27
  ]> extends true ? GenericOutput : DCommon.BreakGenericLink<DCommon.NeverCoalescing<GenericComputedOutput, GenericInput>>;
@@ -5,6 +5,7 @@ export interface ComputeInferConstraintStringRule<GenericInput extends string, G
5
5
  maxCharacters: DString.ComputeMaxCharactersCompatibility<GenericInput, GenericOutput, unknown> extends infer InferredResult extends DCommon.CompatibilityConstraintResult<boolean, number, number> ? InferredResult extends DCommon.CompatibilityConstraintResult<true> ? DString.MaxCharacters<InferredResult["to"]> : DCommon.ComputedTypeError<`Impossible to cast on MaxCharacters<${InferredResult["to"]}> because constraint MaxCharacters<${InferredResult["from"]}> from the value is more than.`> : never;
6
6
  minCharacters: DString.ComputeMinCharactersCompatibility<GenericInput, GenericOutput, unknown> extends infer InferredResult extends DCommon.CompatibilityConstraintResult<boolean, number, number> ? InferredResult extends DCommon.CompatibilityConstraintResult<true> ? DString.MinCharacters<InferredResult["to"]> : DCommon.ComputedTypeError<`Impossible to cast on MinCharacters<${InferredResult["to"]}> because constraint MinCharacters<${InferredResult["from"]}> from the value is less than.`> : never;
7
7
  lengthEqual: DString.ComputeLengthEqualCompatibility<GenericInput, GenericOutput, unknown> extends infer InferredResult extends DCommon.CompatibilityConstraintResult<boolean, number, number> ? InferredResult extends DCommon.CompatibilityConstraintResult<true> ? DString.LengthEqual<InferredResult["to"]> : DCommon.ComputedTypeError<`Impossible to cast on LengthEqual<${InferredResult["to"]}> because constraint LengthEqual<${InferredResult["from"]}> from the value is not equal.`> : never;
8
+ allowedCharacters: GenericOutput extends DString.AllowedCharacters<infer InferredCharactersRange> ? DString.IsAllowedString<GenericInput, DString.CharactersRangeStore[InferredCharactersRange]> extends true ? DString.AllowedCharacters<InferredCharactersRange> : DCommon.ComputedTypeError<`Impossible to cast on AllowedCharacters because value ${GenericInput} contains forbidden characters.`> : never;
8
9
  number: DCommon.IsExtends<GenericOutput, DString.Number> extends true ? GenericInput extends DString.NumberInString ? DString.Number : DCommon.ComputedTypeError<`Impossible to cast on Number because value ${GenericInput} is not a number.`> : never;
9
10
  path: DCommon.IsExtends<GenericOutput, DPath.Path> extends true ? DPath.IsLiteralPath<GenericInput> extends true ? DPath.Path : DCommon.ComputedTypeError<`Impossible to cast on Path because value ${GenericInput} is not path.`> : never;
10
11
  absolutePath: DCommon.IsExtends<GenericOutput, DPath.Absolute> extends true ? DPath.IsLiteralAbsolutePath<GenericInput> extends true ? DPath.Absolute : DCommon.ComputedTypeError<`Impossible to cast on AbsolutePath because value ${GenericInput} is not absolute path.`> : never;
@@ -2,5 +2,6 @@ export * from './base';
2
2
  export type * from './compatibilityResult';
3
3
  export type * from './dynamic';
4
4
  export type * from './get';
5
+ export type * from './maybe';
5
6
  export type * from './remove';
6
7
  export type * from './unbundles';
@@ -0,0 +1,2 @@
1
+ import { Constraint } from './base';
2
+ export type MaybeConstraint<GenericValue extends unknown> = (GenericValue | (GenericValue & Constraint));
@@ -1,5 +1,6 @@
1
+ import { Constraint } from './constraint';
1
2
  import * as DChrono from '../chrono';
2
- export type EligibleFormDataValue = (boolean | number | null | string | File | undefined | DChrono.TheDate | DChrono.TheTime | {
3
+ export type EligibleFormDataValue = (boolean | number | null | string | File | undefined | DChrono.TheDate | DChrono.TheTime | Constraint | {
3
4
  [key: string]: EligibleFormDataValue;
4
5
  } | EligibleFormDataValue[]);
5
6
  export declare class TheFormData<GenericValues extends Record<string, EligibleFormDataValue>> extends FormData {
@@ -1,10 +1,11 @@
1
1
  //#region scripts/common/memo.ts
2
2
  function memo(theFunction) {
3
- return { get value() {
3
+ const payload = { get value() {
4
4
  const value = theFunction();
5
- Object.defineProperty(this, "value", { value });
5
+ Object.defineProperty(payload, "value", { value });
6
6
  return value;
7
7
  } };
8
+ return payload;
8
9
  }
9
10
  //#endregion
10
11
  exports.memo = memo;
@@ -1,10 +1,11 @@
1
1
  //#region scripts/common/memo.ts
2
2
  function memo(theFunction) {
3
- return { get value() {
3
+ const payload = { get value() {
4
4
  const value = theFunction();
5
- Object.defineProperty(this, "value", { value });
5
+ Object.defineProperty(payload, "value", { value });
6
6
  return value;
7
7
  } };
8
+ return payload;
8
9
  }
9
10
  //#endregion
10
11
  export { memo };
@@ -3,17 +3,18 @@ const require_forward = require("./forward.cjs");
3
3
  //#region scripts/common/memoPromise.ts
4
4
  function memoPromise(getter) {
5
5
  let externalPromise = require_forward.forward(void 0);
6
- return { get value() {
6
+ const payload = { get value() {
7
7
  if (externalPromise) return externalPromise.promise;
8
8
  externalPromise = require_externalPromise.createExternalPromise();
9
9
  const { resolve, reject } = externalPromise;
10
10
  const promise = getter();
11
11
  (promise instanceof Promise ? promise : Promise.resolve(promise)).then((result) => {
12
- Object.defineProperty(this, "value", { value: result });
12
+ Object.defineProperty(payload, "value", { value: result });
13
13
  resolve(result);
14
14
  }).catch(reject);
15
15
  return externalPromise.promise;
16
16
  } };
17
+ return payload;
17
18
  }
18
19
  //#endregion
19
20
  exports.memoPromise = memoPromise;
@@ -3,17 +3,18 @@ import { forward } from "./forward.mjs";
3
3
  //#region scripts/common/memoPromise.ts
4
4
  function memoPromise(getter) {
5
5
  let externalPromise = forward(void 0);
6
- return { get value() {
6
+ const payload = { get value() {
7
7
  if (externalPromise) return externalPromise.promise;
8
8
  externalPromise = createExternalPromise();
9
9
  const { resolve, reject } = externalPromise;
10
10
  const promise = getter();
11
11
  (promise instanceof Promise ? promise : Promise.resolve(promise)).then((result) => {
12
- Object.defineProperty(this, "value", { value: result });
12
+ Object.defineProperty(payload, "value", { value: result });
13
13
  resolve(result);
14
14
  }).catch(reject);
15
15
  return externalPromise.promise;
16
16
  } };
17
+ return payload;
17
18
  }
18
19
  //#endregion
19
20
  export { memoPromise };
@@ -1,6 +1,6 @@
1
1
  //#region scripts/common/timeout.ts
2
- function timeout(millieSeconde) {
3
- return new Promise((resolve) => void setTimeout(resolve, millieSeconde));
2
+ function timeout(milliSeconds) {
3
+ return new Promise((resolve) => void setTimeout(resolve, milliSeconds));
4
4
  }
5
5
  //#endregion
6
6
  exports.timeout = timeout;
@@ -1 +1 @@
1
- export declare function timeout(millieSeconde?: number): Promise<void>;
1
+ export declare function timeout(milliSeconds?: number): Promise<void>;
@@ -1,6 +1,6 @@
1
1
  //#region scripts/common/timeout.ts
2
- function timeout(millieSeconde) {
3
- return new Promise((resolve) => void setTimeout(resolve, millieSeconde));
2
+ function timeout(milliSeconds) {
3
+ return new Promise((resolve) => void setTimeout(resolve, milliSeconds));
4
4
  }
5
5
  //#endregion
6
6
  export { timeout };
@@ -0,0 +1 @@
1
+ export type ApplyPromiseIf<GenericValue extends unknown, GenericBoolean extends boolean> = true extends GenericBoolean ? Promise<GenericValue> : GenericValue;
@@ -6,6 +6,7 @@ export type * from './anyObject';
6
6
  export type * from './anyPredicate';
7
7
  export type * from './anyTuple';
8
8
  export type * from './anyValue';
9
+ export type * from './applyPromiseIf';
9
10
  export type * from './bivariantFunction';
10
11
  export type * from './breakGenericLink';
11
12
  export type * from './cleanObjectEntry';
@@ -26,6 +27,7 @@ export type * from './forward';
26
27
  export type * from './hasSomething';
27
28
  export type * from './isEqual';
28
29
  export type * from './isNever';
30
+ export type * from './isObject';
29
31
  export type * from './isUnion';
30
32
  export type * from './json';
31
33
  export type * from './lastUnionElement';
@@ -0,0 +1,8 @@
1
+ import { And } from './and';
2
+ import { IsExtends } from './IsExtends';
3
+ import { IsNever } from './isNever';
4
+ import { Not } from './not';
5
+ export type IsObject<GenericValue extends unknown> = And<[
6
+ IsExtends<GenericValue, object>,
7
+ Not<IsNever<keyof GenericValue>>
8
+ ]>;
@@ -1,4 +1,15 @@
1
+ import { RemoveConstraint } from '../constraint';
1
2
  import { MaybeArray } from './maybeArray';
2
- export type Json = MaybeArray<string | undefined | boolean | number | null | {
3
+ import type * as DModeling from '../../modeling';
4
+ import type * as DKind from '../../kind';
5
+ export type JsonPrimitive = (string | undefined | boolean | number | null);
6
+ export type Json = MaybeArray<JsonPrimitive | {
3
7
  readonly [key: string]: Json;
4
8
  }>;
9
+ type ObjectToJson<GenericValue extends object, GenericIgnore extends unknown, GenericClearValue = RemoveConstraint<DKind.Remove<GenericValue>>, GenericConstraint = (GenericValue extends (GenericClearValue & infer InferredConstraint) ? InferredConstraint : unknown), GenericEntity = (GenericValue extends DModeling.Entity<infer InferredName> ? DModeling.Entity<InferredName> : unknown), GenericObjectTag = (GenericValue extends DModeling.ObjectTag<infer InferredName> ? DModeling.ObjectTag<InferredName> : unknown)> = GenericClearValue extends [infer InferredFirst, ...infer InferredRest] ? [ToJson<InferredFirst, GenericIgnore>, ...ToJson<InferredRest, GenericIgnore>] & GenericConstraint : GenericClearValue extends [] ? [] & GenericConstraint : GenericClearValue extends (infer InferredElement)[] ? ToJson<InferredElement, GenericIgnore>[] & GenericConstraint : GenericClearValue extends readonly [infer InferredFirst, ...infer InferredRest] ? readonly [ToJson<InferredFirst, GenericIgnore>, ...ToJson<InferredRest, GenericIgnore>] : GenericClearValue extends readonly [] & GenericConstraint ? readonly [] & GenericConstraint : GenericClearValue extends readonly (infer InferredElement)[] ? readonly ToJson<InferredElement, GenericIgnore>[] & GenericConstraint : GenericClearValue extends object ? ({
10
+ [Prop in keyof GenericClearValue]: ToJson<GenericClearValue[Prop], GenericIgnore>;
11
+ } & GenericConstraint & GenericEntity & GenericObjectTag) : never;
12
+ export type ToJson<GenericValue extends unknown, GenericIgnore extends unknown = never> = GenericValue extends (JsonPrimitive | GenericIgnore) ? GenericValue : GenericValue extends {
13
+ toJSON(): unknown;
14
+ } ? ToJson<ReturnType<GenericValue["toJSON"]>, GenericIgnore> : GenericValue extends object ? ObjectToJson<GenericValue, GenericIgnore> : GenericValue;
15
+ export {};
@@ -9,8 +9,8 @@ function createCodec(fundamentalType, predicateEncode, encode, decode) {
9
9
  const self = {
10
10
  fundamentalType,
11
11
  predicateEncode: (data) => predicateEncode(data),
12
- encode: (data, errorHandler) => require_callThen.callThen(encode(data, self, errorHandler), (encodedData) => encodedData === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(predicateEncode(encodedData), (result) => result === false ? errorHandler?.().addEncodeIssue(self, encodedData) ?? require_resultSymbol.ErrorSymbol : encodedData)),
13
- decode: (data, errorHandler) => require_callThen.callThen(predicateEncode(data), (result) => result === false ? errorHandler?.().addDecodeIssue(self, data) ?? require_resultSymbol.ErrorSymbol : decode(data, self, errorHandler)),
12
+ encode: (data, errorHandler) => require_callThen.callThen(encode(data, self, errorHandler), (encodedData) => encodedData === require_resultSymbol.ErrorSymbol ? errorHandler?.().addEncodeIssue(self, "encoding", data) ?? require_resultSymbol.ErrorSymbol : require_callThen.callThen(predicateEncode(encodedData), (result) => result === false ? errorHandler?.().addEncodeIssue(self, "predicate", encodedData) ?? require_resultSymbol.ErrorSymbol : encodedData)),
13
+ decode: (data, errorHandler) => require_callThen.callThen(predicateEncode(data), (result) => result === false ? errorHandler?.().addDecodeIssue(self, "predicate", data) ?? require_resultSymbol.ErrorSymbol : require_callThen.callThen(decode(data, self, errorHandler), (decodedData) => decodedData === require_resultSymbol.ErrorSymbol ? errorHandler?.().addDecodeIssue(self, "decoding", data) ?? require_resultSymbol.ErrorSymbol : decodedData)),
14
14
  [codecKind.runTimeKey]: null
15
15
  };
16
16
  return self;
@@ -9,8 +9,8 @@ function createCodec(fundamentalType, predicateEncode, encode, decode) {
9
9
  const self = {
10
10
  fundamentalType,
11
11
  predicateEncode: (data) => predicateEncode(data),
12
- encode: (data, errorHandler) => callThen(encode(data, self, errorHandler), (encodedData) => encodedData === ErrorSymbol ? ErrorSymbol : callThen(predicateEncode(encodedData), (result) => result === false ? errorHandler?.().addEncodeIssue(self, encodedData) ?? ErrorSymbol : encodedData)),
13
- decode: (data, errorHandler) => callThen(predicateEncode(data), (result) => result === false ? errorHandler?.().addDecodeIssue(self, data) ?? ErrorSymbol : decode(data, self, errorHandler)),
12
+ encode: (data, errorHandler) => callThen(encode(data, self, errorHandler), (encodedData) => encodedData === ErrorSymbol ? errorHandler?.().addEncodeIssue(self, "encoding", data) ?? ErrorSymbol : callThen(predicateEncode(encodedData), (result) => result === false ? errorHandler?.().addEncodeIssue(self, "predicate", encodedData) ?? ErrorSymbol : encodedData)),
13
+ decode: (data, errorHandler) => callThen(predicateEncode(data), (result) => result === false ? errorHandler?.().addDecodeIssue(self, "predicate", data) ?? ErrorSymbol : callThen(decode(data, self, errorHandler), (decodedData) => decodedData === ErrorSymbol ? errorHandler?.().addDecodeIssue(self, "decoding", data) ?? ErrorSymbol : decodedData)),
14
14
  [codecKind.runTimeKey]: null
15
15
  };
16
16
  return self;
@@ -38,7 +38,7 @@ const codecsString = require_base.createCodecs({
38
38
  }
39
39
  }),
40
40
  time: require_base.createCodec(require_time.TheTime, (data) => typeof data === "string", require_to.to, require_innerPipe.innerPipe((value) => require_createTime.createTime({ value }), require_whenHasInformationOtherwise.whenHasInformationOtherwise("time-created", require_forward.forward, require_justReturn.justReturn(require_resultSymbol.ErrorSymbol)))),
41
- undefined: require_base.createCodec(require_undefined.TheUndefined, (data) => data === "undefined", require_to.to, require_justReturn.justReturn(void 0))
41
+ undefined: require_base.createCodec(require_undefined.TheUndefined, (data) => data === void 0 || data === "undefined", require_to.to, require_justReturn.justReturn(void 0))
42
42
  });
43
43
  //#endregion
44
44
  exports.codecsString = codecsString;
@@ -7,5 +7,5 @@ export declare const codecsString: import('../../..').Codecs<{
7
7
  null: import('../../..').Codec<FundamentalType.TheNull, "null">;
8
8
  number: import('../../..').Codec<FundamentalType.TheNumber, string & DString.Number>;
9
9
  time: import('../../..').Codec<FundamentalType.TheTime, string>;
10
- undefined: import('../../..').Codec<FundamentalType.TheUndefined, "undefined">;
10
+ undefined: import('../../..').Codec<FundamentalType.TheUndefined, "undefined" | undefined>;
11
11
  }>;
@@ -38,7 +38,7 @@ const codecsString = createCodecs({
38
38
  }
39
39
  }),
40
40
  time: createCodec(TheTime, (data) => typeof data === "string", to, innerPipe((value) => createTime({ value }), whenHasInformationOtherwise("time-created", forward, justReturn(ErrorSymbol)))),
41
- undefined: createCodec(TheUndefined, (data) => data === "undefined", to, justReturn(void 0))
41
+ undefined: createCodec(TheUndefined, (data) => data === void 0 || data === "undefined", to, justReturn(void 0))
42
42
  });
43
43
  //#endregion
44
44
  export { codecsString };
@@ -1,8 +1,21 @@
1
- const require_kind = require("../kind.cjs");
2
- //#region scripts/dataStructure/common/error.ts
1
+ const require_parentClass = require("../../../kind/parentClass.cjs");
2
+ const require_kind = require("../../kind.cjs");
3
+ //#region scripts/dataStructure/common/error/base.ts
3
4
  const issueKind = require_kind.createKind("issue");
4
5
  const encodeIssueKind = require_kind.createKind("encode-issue");
5
6
  const decodeIssueKind = require_kind.createKind("decode-issue");
7
+ var Error = class extends require_parentClass.parentClass(require_kind.createKind("error"), globalThis.Error) {
8
+ issues;
9
+ constructor(issues) {
10
+ super(null, "DataStructure Error.");
11
+ this.issues = issues;
12
+ }
13
+ };
14
+ var ErrorPromise = class extends require_parentClass.parentClass(require_kind.createKind("error-promise"), globalThis.Error) {
15
+ constructor() {
16
+ super(null, "DataStructure Error Promise.");
17
+ }
18
+ };
6
19
  function createErrorHandler(defaultPath) {
7
20
  const issues = [];
8
21
  const currentPath = defaultPath ? [...defaultPath] : [];
@@ -34,8 +47,9 @@ function createErrorHandler(defaultPath) {
34
47
  [issueKind.runTimeKey]: null
35
48
  });
36
49
  },
37
- addEncodeIssue: (source, data, message) => {
50
+ addEncodeIssue: (source, from, data, message) => {
38
51
  issues.push({
52
+ from,
39
53
  data,
40
54
  path: currentPath.join("."),
41
55
  message,
@@ -43,8 +57,9 @@ function createErrorHandler(defaultPath) {
43
57
  [encodeIssueKind.runTimeKey]: null
44
58
  });
45
59
  },
46
- addDecodeIssue: (source, data, message) => {
60
+ addDecodeIssue: (source, from, data, message) => {
47
61
  issues.push({
62
+ from,
48
63
  data,
49
64
  path: currentPath.join("."),
50
65
  message,
@@ -52,7 +67,7 @@ function createErrorHandler(defaultPath) {
52
67
  [decodeIssueKind.runTimeKey]: null
53
68
  });
54
69
  },
55
- createError: () => ({ issues }),
70
+ createError: () => new Error(issues),
56
71
  importIssues: (errorHandler) => void errorHandler.forEach((value) => void issues.push(...typeof value === "function" ? value().issues : value.issues))
57
72
  };
58
73
  }
@@ -64,6 +79,8 @@ function createGetErrorHandler(defaultPath) {
64
79
  };
65
80
  }
66
81
  //#endregion
82
+ exports.Error = Error;
83
+ exports.ErrorPromise = ErrorPromise;
67
84
  exports.createErrorHandler = createErrorHandler;
68
85
  exports.createGetErrorHandler = createGetErrorHandler;
69
86
  exports.decodeIssueKind = decodeIssueKind;
@@ -1,9 +1,9 @@
1
- import { Constraint } from '../constraint';
2
- import { Structure } from '../structure';
3
- import { Type } from '../type';
4
- import { Codec } from './codec';
5
- import type * as DCommon from '../../common';
6
- import type * as DKind from '../../kind';
1
+ import { Constraint } from '../../constraint';
2
+ import { Structure } from '../../structure';
3
+ import { Type } from '../../type';
4
+ import { Codec } from '../codec';
5
+ import type * as DCommon from '../../../common';
6
+ import * as DKind from '../../../kind';
7
7
  export declare const issueKind: DKind.Handler<DKind.Definition<"@DuplojsLangDataStructure/issue", unknown>>;
8
8
  export interface Issue extends DKind.Kind<typeof issueKind> {
9
9
  readonly path: string;
@@ -13,6 +13,7 @@ export interface Issue extends DKind.Kind<typeof issueKind> {
13
13
  }
14
14
  export declare const encodeIssueKind: DKind.Handler<DKind.Definition<"@DuplojsLangDataStructure/encode-issue", unknown>>;
15
15
  export interface EncodeIssue extends DKind.Kind<typeof encodeIssueKind> {
16
+ readonly from: "encoding" | "predicate" | "external";
16
17
  readonly path: string;
17
18
  readonly data: unknown;
18
19
  readonly message?: string;
@@ -20,6 +21,7 @@ export interface EncodeIssue extends DKind.Kind<typeof encodeIssueKind> {
20
21
  }
21
22
  export declare const decodeIssueKind: DKind.Handler<DKind.Definition<"@DuplojsLangDataStructure/decode-issue", unknown>>;
22
23
  export interface DecodeIssue extends DKind.Kind<typeof decodeIssueKind> {
24
+ readonly from: "decoding" | "predicate" | "external";
23
25
  readonly path: string;
24
26
  readonly data: unknown;
25
27
  readonly message?: string;
@@ -30,15 +32,21 @@ export interface PathStageErrorHandler {
30
32
  setCurrentPath(path: string): void;
31
33
  close(): void;
32
34
  }
33
- export interface Error {
35
+ declare const Error_base: DKind.KindClass<DKind.Handler<DKind.Definition<"@DuplojsLangDataStructure/error", unknown>>, ErrorConstructor>;
36
+ export declare class Error extends Error_base {
34
37
  readonly issues: readonly Issues[];
38
+ constructor(issues: readonly Issues[]);
39
+ }
40
+ declare const ErrorPromise_base: DKind.KindClass<DKind.Handler<DKind.Definition<"@DuplojsLangDataStructure/error-promise", unknown>>, ErrorConstructor>;
41
+ export declare class ErrorPromise extends ErrorPromise_base {
42
+ constructor();
35
43
  }
36
44
  export interface ErrorHandler {
37
45
  readonly issues: readonly Issues[];
38
46
  readonly currentPath: string[];
39
47
  addIssue(source: ReturnType<Issue["getSource"]>, data: unknown, subSource?: ReturnType<Extract<Issue["getSubSource"], DCommon.AnyFunction>>): void;
40
- addEncodeIssue(source: ReturnType<EncodeIssue["getSource"]>, data: unknown, message?: string): void;
41
- addDecodeIssue(source: ReturnType<DecodeIssue["getSource"]>, data: unknown, message?: string): void;
48
+ addEncodeIssue(source: ReturnType<EncodeIssue["getSource"]>, from: EncodeIssue["from"], data: unknown, message?: string): void;
49
+ addDecodeIssue(source: ReturnType<DecodeIssue["getSource"]>, from: DecodeIssue["from"], data: unknown, message?: string): void;
42
50
  importIssues(errorHandler: (GetErrorHandler | ErrorHandler)[]): void;
43
51
  createPathStage(): PathStageErrorHandler;
44
52
  createError(): Error;
@@ -46,3 +54,4 @@ export interface ErrorHandler {
46
54
  export declare function createErrorHandler(defaultPath?: string[]): ErrorHandler;
47
55
  export type GetErrorHandler = () => ErrorHandler;
48
56
  export declare function createGetErrorHandler(defaultPath?: string[]): GetErrorHandler;
57
+ export {};
@@ -1,8 +1,21 @@
1
- import { createKind } from "../kind.mjs";
2
- //#region scripts/dataStructure/common/error.ts
1
+ import { parentClass } from "../../../kind/parentClass.mjs";
2
+ import { createKind } from "../../kind.mjs";
3
+ //#region scripts/dataStructure/common/error/base.ts
3
4
  const issueKind = createKind("issue");
4
5
  const encodeIssueKind = createKind("encode-issue");
5
6
  const decodeIssueKind = createKind("decode-issue");
7
+ var Error = class extends parentClass(createKind("error"), globalThis.Error) {
8
+ issues;
9
+ constructor(issues) {
10
+ super(null, "DataStructure Error.");
11
+ this.issues = issues;
12
+ }
13
+ };
14
+ var ErrorPromise = class extends parentClass(createKind("error-promise"), globalThis.Error) {
15
+ constructor() {
16
+ super(null, "DataStructure Error Promise.");
17
+ }
18
+ };
6
19
  function createErrorHandler(defaultPath) {
7
20
  const issues = [];
8
21
  const currentPath = defaultPath ? [...defaultPath] : [];
@@ -34,8 +47,9 @@ function createErrorHandler(defaultPath) {
34
47
  [issueKind.runTimeKey]: null
35
48
  });
36
49
  },
37
- addEncodeIssue: (source, data, message) => {
50
+ addEncodeIssue: (source, from, data, message) => {
38
51
  issues.push({
52
+ from,
39
53
  data,
40
54
  path: currentPath.join("."),
41
55
  message,
@@ -43,8 +57,9 @@ function createErrorHandler(defaultPath) {
43
57
  [encodeIssueKind.runTimeKey]: null
44
58
  });
45
59
  },
46
- addDecodeIssue: (source, data, message) => {
60
+ addDecodeIssue: (source, from, data, message) => {
47
61
  issues.push({
62
+ from,
48
63
  data,
49
64
  path: currentPath.join("."),
50
65
  message,
@@ -52,7 +67,7 @@ function createErrorHandler(defaultPath) {
52
67
  [decodeIssueKind.runTimeKey]: null
53
68
  });
54
69
  },
55
- createError: () => ({ issues }),
70
+ createError: () => new Error(issues),
56
71
  importIssues: (errorHandler) => void errorHandler.forEach((value) => void issues.push(...typeof value === "function" ? value().issues : value.issues))
57
72
  };
58
73
  }
@@ -64,4 +79,4 @@ function createGetErrorHandler(defaultPath) {
64
79
  };
65
80
  }
66
81
  //#endregion
67
- export { createErrorHandler, createGetErrorHandler, decodeIssueKind, encodeIssueKind, issueKind };
82
+ export { Error, ErrorPromise, createErrorHandler, createGetErrorHandler, decodeIssueKind, encodeIssueKind, issueKind };