@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
@@ -5,7 +5,7 @@ import { right } from "../../either/right/create.mjs";
5
5
  import { simpleClone } from "../../common/simpleClone.mjs";
6
6
  import { createKind } from "../kind.mjs";
7
7
  import { ErrorSymbol, SuccessSymbol } from "../common/resultSymbol.mjs";
8
- import { createGetErrorHandler } from "../common/error.mjs";
8
+ import { ErrorPromise, createGetErrorHandler } from "../common/error/base.mjs";
9
9
  //#region scripts/dataStructure/structure/base.ts
10
10
  var StructureClass = class StructureClass {
11
11
  constructor() {}
@@ -23,7 +23,7 @@ var StructureClass = class StructureClass {
23
23
  };
24
24
  const structureKind = createKind("structure");
25
25
  function createStructure(kindHandler, createConstructor) {
26
- const init = (definition, { executeCheck, executeEncode, executeDecode, isAsynchronous }, ...rest) => {
26
+ const init = (definition, { executeCheck, executeEncode, executeDecode, executeParse, isAsynchronous }, ...rest) => {
27
27
  let cachedIsAsynchronous = void 0;
28
28
  const self = StructureClass.init({
29
29
  ...Object.fromEntries(Object.entries(rest[0] ?? {}).map(([key, prop]) => typeof prop === "function" ? [key, (...args) => prop(self, ...args)] : [key, prop])),
@@ -35,12 +35,14 @@ function createStructure(kindHandler, createConstructor) {
35
35
  executeCheck,
36
36
  executeEncode,
37
37
  executeDecode,
38
+ executeParse,
38
39
  isAsynchronous
39
40
  }, ...rest),
40
41
  executeConstraints: (data, errorHandler) => definition.constraints.reduce((accumulator, constraint) => callThen(accumulator, (result) => result === ErrorSymbol ? ErrorSymbol : callThen(constraint.executeCheck(data), (constraintResult) => constraintResult === ErrorSymbol ? errorHandler?.().addIssue(self, data, constraint) ?? ErrorSymbol : SuccessSymbol)), SuccessSymbol),
41
42
  executeCheck: (data, errorHandler) => callThen(executeCheck(self, data, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : self.executeConstraints(data, errorHandler)),
42
43
  executeEncode: (codecContext, data, errorHandler) => executeEncode(self, codecContext, data, errorHandler),
43
44
  executeDecode: (codecContext, data, errorHandler) => executeDecode(self, codecContext, data, errorHandler),
45
+ executeParse: (codecContext, data, errorHandler) => executeParse(self, codecContext, data, errorHandler),
44
46
  isAsynchronous: () => {
45
47
  if (cachedIsAsynchronous !== void 0) return cachedIsAsynchronous;
46
48
  cachedIsAsynchronous = false;
@@ -52,7 +54,7 @@ function createStructure(kindHandler, createConstructor) {
52
54
  check: (data) => {
53
55
  const errorHandler = createGetErrorHandler();
54
56
  const result = self.executeCheck(data, errorHandler);
55
- if (result instanceof Promise) return left("async-error", void 0);
57
+ if (result instanceof Promise) return left("async-error", new ErrorPromise());
56
58
  if (result === ErrorSymbol) return left("check-error", errorHandler().createError());
57
59
  return right("check-success", data);
58
60
  },
@@ -66,41 +68,51 @@ function createStructure(kindHandler, createConstructor) {
66
68
  if (result instanceof Promise || result === ErrorSymbol) return false;
67
69
  return true;
68
70
  },
69
- encode: (codecs, data) => self.unsafeEncode(codecs, data),
70
- asyncEncode: (codecs, data) => self.asyncUnsafeEncode(codecs, data),
71
- unsafeEncode: (codecs, data) => {
71
+ encode: (codecs, data) => {
72
72
  const errorHandler = createGetErrorHandler();
73
73
  const result = self.executeEncode(codecs.context.value, data, errorHandler);
74
- if (result instanceof Promise) return left("async-error", void 0);
74
+ if (result instanceof Promise) return left("async-error", new ErrorPromise());
75
75
  if (result === ErrorSymbol) return left("encode-error", errorHandler().createError());
76
76
  return right("encode-success", result);
77
77
  },
78
- asyncUnsafeEncode: async (codecs, data) => {
78
+ asyncEncode: async (codecs, data) => {
79
79
  const errorHandler = createGetErrorHandler();
80
80
  const result = await self.executeEncode(codecs.context.value, data, errorHandler);
81
81
  if (result === ErrorSymbol) return left("encode-error", errorHandler().createError());
82
82
  return right("encode-success", result);
83
83
  },
84
- decode: (codecs, data) => self.unsafeDecode(codecs, data),
85
- asyncDecode: (codecs, data) => self.asyncUnsafeDecode(codecs, data),
86
- unsafeDecode: (codecs, data) => {
84
+ decode: (codecs, data) => {
87
85
  const errorHandler = createGetErrorHandler();
88
86
  const result = self.executeDecode(codecs.context.value, data, errorHandler);
89
- if (result instanceof Promise) return left("async-error", void 0);
87
+ if (result instanceof Promise) return left("async-error", new ErrorPromise());
90
88
  if (result === ErrorSymbol) return left("decode-error", errorHandler().createError());
91
89
  return right("decode-success", result);
92
90
  },
93
- asyncUnsafeDecode: async (codecs, data) => {
91
+ asyncDecode: async (codecs, data) => {
94
92
  const errorHandler = createGetErrorHandler();
95
93
  const result = await self.executeDecode(codecs.context.value, data, errorHandler);
96
94
  if (result === ErrorSymbol) return left("decode-error", errorHandler().createError());
97
95
  return right("decode-success", result);
98
96
  },
97
+ parse: (data, codecs) => {
98
+ const errorHandler = createGetErrorHandler();
99
+ const result = self.executeParse(codecs?.context.value ?? /* @__PURE__ */ new Map(), data, errorHandler);
100
+ if (result instanceof Promise) return left("async-error", new ErrorPromise());
101
+ if (result === ErrorSymbol) return left("parse-error", errorHandler().createError());
102
+ return right("parse-success", result);
103
+ },
104
+ asyncParse: async (data, codecs) => {
105
+ const errorHandler = createGetErrorHandler();
106
+ const result = await self.executeParse(codecs?.context.value ?? /* @__PURE__ */ new Map(), data, errorHandler);
107
+ if (result === ErrorSymbol) return left("parse-error", errorHandler().createError());
108
+ return right("parse-success", result);
109
+ },
99
110
  contract: () => self,
100
111
  clone: () => init(simpleClone(definition), {
101
112
  executeCheck,
102
113
  executeEncode,
103
114
  executeDecode,
115
+ executeParse,
104
116
  isAsynchronous
105
117
  }, ...rest),
106
118
  setMessage: (message) => {
@@ -37,6 +37,16 @@ const ArrayStructure = require_base.createStructure(arrayStructureKind, ({ init
37
37
  })), []);
38
38
  return require_callThen.callThen(decodedData, (awaitedDecodedData) => pathStage?.close() ?? (awaitedDecodedData === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(self.executeConstraints(awaitedDecodedData, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : awaitedDecodedData)));
39
39
  },
40
+ executeParse: (self, codecContext, data, errorHandler) => {
41
+ if (!Array.isArray(data)) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
42
+ const pathStage = errorHandler?.().createPathStage();
43
+ const parsedData = data.reduce((accumulator, value, index) => require_callThen.callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`[array: ${index}]`) ?? require_callThen.callThen(self.definition.element.executeParse(codecContext, value, errorHandler), (parsedData) => {
44
+ if (parsedData === require_resultSymbol.ErrorSymbol || awaitedAccumulator === require_resultSymbol.ErrorSymbol) return require_resultSymbol.ErrorSymbol;
45
+ awaitedAccumulator[index] = parsedData;
46
+ return awaitedAccumulator;
47
+ })), []);
48
+ return require_callThen.callThen(parsedData, (awaitedParsedData) => pathStage?.close() ?? (awaitedParsedData === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(self.executeConstraints(awaitedParsedData, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : awaitedParsedData)));
49
+ },
40
50
  isAsynchronous: (self) => self.definition.element.isAsynchronous()
41
51
  }));
42
52
  //#endregion
@@ -13,6 +13,6 @@ export declare const arrayStructureKind: DKind.Handler<DKind.Definition<"@Duploj
13
13
  export interface ArrayStructureDefinition<GenericConstraints extends readonly Constraint[] = readonly Constraint[]> extends StructureDefinition<GenericConstraints> {
14
14
  readonly element: Structure;
15
15
  }
16
- export interface ArrayStructure<GenericValue extends readonly unknown[] = readonly unknown[], GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.Forward<Structure<GenericValue, ArrayStructureDefinition<GenericConstraints>> & DKind.Kind<typeof arrayStructureKind>> {
16
+ export interface ArrayStructure<out GenericValue extends readonly unknown[] = readonly unknown[], out GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.Forward<Structure<GenericValue, ArrayStructureDefinition<GenericConstraints>> & DKind.Kind<typeof arrayStructureKind>> {
17
17
  }
18
18
  export declare const ArrayStructure: <GenericElement extends Structure, const GenericConstraints extends readonly Constraint<readonly StructureValue<GenericElement>[]>[]>(element: GenericElement, constraints: GenericConstraints) => NoInfer<ArrayStructure<readonly StructureValue<GenericElement>[], readonly [...GenericConstraints]>>;
@@ -37,6 +37,16 @@ const ArrayStructure = createStructure(arrayStructureKind, ({ init }) => (elemen
37
37
  })), []);
38
38
  return callThen(decodedData, (awaitedDecodedData) => pathStage?.close() ?? (awaitedDecodedData === ErrorSymbol ? ErrorSymbol : callThen(self.executeConstraints(awaitedDecodedData, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : awaitedDecodedData)));
39
39
  },
40
+ executeParse: (self, codecContext, data, errorHandler) => {
41
+ if (!Array.isArray(data)) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
42
+ const pathStage = errorHandler?.().createPathStage();
43
+ const parsedData = data.reduce((accumulator, value, index) => callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`[array: ${index}]`) ?? callThen(self.definition.element.executeParse(codecContext, value, errorHandler), (parsedData) => {
44
+ if (parsedData === ErrorSymbol || awaitedAccumulator === ErrorSymbol) return ErrorSymbol;
45
+ awaitedAccumulator[index] = parsedData;
46
+ return awaitedAccumulator;
47
+ })), []);
48
+ return callThen(parsedData, (awaitedParsedData) => pathStage?.close() ?? (awaitedParsedData === ErrorSymbol ? ErrorSymbol : callThen(self.executeConstraints(awaitedParsedData, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : awaitedParsedData)));
49
+ },
40
50
  isAsynchronous: (self) => self.definition.element.isAsynchronous()
41
51
  }));
42
52
  //#endregion
@@ -17,6 +17,7 @@ const LazyStructure = require_base.createStructure(lazyStructureKind, ({ init })
17
17
  executeCheck: (self, data, errorHandler) => self.definition.getter.value.executeCheck(data, errorHandler),
18
18
  executeEncode: (self, codecContext, data, errorHandler) => require_callThen.callThen(self.definition.getter.value.executeEncode(codecContext, data, errorHandler), (encodedData) => encodedData === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(self.executeConstraints(data, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : encodedData)),
19
19
  executeDecode: (self, codecContext, data, errorHandler) => require_callThen.callThen(self.definition.getter.value.executeDecode(codecContext, data, errorHandler), (decodedData) => decodedData === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(self.executeConstraints(decodedData, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : decodedData)),
20
+ executeParse: (self, codecContext, data, errorHandler) => require_callThen.callThen(self.definition.getter.value.executeParse(codecContext, data, errorHandler), (parsedData) => parsedData === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(self.executeConstraints(parsedData, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : parsedData)),
20
21
  isAsynchronous: (self) => self.definition.getter.value.isAsynchronous()
21
22
  }));
22
23
  //#endregion
@@ -7,6 +7,6 @@ export declare const lazyStructureKind: DKind.Handler<DKind.Definition<"@Duplojs
7
7
  export interface LazyStructureDefinition<GenericConstraints extends readonly Constraint[] = readonly Constraint[]> extends StructureDefinition<GenericConstraints> {
8
8
  readonly getter: DCommon.Memoized<Structure>;
9
9
  }
10
- export interface LazyStructure<GenericValue extends unknown = unknown, GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.Forward<Structure<GenericValue, LazyStructureDefinition<GenericConstraints>> & DKind.Kind<typeof lazyStructureKind>> {
10
+ export interface LazyStructure<out GenericValue extends unknown = unknown, out GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.Forward<Structure<GenericValue, LazyStructureDefinition<GenericConstraints>> & DKind.Kind<typeof lazyStructureKind>> {
11
11
  }
12
12
  export declare const LazyStructure: <GenericStructure extends Structure, const GenericConstraints extends readonly Constraint<StructureValue<GenericStructure>>[]>(getStructure: () => GenericStructure, constraints: GenericConstraints) => NoInfer<LazyStructure<StructureValue<GenericStructure>, readonly [...GenericConstraints]>>;
@@ -17,6 +17,7 @@ const LazyStructure = createStructure(lazyStructureKind, ({ init }) => (getStruc
17
17
  executeCheck: (self, data, errorHandler) => self.definition.getter.value.executeCheck(data, errorHandler),
18
18
  executeEncode: (self, codecContext, data, errorHandler) => callThen(self.definition.getter.value.executeEncode(codecContext, data, errorHandler), (encodedData) => encodedData === ErrorSymbol ? ErrorSymbol : callThen(self.executeConstraints(data, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : encodedData)),
19
19
  executeDecode: (self, codecContext, data, errorHandler) => callThen(self.definition.getter.value.executeDecode(codecContext, data, errorHandler), (decodedData) => decodedData === ErrorSymbol ? ErrorSymbol : callThen(self.executeConstraints(decodedData, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : decodedData)),
20
+ executeParse: (self, codecContext, data, errorHandler) => callThen(self.definition.getter.value.executeParse(codecContext, data, errorHandler), (parsedData) => parsedData === ErrorSymbol ? ErrorSymbol : callThen(self.executeConstraints(parsedData, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : parsedData)),
20
21
  isAsynchronous: (self) => self.definition.getter.value.isAsynchronous()
21
22
  }));
22
23
  //#endregion
@@ -10,6 +10,7 @@ const NonEncodableStringStructure = require_base.createStructure(nonEncodableStr
10
10
  executeCheck: (self, data, errorHandler) => data === self.definition.value ? require_resultSymbol.SuccessSymbol : errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol,
11
11
  executeEncode: (self, codecContext, data, errorHandler) => data === self.definition.value ? data : errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol,
12
12
  executeDecode: (self, codecContext, data, errorHandler) => data === self.definition.value ? data : errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol,
13
+ executeParse: (self, codecContext, data, errorHandler) => self.executeDecode(codecContext, data, errorHandler),
13
14
  isAsynchronous: () => false
14
15
  }));
15
16
  //#endregion
@@ -10,6 +10,7 @@ const NonEncodableStringStructure = createStructure(nonEncodableStringStructureK
10
10
  executeCheck: (self, data, errorHandler) => data === self.definition.value ? SuccessSymbol : errorHandler?.().addIssue(self, data) ?? ErrorSymbol,
11
11
  executeEncode: (self, codecContext, data, errorHandler) => data === self.definition.value ? data : errorHandler?.().addIssue(self, data) ?? ErrorSymbol,
12
12
  executeDecode: (self, codecContext, data, errorHandler) => data === self.definition.value ? data : errorHandler?.().addIssue(self, data) ?? ErrorSymbol,
13
+ executeParse: (self, codecContext, data, errorHandler) => self.executeDecode(codecContext, data, errorHandler),
13
14
  isAsynchronous: () => false
14
15
  }));
15
16
  //#endregion
@@ -7,10 +7,11 @@ const require_base = require("../base.cjs");
7
7
  //#region scripts/dataStructure/structure/defaults/object.ts
8
8
  const objectStructureKind = require_kind.createKind("object-structure");
9
9
  const ObjectStructure = require_base.createStructure(objectStructureKind, ({ init }) => (shape, constraints) => init({
10
- shape: require_memo.memo(() => Object.entries(shape).map(([key, value]) => ({
10
+ optimizedShape: require_memo.memo(() => Object.entries(shape).map(([key, value]) => ({
11
11
  key,
12
12
  value
13
13
  }))),
14
+ shape,
14
15
  keys: Object.keys(shape),
15
16
  constraints
16
17
  }, {
@@ -18,7 +19,7 @@ const ObjectStructure = require_base.createStructure(objectStructureKind, ({ ini
18
19
  if (!require_isSimple.isSimple(data) || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
19
20
  if (Object.keys(data).some((value) => !self.definition.keys.includes(value))) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
20
21
  const pathStage = errorHandler?.().createPathStage();
21
- const result = self.definition.shape.value.reduce((accumulator, entry) => require_callThen.callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(entry.key) ?? require_callThen.callThen(entry.value.executeCheck(data[entry.key], errorHandler), (result) => result === require_resultSymbol.ErrorSymbol || awaitedAccumulator === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_resultSymbol.SuccessSymbol)), require_resultSymbol.SuccessSymbol);
22
+ const result = self.definition.optimizedShape.value.reduce((accumulator, entry) => require_callThen.callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(entry.key) ?? require_callThen.callThen(entry.value.executeCheck(data[entry.key], errorHandler), (result) => result === require_resultSymbol.ErrorSymbol || awaitedAccumulator === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_resultSymbol.SuccessSymbol)), require_resultSymbol.SuccessSymbol);
22
23
  return require_callThen.callThen(result, (awaitedResult) => {
23
24
  pathStage?.close();
24
25
  return awaitedResult;
@@ -28,9 +29,9 @@ const ObjectStructure = require_base.createStructure(objectStructureKind, ({ ini
28
29
  if (!require_isSimple.isSimple(data) || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
29
30
  if (Object.keys(data).some((value) => !self.definition.keys.includes(value))) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
30
31
  const pathStage = errorHandler?.().createPathStage();
31
- const encodedData = self.definition.shape.value.reduce((accumulator, entry) => require_callThen.callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(entry.key) ?? require_callThen.callThen(entry.value.executeEncode(codecContext, data[entry.key], errorHandler), (encodedData) => {
32
+ const encodedData = self.definition.optimizedShape.value.reduce((accumulator, entry) => require_callThen.callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(entry.key) ?? require_callThen.callThen(entry.value.executeEncode(codecContext, data[entry.key], errorHandler), (encodedData) => {
32
33
  if (encodedData === require_resultSymbol.ErrorSymbol || awaitedAccumulator === require_resultSymbol.ErrorSymbol) return require_resultSymbol.ErrorSymbol;
33
- awaitedAccumulator[entry.key] = encodedData;
34
+ if (encodedData !== void 0) awaitedAccumulator[entry.key] = encodedData;
34
35
  return awaitedAccumulator;
35
36
  })), {});
36
37
  return require_callThen.callThen(encodedData, (awaitedEncodedData) => pathStage?.close() ?? (awaitedEncodedData === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(self.executeConstraints(data, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : awaitedEncodedData)));
@@ -39,14 +40,24 @@ const ObjectStructure = require_base.createStructure(objectStructureKind, ({ ini
39
40
  if (!require_isSimple.isSimple(data) || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
40
41
  if (Object.keys(data).some((value) => !self.definition.keys.includes(value))) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
41
42
  const pathStage = errorHandler?.().createPathStage();
42
- const decodedData = self.definition.shape.value.reduce((accumulator, entry) => require_callThen.callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(entry.key) ?? require_callThen.callThen(entry.value.executeDecode(codecContext, data[entry.key], errorHandler), (decodedData) => {
43
+ const decodedData = self.definition.optimizedShape.value.reduce((accumulator, entry) => require_callThen.callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(entry.key) ?? require_callThen.callThen(entry.value.executeDecode(codecContext, data[entry.key], errorHandler), (decodedData) => {
43
44
  if (decodedData === require_resultSymbol.ErrorSymbol || awaitedAccumulator === require_resultSymbol.ErrorSymbol) return require_resultSymbol.ErrorSymbol;
44
- awaitedAccumulator[entry.key] = decodedData;
45
+ if (decodedData !== void 0) awaitedAccumulator[entry.key] = decodedData;
45
46
  return awaitedAccumulator;
46
47
  })), {});
47
48
  return require_callThen.callThen(decodedData, (awaitedDecodedData) => pathStage?.close() ?? (awaitedDecodedData === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(self.executeConstraints(awaitedDecodedData, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : awaitedDecodedData)));
48
49
  },
49
- isAsynchronous: (self) => self.definition.shape.value.some((entry) => entry.value.isAsynchronous())
50
+ executeParse: (self, codecContext, data, errorHandler) => {
51
+ if (!require_isSimple.isSimple(data)) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
52
+ const pathStage = errorHandler?.().createPathStage();
53
+ const parsedData = self.definition.optimizedShape.value.reduce((accumulator, entry) => require_callThen.callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(entry.key) ?? require_callThen.callThen(entry.value.executeParse(codecContext, data[entry.key], errorHandler), (parsedData) => {
54
+ if (parsedData === require_resultSymbol.ErrorSymbol || awaitedAccumulator === require_resultSymbol.ErrorSymbol) return require_resultSymbol.ErrorSymbol;
55
+ if (parsedData !== void 0) awaitedAccumulator[entry.key] = parsedData;
56
+ return awaitedAccumulator;
57
+ })), {});
58
+ return require_callThen.callThen(parsedData, (awaitedParsedData) => pathStage?.close() ?? (awaitedParsedData === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(self.executeConstraints(awaitedParsedData, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : awaitedParsedData)));
59
+ },
60
+ isAsynchronous: (self) => self.definition.optimizedShape.value.some((entry) => entry.value.isAsynchronous())
50
61
  }));
51
62
  //#endregion
52
63
  exports.ObjectStructure = ObjectStructure;
@@ -22,9 +22,10 @@ export type ShapeObjectStructureValue<GenericShape extends ShapeObjectStructure>
22
22
  } extends infer InferredResult extends Record<string, unknown> ? DObject.PartialKeys<InferredResult, DObject.GetPropsWithValueExtends<InferredResult, undefined>> : never;
23
23
  export declare const objectStructureKind: DKind.Handler<DKind.Definition<"@DuplojsLangDataStructure/object-structure", unknown>>;
24
24
  export interface ObjectStructureDefinition<GenericConstraints extends readonly Constraint[] = readonly Constraint[]> extends StructureDefinition<GenericConstraints> {
25
- readonly shape: DCommon.Memoized<readonly EntryShapeObjectStructure[]>;
25
+ readonly optimizedShape: DCommon.Memoized<readonly EntryShapeObjectStructure[]>;
26
+ readonly shape: Readonly<Record<string, Structure>>;
26
27
  readonly keys: readonly string[];
27
28
  }
28
- export interface ObjectStructure<GenericValue extends Record<string, unknown> = Record<string, unknown>, GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.Forward<Structure<GenericValue, ObjectStructureDefinition<GenericConstraints>> & DKind.Kind<typeof objectStructureKind>> {
29
+ export interface ObjectStructure<out GenericValue extends Record<string, unknown> = Record<string, unknown>, out GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.Forward<Structure<GenericValue, ObjectStructureDefinition<GenericConstraints>> & DKind.Kind<typeof objectStructureKind>> {
29
30
  }
30
31
  export declare const ObjectStructure: <GenericShape extends ShapeObjectStructure, const GenericConstraints extends readonly Constraint<ShapeObjectStructureValue<GenericShape>>[]>(shape: GenericShape, constraints: GenericConstraints) => NoInfer<ObjectStructure<ShapeObjectStructureValue<GenericShape>, readonly [...GenericConstraints]>>;
@@ -7,10 +7,11 @@ import { createStructure } from "../base.mjs";
7
7
  //#region scripts/dataStructure/structure/defaults/object.ts
8
8
  const objectStructureKind = createKind("object-structure");
9
9
  const ObjectStructure = createStructure(objectStructureKind, ({ init }) => (shape, constraints) => init({
10
- shape: memo(() => Object.entries(shape).map(([key, value]) => ({
10
+ optimizedShape: memo(() => Object.entries(shape).map(([key, value]) => ({
11
11
  key,
12
12
  value
13
13
  }))),
14
+ shape,
14
15
  keys: Object.keys(shape),
15
16
  constraints
16
17
  }, {
@@ -18,7 +19,7 @@ const ObjectStructure = createStructure(objectStructureKind, ({ init }) => (shap
18
19
  if (!isSimple(data) || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
19
20
  if (Object.keys(data).some((value) => !self.definition.keys.includes(value))) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
20
21
  const pathStage = errorHandler?.().createPathStage();
21
- const result = self.definition.shape.value.reduce((accumulator, entry) => callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(entry.key) ?? callThen(entry.value.executeCheck(data[entry.key], errorHandler), (result) => result === ErrorSymbol || awaitedAccumulator === ErrorSymbol ? ErrorSymbol : SuccessSymbol)), SuccessSymbol);
22
+ const result = self.definition.optimizedShape.value.reduce((accumulator, entry) => callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(entry.key) ?? callThen(entry.value.executeCheck(data[entry.key], errorHandler), (result) => result === ErrorSymbol || awaitedAccumulator === ErrorSymbol ? ErrorSymbol : SuccessSymbol)), SuccessSymbol);
22
23
  return callThen(result, (awaitedResult) => {
23
24
  pathStage?.close();
24
25
  return awaitedResult;
@@ -28,9 +29,9 @@ const ObjectStructure = createStructure(objectStructureKind, ({ init }) => (shap
28
29
  if (!isSimple(data) || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
29
30
  if (Object.keys(data).some((value) => !self.definition.keys.includes(value))) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
30
31
  const pathStage = errorHandler?.().createPathStage();
31
- const encodedData = self.definition.shape.value.reduce((accumulator, entry) => callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(entry.key) ?? callThen(entry.value.executeEncode(codecContext, data[entry.key], errorHandler), (encodedData) => {
32
+ const encodedData = self.definition.optimizedShape.value.reduce((accumulator, entry) => callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(entry.key) ?? callThen(entry.value.executeEncode(codecContext, data[entry.key], errorHandler), (encodedData) => {
32
33
  if (encodedData === ErrorSymbol || awaitedAccumulator === ErrorSymbol) return ErrorSymbol;
33
- awaitedAccumulator[entry.key] = encodedData;
34
+ if (encodedData !== void 0) awaitedAccumulator[entry.key] = encodedData;
34
35
  return awaitedAccumulator;
35
36
  })), {});
36
37
  return callThen(encodedData, (awaitedEncodedData) => pathStage?.close() ?? (awaitedEncodedData === ErrorSymbol ? ErrorSymbol : callThen(self.executeConstraints(data, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : awaitedEncodedData)));
@@ -39,14 +40,24 @@ const ObjectStructure = createStructure(objectStructureKind, ({ init }) => (shap
39
40
  if (!isSimple(data) || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
40
41
  if (Object.keys(data).some((value) => !self.definition.keys.includes(value))) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
41
42
  const pathStage = errorHandler?.().createPathStage();
42
- const decodedData = self.definition.shape.value.reduce((accumulator, entry) => callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(entry.key) ?? callThen(entry.value.executeDecode(codecContext, data[entry.key], errorHandler), (decodedData) => {
43
+ const decodedData = self.definition.optimizedShape.value.reduce((accumulator, entry) => callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(entry.key) ?? callThen(entry.value.executeDecode(codecContext, data[entry.key], errorHandler), (decodedData) => {
43
44
  if (decodedData === ErrorSymbol || awaitedAccumulator === ErrorSymbol) return ErrorSymbol;
44
- awaitedAccumulator[entry.key] = decodedData;
45
+ if (decodedData !== void 0) awaitedAccumulator[entry.key] = decodedData;
45
46
  return awaitedAccumulator;
46
47
  })), {});
47
48
  return callThen(decodedData, (awaitedDecodedData) => pathStage?.close() ?? (awaitedDecodedData === ErrorSymbol ? ErrorSymbol : callThen(self.executeConstraints(awaitedDecodedData, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : awaitedDecodedData)));
48
49
  },
49
- isAsynchronous: (self) => self.definition.shape.value.some((entry) => entry.value.isAsynchronous())
50
+ executeParse: (self, codecContext, data, errorHandler) => {
51
+ if (!isSimple(data)) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
52
+ const pathStage = errorHandler?.().createPathStage();
53
+ const parsedData = self.definition.optimizedShape.value.reduce((accumulator, entry) => callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(entry.key) ?? callThen(entry.value.executeParse(codecContext, data[entry.key], errorHandler), (parsedData) => {
54
+ if (parsedData === ErrorSymbol || awaitedAccumulator === ErrorSymbol) return ErrorSymbol;
55
+ if (parsedData !== void 0) awaitedAccumulator[entry.key] = parsedData;
56
+ return awaitedAccumulator;
57
+ })), {});
58
+ return callThen(parsedData, (awaitedParsedData) => pathStage?.close() ?? (awaitedParsedData === ErrorSymbol ? ErrorSymbol : callThen(self.executeConstraints(awaitedParsedData, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : awaitedParsedData)));
59
+ },
60
+ isAsynchronous: (self) => self.definition.optimizedShape.value.some((entry) => entry.value.isAsynchronous())
50
61
  }));
51
62
  //#endregion
52
63
  export { ObjectStructure, objectStructureKind };
@@ -1,4 +1,5 @@
1
1
  const require_callThen = require("../../../common/callThen.cjs");
2
+ const require_isSimple = require("../../../object/isSimple.cjs");
2
3
  const require_isType = require("../../../common/isType.cjs");
3
4
  const require_memo = require("../../../common/memo.cjs");
4
5
  const require_kind = require("../../kind.cjs");
@@ -26,7 +27,7 @@ const RecordStructure = require_base.createStructure(recordStructureKind, ({ ini
26
27
  })
27
28
  }, {
28
29
  executeCheck: (self, data, errorHandler) => {
29
- if (typeof data !== "object" || data === null || data.constructor !== void 0 && data.constructor.name !== "Object" || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
30
+ if (!require_isSimple.isSimple(data) || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
30
31
  const keyData = Object.keys(data);
31
32
  const requiredKeys = self.definition.requiredKeys.value;
32
33
  if (requiredKeys && keyData.some((value) => !requiredKeys.includes(value))) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
@@ -38,31 +39,43 @@ const RecordStructure = require_base.createStructure(recordStructureKind, ({ ini
38
39
  });
39
40
  },
40
41
  executeEncode: (self, codecContext, data, errorHandler) => {
41
- if (typeof data !== "object" || data === null || data.constructor !== void 0 && data.constructor.name !== "Object" || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
42
+ if (!require_isSimple.isSimple(data) || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
42
43
  const keyData = Object.keys(data);
43
44
  const requiredKeys = self.definition.requiredKeys.value;
44
45
  if (requiredKeys && keyData.some((value) => !requiredKeys.includes(value))) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
45
46
  const pathStage = errorHandler?.().createPathStage();
46
- const encodedData = (requiredKeys ?? keyData).reduce((accumulator, key) => require_callThen.callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`{record key: ${key}}`) ?? require_callThen.callThen(self.definition.key.executeCheck(key, errorHandler), (keyResult) => pathStage?.setCurrentPath(`{record value: ${key}}`) ?? require_callThen.callThen(self.definition.value.executeEncode(codecContext, data[key], errorHandler), (encodedValue) => {
47
+ const encodedData = (requiredKeys ?? keyData).reduce((accumulator, key) => key === "__proto__" ? accumulator : require_callThen.callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`{record key: ${key}}`) ?? require_callThen.callThen(self.definition.key.executeCheck(key, errorHandler), (keyResult) => pathStage?.setCurrentPath(`{record value: ${key}}`) ?? require_callThen.callThen(self.definition.value.executeEncode(codecContext, data[key], errorHandler), (encodedValue) => {
47
48
  if (keyResult === require_resultSymbol.ErrorSymbol || encodedValue === require_resultSymbol.ErrorSymbol || awaitedAccumulator === require_resultSymbol.ErrorSymbol) return require_resultSymbol.ErrorSymbol;
48
- awaitedAccumulator[key] = encodedValue;
49
+ if (encodedValue !== void 0) awaitedAccumulator[key] = encodedValue;
49
50
  return awaitedAccumulator;
50
51
  }))), {});
51
52
  return require_callThen.callThen(encodedData, (awaitedEncodedData) => pathStage?.close() ?? (awaitedEncodedData === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(self.executeConstraints(data, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : awaitedEncodedData)));
52
53
  },
53
54
  executeDecode: (self, codecContext, data, errorHandler) => {
54
- if (typeof data !== "object" || data === null || data.constructor !== void 0 && data.constructor.name !== "Object" || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
55
+ if (!require_isSimple.isSimple(data) || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
55
56
  const keyData = Object.keys(data);
56
57
  const requiredKeys = self.definition.requiredKeys.value;
57
58
  if (requiredKeys && keyData.some((value) => !requiredKeys.includes(value))) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
58
59
  const pathStage = errorHandler?.().createPathStage();
59
- const decodedData = (requiredKeys ?? keyData).reduce((accumulator, key) => require_callThen.callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`{record key: ${key}}`) ?? require_callThen.callThen(self.definition.key.executeCheck(key, errorHandler), (keyResult) => pathStage?.setCurrentPath(`{record value: ${key}}`) ?? require_callThen.callThen(self.definition.value.executeDecode(codecContext, data[key], errorHandler), (decodedValue) => {
60
+ const decodedData = (requiredKeys ?? keyData).reduce((accumulator, key) => key === "__proto__" ? accumulator : require_callThen.callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`{record key: ${key}}`) ?? require_callThen.callThen(self.definition.key.executeCheck(key, errorHandler), (keyResult) => pathStage?.setCurrentPath(`{record value: ${key}}`) ?? require_callThen.callThen(self.definition.value.executeDecode(codecContext, data[key], errorHandler), (decodedValue) => {
60
61
  if (keyResult === require_resultSymbol.ErrorSymbol || decodedValue === require_resultSymbol.ErrorSymbol || awaitedAccumulator === require_resultSymbol.ErrorSymbol) return require_resultSymbol.ErrorSymbol;
61
- awaitedAccumulator[key] = decodedValue;
62
+ if (decodedValue !== void 0) awaitedAccumulator[key] = decodedValue;
62
63
  return awaitedAccumulator;
63
64
  }))), {});
64
65
  return require_callThen.callThen(decodedData, (awaitedDecodedData) => pathStage?.close() ?? (awaitedDecodedData === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(self.executeConstraints(awaitedDecodedData, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : awaitedDecodedData)));
65
66
  },
67
+ executeParse: (self, codecContext, data, errorHandler) => {
68
+ if (!require_isSimple.isSimple(data)) return errorHandler?.().addIssue(self, data) ?? require_resultSymbol.ErrorSymbol;
69
+ const keyData = Object.keys(data);
70
+ const requiredKeys = self.definition.requiredKeys.value;
71
+ const pathStage = errorHandler?.().createPathStage();
72
+ const parsedData = (requiredKeys ?? keyData).reduce((accumulator, key) => key === "__proto__" ? accumulator : require_callThen.callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`{record key: ${key}}`) ?? require_callThen.callThen(self.definition.key.executeCheck(key, errorHandler), (keyResult) => pathStage?.setCurrentPath(`{record value: ${key}}`) ?? require_callThen.callThen(self.definition.value.executeParse(codecContext, data[key], errorHandler), (parsedValue) => {
73
+ if (keyResult === require_resultSymbol.ErrorSymbol || parsedValue === require_resultSymbol.ErrorSymbol || awaitedAccumulator === require_resultSymbol.ErrorSymbol) return require_resultSymbol.ErrorSymbol;
74
+ if (parsedValue !== void 0) awaitedAccumulator[key] = parsedValue;
75
+ return awaitedAccumulator;
76
+ }))), {});
77
+ return require_callThen.callThen(parsedData, (awaitedParsedData) => pathStage?.close() ?? (awaitedParsedData === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(self.executeConstraints(awaitedParsedData, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : awaitedParsedData)));
78
+ },
66
79
  isAsynchronous: (self) => self.definition.key.isAsynchronous() || self.definition.value.isAsynchronous()
67
80
  }));
68
81
  //#endregion
@@ -14,6 +14,6 @@ export interface RecordStructureDefinition<GenericConstraints extends readonly C
14
14
  readonly value: Structure;
15
15
  readonly requiredKeys: DCommon.Memoized<string[] | null>;
16
16
  }
17
- export interface RecordStructure<GenericValue extends Record<string, unknown> = Record<string, unknown>, GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.Forward<Structure<GenericValue, RecordStructureDefinition<GenericConstraints>> & DKind.Kind<typeof recordStructureKind>> {
17
+ export interface RecordStructure<out GenericValue extends Record<string, unknown> = Record<string, unknown>, out GenericConstraints extends readonly Constraint<GenericValue>[] = readonly Constraint<GenericValue>[]> extends DCommon.Forward<Structure<GenericValue, RecordStructureDefinition<GenericConstraints>> & DKind.Kind<typeof recordStructureKind>> {
18
18
  }
19
19
  export declare const RecordStructure: <GenericKey extends (UnionStructure<string> | TypeStructure<string>), GenericValueStructure extends Structure, const GenericConstraints extends readonly Constraint<RecordStructureValue<GenericKey, GenericValueStructure>>[]>(key: GenericKey, value: GenericValueStructure, constraints: GenericConstraints) => NoInfer<RecordStructure<RecordStructureValue<GenericKey, GenericValueStructure>, readonly [...GenericConstraints]>>;
@@ -1,4 +1,5 @@
1
1
  import { callThen } from "../../../common/callThen.mjs";
2
+ import { isSimple } from "../../../object/isSimple.mjs";
2
3
  import { isType } from "../../../common/isType.mjs";
3
4
  import { memo } from "../../../common/memo.mjs";
4
5
  import { createKind } from "../../kind.mjs";
@@ -26,7 +27,7 @@ const RecordStructure = createStructure(recordStructureKind, ({ init }) => (key,
26
27
  })
27
28
  }, {
28
29
  executeCheck: (self, data, errorHandler) => {
29
- if (typeof data !== "object" || data === null || data.constructor !== void 0 && data.constructor.name !== "Object" || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
30
+ if (!isSimple(data) || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
30
31
  const keyData = Object.keys(data);
31
32
  const requiredKeys = self.definition.requiredKeys.value;
32
33
  if (requiredKeys && keyData.some((value) => !requiredKeys.includes(value))) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
@@ -38,31 +39,43 @@ const RecordStructure = createStructure(recordStructureKind, ({ init }) => (key,
38
39
  });
39
40
  },
40
41
  executeEncode: (self, codecContext, data, errorHandler) => {
41
- if (typeof data !== "object" || data === null || data.constructor !== void 0 && data.constructor.name !== "Object" || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
42
+ if (!isSimple(data) || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
42
43
  const keyData = Object.keys(data);
43
44
  const requiredKeys = self.definition.requiredKeys.value;
44
45
  if (requiredKeys && keyData.some((value) => !requiredKeys.includes(value))) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
45
46
  const pathStage = errorHandler?.().createPathStage();
46
- const encodedData = (requiredKeys ?? keyData).reduce((accumulator, key) => callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`{record key: ${key}}`) ?? callThen(self.definition.key.executeCheck(key, errorHandler), (keyResult) => pathStage?.setCurrentPath(`{record value: ${key}}`) ?? callThen(self.definition.value.executeEncode(codecContext, data[key], errorHandler), (encodedValue) => {
47
+ const encodedData = (requiredKeys ?? keyData).reduce((accumulator, key) => key === "__proto__" ? accumulator : callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`{record key: ${key}}`) ?? callThen(self.definition.key.executeCheck(key, errorHandler), (keyResult) => pathStage?.setCurrentPath(`{record value: ${key}}`) ?? callThen(self.definition.value.executeEncode(codecContext, data[key], errorHandler), (encodedValue) => {
47
48
  if (keyResult === ErrorSymbol || encodedValue === ErrorSymbol || awaitedAccumulator === ErrorSymbol) return ErrorSymbol;
48
- awaitedAccumulator[key] = encodedValue;
49
+ if (encodedValue !== void 0) awaitedAccumulator[key] = encodedValue;
49
50
  return awaitedAccumulator;
50
51
  }))), {});
51
52
  return callThen(encodedData, (awaitedEncodedData) => pathStage?.close() ?? (awaitedEncodedData === ErrorSymbol ? ErrorSymbol : callThen(self.executeConstraints(data, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : awaitedEncodedData)));
52
53
  },
53
54
  executeDecode: (self, codecContext, data, errorHandler) => {
54
- if (typeof data !== "object" || data === null || data.constructor !== void 0 && data.constructor.name !== "Object" || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
55
+ if (!isSimple(data) || Object.getOwnPropertySymbols(data).length !== 0) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
55
56
  const keyData = Object.keys(data);
56
57
  const requiredKeys = self.definition.requiredKeys.value;
57
58
  if (requiredKeys && keyData.some((value) => !requiredKeys.includes(value))) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
58
59
  const pathStage = errorHandler?.().createPathStage();
59
- const decodedData = (requiredKeys ?? keyData).reduce((accumulator, key) => callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`{record key: ${key}}`) ?? callThen(self.definition.key.executeCheck(key, errorHandler), (keyResult) => pathStage?.setCurrentPath(`{record value: ${key}}`) ?? callThen(self.definition.value.executeDecode(codecContext, data[key], errorHandler), (decodedValue) => {
60
+ const decodedData = (requiredKeys ?? keyData).reduce((accumulator, key) => key === "__proto__" ? accumulator : callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`{record key: ${key}}`) ?? callThen(self.definition.key.executeCheck(key, errorHandler), (keyResult) => pathStage?.setCurrentPath(`{record value: ${key}}`) ?? callThen(self.definition.value.executeDecode(codecContext, data[key], errorHandler), (decodedValue) => {
60
61
  if (keyResult === ErrorSymbol || decodedValue === ErrorSymbol || awaitedAccumulator === ErrorSymbol) return ErrorSymbol;
61
- awaitedAccumulator[key] = decodedValue;
62
+ if (decodedValue !== void 0) awaitedAccumulator[key] = decodedValue;
62
63
  return awaitedAccumulator;
63
64
  }))), {});
64
65
  return callThen(decodedData, (awaitedDecodedData) => pathStage?.close() ?? (awaitedDecodedData === ErrorSymbol ? ErrorSymbol : callThen(self.executeConstraints(awaitedDecodedData, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : awaitedDecodedData)));
65
66
  },
67
+ executeParse: (self, codecContext, data, errorHandler) => {
68
+ if (!isSimple(data)) return errorHandler?.().addIssue(self, data) ?? ErrorSymbol;
69
+ const keyData = Object.keys(data);
70
+ const requiredKeys = self.definition.requiredKeys.value;
71
+ const pathStage = errorHandler?.().createPathStage();
72
+ const parsedData = (requiredKeys ?? keyData).reduce((accumulator, key) => key === "__proto__" ? accumulator : callThen(accumulator, (awaitedAccumulator) => pathStage?.setCurrentPath(`{record key: ${key}}`) ?? callThen(self.definition.key.executeCheck(key, errorHandler), (keyResult) => pathStage?.setCurrentPath(`{record value: ${key}}`) ?? callThen(self.definition.value.executeParse(codecContext, data[key], errorHandler), (parsedValue) => {
73
+ if (keyResult === ErrorSymbol || parsedValue === ErrorSymbol || awaitedAccumulator === ErrorSymbol) return ErrorSymbol;
74
+ if (parsedValue !== void 0) awaitedAccumulator[key] = parsedValue;
75
+ return awaitedAccumulator;
76
+ }))), {});
77
+ return callThen(parsedData, (awaitedParsedData) => pathStage?.close() ?? (awaitedParsedData === ErrorSymbol ? ErrorSymbol : callThen(self.executeConstraints(awaitedParsedData, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : awaitedParsedData)));
78
+ },
66
79
  isAsynchronous: (self) => self.definition.key.isAsynchronous() || self.definition.value.isAsynchronous()
67
80
  }));
68
81
  //#endregion
@@ -18,6 +18,7 @@ const TypeStructure = require_base.createStructure(typeStructureKind, ({ init })
18
18
  const codec = codecContext.get(self.definition.type.fundamentalType);
19
19
  return require_callThen.callThen(codec ? codec.decode(data, errorHandler) : data, (decodedData) => decodedData === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(self.executeCheck(decodedData, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : decodedData));
20
20
  },
21
+ executeParse: (self, codecContext, data, errorHandler) => self.executeDecode(codecContext, data, errorHandler),
21
22
  isAsynchronous: (self) => self.definition.type.isAsynchronous()
22
23
  }));
23
24
  //#endregion
@@ -7,6 +7,6 @@ export declare const typeStructureKind: DKind.Handler<DKind.Definition<"@Duplojs
7
7
  export interface TypeStructureDefinition<GenericConstraints extends readonly Constraint[] = readonly Constraint[]> extends StructureDefinition<GenericConstraints> {
8
8
  readonly type: Type;
9
9
  }
10
- export interface TypeStructure<GenericType extends unknown = unknown, GenericConstraints extends readonly Constraint<GenericType>[] = readonly Constraint<GenericType>[]> extends DCommon.Forward<Structure<GenericType, TypeStructureDefinition<GenericConstraints>> & DKind.Kind<typeof typeStructureKind>> {
10
+ export interface TypeStructure<out GenericType extends unknown = unknown, out GenericConstraints extends readonly Constraint<GenericType>[] = readonly Constraint<GenericType>[]> extends DCommon.Forward<Structure<GenericType, TypeStructureDefinition<GenericConstraints>> & DKind.Kind<typeof typeStructureKind>> {
11
11
  }
12
12
  export declare const TypeStructure: <GenericType extends Type, const GenericConstraints extends readonly Constraint<TypeValue<GenericType>>[]>(type: GenericType, constraints: GenericConstraints) => NoInfer<TypeStructure<TypeValue<GenericType>, readonly [...GenericConstraints]>>;
@@ -18,6 +18,7 @@ const TypeStructure = createStructure(typeStructureKind, ({ init }) => (type, co
18
18
  const codec = codecContext.get(self.definition.type.fundamentalType);
19
19
  return callThen(codec ? codec.decode(data, errorHandler) : data, (decodedData) => decodedData === ErrorSymbol ? ErrorSymbol : callThen(self.executeCheck(decodedData, errorHandler), (result) => result === ErrorSymbol ? ErrorSymbol : decodedData));
20
20
  },
21
+ executeParse: (self, codecContext, data, errorHandler) => self.executeDecode(codecContext, data, errorHandler),
21
22
  isAsynchronous: (self) => self.definition.type.isAsynchronous()
22
23
  }));
23
24
  //#endregion
@@ -2,13 +2,13 @@ const require_callThen = require("../../../common/callThen.cjs");
2
2
  const require_memo = require("../../../common/memo.cjs");
3
3
  const require_kind = require("../../kind.cjs");
4
4
  const require_resultSymbol = require("../../common/resultSymbol.cjs");
5
- const require_error = require("../../common/error.cjs");
6
- const require_base = require("../base.cjs");
5
+ const require_base = require("../../common/error/base.cjs");
6
+ const require_base$1 = require("../base.cjs");
7
7
  const require_identifier = require("../identifier.cjs");
8
8
  const require_lazy = require("./lazy.cjs");
9
9
  //#region scripts/dataStructure/structure/defaults/union.ts
10
10
  const unionStructureKind = require_kind.createKind("union-structure");
11
- const UnionStructure = require_base.createStructure(unionStructureKind, ({ init }) => (values, constraints) => init({
11
+ const UnionStructure = require_base$1.createStructure(unionStructureKind, ({ init }) => (values, constraints) => init({
12
12
  values: require_memo.memo(() => values.flatMap((value) => (function flatUnion(structure) {
13
13
  if (require_identifier.structureIdentifier(structure, unionStructureKind)) return structure.definition.values.value.flatMap(flatUnion);
14
14
  if (require_identifier.structureIdentifier(structure, require_lazy.lazyStructureKind)) return flatUnion(structure.definition.getter.value);
@@ -20,7 +20,7 @@ const UnionStructure = require_base.createStructure(unionStructureKind, ({ init
20
20
  const errorHandlers = errorHandler ? [] : void 0;
21
21
  const result = self.definition.values.value.reduce((accumulator, value, index) => require_callThen.callThen(accumulator, (awaitedAccumulator) => {
22
22
  if (awaitedAccumulator === require_resultSymbol.SuccessSymbol) return awaitedAccumulator;
23
- const subErrorHandler = errorHandler === void 0 ? void 0 : require_error.createGetErrorHandler(errorHandler().currentPath);
23
+ const subErrorHandler = errorHandler === void 0 ? void 0 : require_base.createGetErrorHandler(errorHandler().currentPath);
24
24
  if (errorHandlers && subErrorHandler) {
25
25
  subErrorHandler().createPathStage().setCurrentPath(`(union: ${index})`);
26
26
  errorHandlers.push(subErrorHandler);
@@ -40,7 +40,7 @@ const UnionStructure = require_base.createStructure(unionStructureKind, ({ init
40
40
  const errorHandlers = errorHandler ? [] : void 0;
41
41
  const encodedData = self.definition.values.value.reduce((accumulator, value, index) => require_callThen.callThen(accumulator, (awaitedAccumulator) => {
42
42
  if (awaitedAccumulator !== require_resultSymbol.ErrorSymbol) return awaitedAccumulator;
43
- const subErrorHandler = errorHandler === void 0 ? void 0 : require_error.createGetErrorHandler(errorHandler().currentPath);
43
+ const subErrorHandler = errorHandler === void 0 ? void 0 : require_base.createGetErrorHandler(errorHandler().currentPath);
44
44
  if (errorHandlers && subErrorHandler) {
45
45
  subErrorHandler().createPathStage().setCurrentPath(`(union: ${index})`);
46
46
  errorHandlers.push(subErrorHandler);
@@ -60,7 +60,7 @@ const UnionStructure = require_base.createStructure(unionStructureKind, ({ init
60
60
  const errorHandlers = errorHandler ? [] : void 0;
61
61
  const decodedData = self.definition.values.value.reduce((accumulator, value, index) => require_callThen.callThen(accumulator, (awaitedAccumulator) => {
62
62
  if (awaitedAccumulator !== require_resultSymbol.ErrorSymbol) return awaitedAccumulator;
63
- const subErrorHandler = errorHandler === void 0 ? void 0 : require_error.createGetErrorHandler(errorHandler().currentPath);
63
+ const subErrorHandler = errorHandler === void 0 ? void 0 : require_base.createGetErrorHandler(errorHandler().currentPath);
64
64
  if (errorHandlers && subErrorHandler) {
65
65
  subErrorHandler().createPathStage().setCurrentPath(`(union: ${index})`);
66
66
  errorHandlers.push(subErrorHandler);
@@ -76,6 +76,26 @@ const UnionStructure = require_base.createStructure(unionStructureKind, ({ init
76
76
  return require_callThen.callThen(self.executeConstraints(awaitedDecodedData, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : awaitedDecodedData);
77
77
  });
78
78
  },
79
+ executeParse: (self, codecContext, data, errorHandler) => {
80
+ const errorHandlers = errorHandler ? [] : void 0;
81
+ const parsedData = self.definition.values.value.reduce((accumulator, value, index) => require_callThen.callThen(accumulator, (awaitedAccumulator) => {
82
+ if (awaitedAccumulator !== require_resultSymbol.ErrorSymbol) return awaitedAccumulator;
83
+ const subErrorHandler = errorHandler === void 0 ? void 0 : require_base.createGetErrorHandler(errorHandler().currentPath);
84
+ if (errorHandlers && subErrorHandler) {
85
+ subErrorHandler().createPathStage().setCurrentPath(`(union: ${index})`);
86
+ errorHandlers.push(subErrorHandler);
87
+ }
88
+ return value.executeParse(codecContext, data, subErrorHandler);
89
+ }), require_resultSymbol.ErrorSymbol);
90
+ return require_callThen.callThen(parsedData, (awaitedParsedData) => {
91
+ if (awaitedParsedData === require_resultSymbol.ErrorSymbol) {
92
+ if (errorHandlers) errorHandler?.().importIssues(errorHandlers);
93
+ errorHandler?.().addIssue(self, data);
94
+ return require_resultSymbol.ErrorSymbol;
95
+ }
96
+ return require_callThen.callThen(self.executeConstraints(awaitedParsedData, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : awaitedParsedData);
97
+ });
98
+ },
79
99
  isAsynchronous: (self) => self.definition.values.value.some((value) => value.isAsynchronous())
80
100
  }));
81
101
  //#endregion