@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
@@ -3,6 +3,7 @@ import type * as DKind from '../../kind';
3
3
  import * as DCommon from '../../common';
4
4
  import * as DDataStructure from '../../dataStructure';
5
5
  import * as DEither from '../../either';
6
+ import * as DObject from '../../object';
6
7
  declare module '../../dataStructure' {
7
8
  interface StructuresStore {
8
9
  entity: EntityStructure;
@@ -33,14 +34,21 @@ export type EntityMap<GenericValue extends unknown, GenericRawValue = DCommon.Re
33
34
  ]> extends true ? {
34
35
  [Prop in keyof GenericRawValue]: EntityMap<GenericRawValue[Prop]>;
35
36
  } : GenericRawValue : GenericRawValue;
36
- export interface EntityStructure<GenericName extends string = string, GenericProperties extends Record<string, unknown> = Record<string, unknown>> extends DCommon.Forward<DDataStructure.Structure<Entity<GenericName> & GenericProperties, EntityStructureDefinition> & DKind.Kind<typeof entityStructureKind>> {
37
+ export type EntityUpdate<GenericEntity extends Entity, GenericNewProperties extends object> = Extract<(Entity<GetEntityName<GenericEntity>> & DCommon.SimplifyTopLevel<DKind.Remove<GenericEntity> extends infer InferredProperties ? {
38
+ [Prop in keyof InferredProperties]: Prop extends keyof GenericNewProperties ? GenericNewProperties[Prop] extends infer InferredNewValue ? InferredNewValue extends undefined ? InferredProperties[Prop] : InferredNewValue : never : InferredProperties[Prop];
39
+ } : never>), any>;
40
+ type ForbiddenMoreKey<GenericProperties extends Record<string, unknown>, GenericNewProperties extends Record<string, unknown>> = DObject.ForbiddenKey<GenericNewProperties, Extract<Exclude<keyof GenericNewProperties, keyof GenericProperties>, string>>;
41
+ export interface EntityStructure<out GenericName extends string = string, out GenericProperties extends Record<string, unknown> = Record<string, unknown>> extends DCommon.Forward<DDataStructure.Structure<Entity<GenericName> & GenericProperties, EntityStructureDefinition> & DKind.Kind<typeof entityStructureKind>> {
37
42
  readonly name: GenericName;
38
- "new"<GenericNewProperties extends GenericProperties>(properties: GenericNewProperties): (Entity<GenericName> & GenericNewProperties);
39
- decodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs): (data: DDataStructure.EncodedValue<EntityMap<DKind.Remove<DDataStructure.StructureValue<this>>>, GenericCodecs>) => (DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"async-error", undefined> | DEither.Left<"map-error", DDataStructure.Error>);
40
- decodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs, data: DDataStructure.EncodedValue<EntityMap<DKind.Remove<DDataStructure.StructureValue<this>>>, GenericCodecs>): (DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"async-error", undefined> | DEither.Left<"map-error", DDataStructure.Error>);
41
- map(data: EntityMap<DKind.Remove<DDataStructure.StructureValue<this>>>): (DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"async-error", undefined> | DEither.Left<"map-error", DDataStructure.Error>);
42
- asyncDecodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs): (data: DDataStructure.EncodedValue<EntityMap<DKind.Remove<DDataStructure.StructureValue<this>>>, GenericCodecs>) => Promise<DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"map-error", DDataStructure.Error>>;
43
- asyncDecodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs, data: DDataStructure.EncodedValue<EntityMap<DKind.Remove<DDataStructure.StructureValue<this>>>, GenericCodecs>): Promise<DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"map-error", DDataStructure.Error>>;
44
- asyncMap(data: EntityMap<DKind.Remove<DDataStructure.StructureValue<this>>>): Promise<DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"map-error", DDataStructure.Error>>;
43
+ "new"<GenericNewProperties extends GenericProperties>(properties: (GenericNewProperties & ForbiddenMoreKey<GenericProperties, GenericNewProperties>)): (Entity<GenericName> & DCommon.SimplifyTopLevel<Readonly<GenericNewProperties>>);
44
+ decodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs): (data: DDataStructure.EncodedValue<EntityMap<GenericProperties>, GenericCodecs>) => (DEither.Right<"map-success", Entity<GenericName> & GenericProperties> | DEither.Left<"async-error", DDataStructure.ErrorPromise> | DEither.Left<"map-error", DDataStructure.Error>);
45
+ decodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs, data: DDataStructure.EncodedValue<EntityMap<GenericProperties>, GenericCodecs>): (DEither.Right<"map-success", Entity<GenericName> & GenericProperties> | DEither.Left<"async-error", DDataStructure.ErrorPromise> | DEither.Left<"map-error", DDataStructure.Error>);
46
+ map(data: EntityMap<GenericProperties>): (DEither.Right<"map-success", Entity<GenericName> & GenericProperties> | DEither.Left<"async-error", DDataStructure.ErrorPromise> | DEither.Left<"map-error", DDataStructure.Error>);
47
+ asyncDecodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs): (data: DDataStructure.EncodedValue<EntityMap<GenericProperties>, GenericCodecs>) => Promise<DEither.Right<"map-success", Entity<GenericName> & GenericProperties> | DEither.Left<"map-error", DDataStructure.Error>>;
48
+ asyncDecodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs, data: DDataStructure.EncodedValue<EntityMap<GenericProperties>, GenericCodecs>): Promise<DEither.Right<"map-success", Entity<GenericName> & GenericProperties> | DEither.Left<"map-error", DDataStructure.Error>>;
49
+ asyncMap(data: EntityMap<GenericProperties>): Promise<DEither.Right<"map-success", Entity<GenericName> & GenericProperties> | DEither.Left<"map-error", DDataStructure.Error>>;
50
+ update<GenericInputEntity extends (Entity<GenericName> & GenericProperties), const GenericPayload extends Partial<GenericProperties>>(update: GenericPayload): (input: GenericInputEntity) => EntityUpdate<GenericInputEntity, GenericPayload>;
51
+ update<GenericInputEntity extends (Entity<GenericName> & GenericProperties), const GenericPayload extends Partial<GenericProperties>>(input: GenericInputEntity, update: GenericPayload): EntityUpdate<GenericInputEntity, GenericPayload>;
45
52
  }
46
53
  export declare const EntityStructure: <GenericName extends string, GenericShape extends DDataStructure.ShapeObjectStructure, const GenericProperties extends DDataStructure.ShapeObjectStructureValue<GenericShape>>(name: GenericName, shape: () => GenericShape) => EntityStructure<GenericName, GenericProperties>;
54
+ export {};
@@ -4,7 +4,7 @@ import { right } from "../../either/right/create.mjs";
4
4
  import { justExec } from "../../common/justExec.mjs";
5
5
  import { memo } from "../../common/memo.mjs";
6
6
  import { ErrorSymbol } from "../../dataStructure/common/resultSymbol.mjs";
7
- import { createGetErrorHandler } from "../../dataStructure/common/error.mjs";
7
+ import { ErrorPromise, createGetErrorHandler } from "../../dataStructure/common/error/base.mjs";
8
8
  import { createStructure } from "../../dataStructure/structure/base.mjs";
9
9
  import { NonEncodableStringStructure } from "../../dataStructure/structure/defaults/nonEncodableString.mjs";
10
10
  import { ObjectStructure } from "../../dataStructure/structure/defaults/object.mjs";
@@ -22,6 +22,7 @@ const EntityStructure = createStructure(entityStructureKind, ({ init }) => (name
22
22
  executeCheck: (self, data, errorHandler) => self.definition.inner.value.executeCheck(data, errorHandler),
23
23
  executeEncode: (self, codecContext, data, errorHandler) => self.definition.inner.value.executeEncode(codecContext, data, errorHandler),
24
24
  executeDecode: (self, codecContext, data, errorHandler) => self.definition.inner.value.executeDecode(codecContext, data, errorHandler),
25
+ executeParse: (self, codecContext, data, errorHandler) => self.definition.inner.value.executeParse(codecContext, data, errorHandler),
25
26
  isAsynchronous: (self) => self.definition.inner.value.isAsynchronous()
26
27
  }, {
27
28
  name,
@@ -40,7 +41,7 @@ const EntityStructure = createStructure(entityStructureKind, ({ init }) => (name
40
41
  ...data,
41
42
  [entityKind.runTimeKey]: name
42
43
  } : data, errorHandler);
43
- if (result instanceof Promise) return left("async-error", void 0);
44
+ if (result instanceof Promise) return left("async-error", new ErrorPromise());
44
45
  if (result === ErrorSymbol) return left("map-error", errorHandler().createError());
45
46
  return right("map-success", result);
46
47
  },
@@ -51,7 +52,7 @@ const EntityStructure = createStructure(entityStructureKind, ({ init }) => (name
51
52
  [entityKind.runTimeKey]: name
52
53
  } : data;
53
54
  const result = self.executeCheck(formattedData, errorHandler);
54
- if (result instanceof Promise) return left("async-error", void 0);
55
+ if (result instanceof Promise) return left("async-error", new ErrorPromise());
55
56
  if (result === ErrorSymbol) return left("map-error", errorHandler().createError());
56
57
  return right("map-success", formattedData);
57
58
  },
@@ -71,7 +72,7 @@ const EntityStructure = createStructure(entityStructureKind, ({ init }) => (name
71
72
  return right("map-success", result);
72
73
  });
73
74
  },
74
- asyncMap: (self, data) => justExec(async () => {
75
+ asyncMap: async (self, data) => {
75
76
  const errorHandler = createGetErrorHandler();
76
77
  const formattedData = isSimple(data) ? {
77
78
  ...data,
@@ -79,7 +80,17 @@ const EntityStructure = createStructure(entityStructureKind, ({ init }) => (name
79
80
  } : data;
80
81
  if (await self.executeCheck(formattedData, errorHandler) === ErrorSymbol) return left("map-error", errorHandler().createError());
81
82
  return right("map-success", formattedData);
82
- })
83
+ },
84
+ update: (self, ...args) => {
85
+ if (args.length === 1) {
86
+ const [update] = args;
87
+ return (input) => self.update(input, update);
88
+ }
89
+ const [input, update] = args;
90
+ const updatedEntity = { [entityKind.runTimeKey]: name };
91
+ for (const key of self.definition.inner.value.definition.keys) updatedEntity[key] = update[key] === void 0 ? input[key] : update[key];
92
+ return updatedEntity;
93
+ }
83
94
  }));
84
95
  //#endregion
85
96
  export { EntityStructure, entityKind, entityStructureKind };
@@ -1,15 +1,13 @@
1
1
  import { Entity, EntityStructure } from './base';
2
2
  import { NewType } from '../newType';
3
+ import { ObjectTag } from '../taggedObject';
3
4
  import type * as DCommon from '../../common';
4
5
  import type * as DDataStructure from '../../dataStructure';
5
6
  import type * as DString from '../../string';
6
- export type ForbiddenMissingNewTypeInEntityShape<GenericValue extends unknown, GenericPath extends readonly string[] = readonly []> = GenericValue extends NewType ? never : GenericValue extends object ? DCommon.Or<[
7
- DCommon.IsExtends<GenericValue, readonly any[]>,
8
- DCommon.And<[
9
- DCommon.IsExtends<keyof GenericValue, string>,
10
- DCommon.Not<DCommon.IsExtends<DCommon.AnyFunction, GenericValue[keyof GenericValue]>>
11
- ]>
7
+ export type ForbiddenMissingNewTypeInEntityShape<GenericValue extends unknown, GenericPath extends readonly string[] = readonly []> = GenericValue extends (ObjectTag | NewType | null | undefined | Entity) ? never : GenericValue extends readonly (infer InferredElement)[] ? ForbiddenMissingNewTypeInEntityShape<InferredElement, readonly [...GenericPath, "[number]"]> : GenericValue extends object ? DCommon.And<[
8
+ DCommon.IsExtends<keyof GenericValue, string>,
9
+ DCommon.Not<DCommon.IsExtends<DCommon.AnyFunction, GenericValue[keyof GenericValue]>>
12
10
  ]> extends true ? {
13
- [Prop in keyof GenericValue]: ForbiddenMissingNewTypeInEntityShape<GenericValue[Prop], readonly [...GenericPath, `${Extract<Prop, string | number>}`]>;
14
- }[keyof GenericValue] : GenericValue extends Entity ? never : DCommon.ComputedTypeError<`Value at '${DString.Join<GenericPath>}' is not a NewType.`> : DCommon.ComputedTypeError<`Value at '${DString.Join<GenericPath>}' is not a NewType.`>;
11
+ [Prop in keyof GenericValue]-?: ForbiddenMissingNewTypeInEntityShape<GenericValue[Prop], readonly [...GenericPath, `${Extract<Prop, string | number>}`]>;
12
+ }[keyof GenericValue] : DCommon.ComputedTypeError<`Value at '${DString.Join<GenericPath, ".">}' is not a NewType.`> : DCommon.ComputedTypeError<`Value at '${DString.Join<GenericPath, ".">}' is not a NewType.`>;
15
13
  export declare function createEntity<GenericName extends Capitalize<string>, GenericShape extends DDataStructure.ShapeObjectStructure>(name: GenericName, shape: () => (GenericShape & DCommon.NeverCoalescing<ForbiddenMissingNewTypeInEntityShape<DDataStructure.ShapeObjectStructureValue<GenericShape>>, unknown>)): EntityStructure<GenericName, DDataStructure.ShapeObjectStructureValue<GenericShape & DCommon.NeverCoalescing<ForbiddenMissingNewTypeInEntityShape<DDataStructure.ShapeObjectStructureValue<GenericShape>, readonly []>, unknown>>>;
@@ -1,7 +1,6 @@
1
1
  const require_kind = require("../kind.cjs");
2
2
  const require_helper = require("./helper.cjs");
3
3
  const require_helper$1 = require("../newType/helper.cjs");
4
- const require_base = require("../flag/base.cjs");
5
4
  //#region scripts/modeling/entity/namespace.ts
6
5
  const namespaceKind = require_kind.createKind("namespace");
7
6
  function createEntityNamespace(entityName) {
@@ -9,7 +8,6 @@ function createEntityNamespace(entityName) {
9
8
  name: entityName,
10
9
  createNewType: (name, structure, newTypeConstraints = []) => require_helper$1.createNewType(`${entityName}${name}`, structure, newTypeConstraints),
11
10
  createEntity: (shape) => require_helper.createEntity(entityName, shape),
12
- createFlag: (entityStructure, name, valueStructure) => require_base.createFlag(entityStructure, `${entityName}${name}`, valueStructure),
13
11
  [namespaceKind.runTimeKey]: null
14
12
  };
15
13
  }
@@ -1,7 +1,6 @@
1
1
  import { ForbiddenTopLevelNewType, NewTypeStructure } from '../newType';
2
2
  import { ForbiddenMissingNewTypeInEntityShape } from './helper';
3
3
  import { EntityStructure } from './base';
4
- import { FlagHandler } from '../flag';
5
4
  import type * as DCommon from '../../common';
6
5
  import type * as DDataStructure from '../../dataStructure';
7
6
  import type * as DKind from '../../kind';
@@ -10,6 +9,5 @@ export interface EntityNamespace<GenericEntityName extends Capitalize<string> =
10
9
  readonly name: GenericEntityName;
11
10
  createNewType<GenericName extends Capitalize<string>, GenericStructure extends DDataStructure.Structure, const GenericNewTypeConstraint extends readonly DDataStructure.Constraint<DDataStructure.StructureValue<GenericStructure>>[] = readonly []>(name: (GenericName & DCommon.NeverCoalescing<ForbiddenTopLevelNewType<DDataStructure.StructureValue<GenericStructure>>, unknown>), structure: GenericStructure, newTypeConstraints?: GenericNewTypeConstraint): NewTypeStructure<`${GenericEntityName}${GenericName}`, DDataStructure.StructureValue<GenericStructure>, GenericNewTypeConstraint>;
12
11
  createEntity<GenericShape extends DDataStructure.ShapeObjectStructure>(shape: () => (GenericShape & DCommon.NeverCoalescing<ForbiddenMissingNewTypeInEntityShape<DDataStructure.ShapeObjectStructureValue<GenericShape>>, unknown>)): EntityStructure<GenericEntityName, DDataStructure.ShapeObjectStructureValue<GenericShape>>;
13
- createFlag<GenericEntityStructure extends EntityStructure<GenericEntityName>, GenericName extends Capitalize<string>, GenericValueStructure extends DDataStructure.Structure>(entityStructure: GenericEntityStructure, name: GenericName, valueStructure: GenericValueStructure): FlagHandler<DDataStructure.StructureValue<GenericEntityStructure>, `${GenericEntityName}${GenericName}`, DDataStructure.StructureValue<GenericValueStructure>>;
14
12
  }
15
13
  export declare function createEntityNamespace<GenericName extends Capitalize<string>>(entityName: GenericName): EntityNamespace<GenericName>;
@@ -1,7 +1,6 @@
1
1
  import { createKind } from "../kind.mjs";
2
2
  import { createEntity } from "./helper.mjs";
3
3
  import { createNewType } from "../newType/helper.mjs";
4
- import { createFlag } from "../flag/base.mjs";
5
4
  //#region scripts/modeling/entity/namespace.ts
6
5
  const namespaceKind = createKind("namespace");
7
6
  function createEntityNamespace(entityName) {
@@ -9,7 +8,6 @@ function createEntityNamespace(entityName) {
9
8
  name: entityName,
10
9
  createNewType: (name, structure, newTypeConstraints = []) => createNewType(`${entityName}${name}`, structure, newTypeConstraints),
11
10
  createEntity: (shape) => createEntity(entityName, shape),
12
- createFlag: (entityStructure, name, valueStructure) => createFlag(entityStructure, `${entityName}${name}`, valueStructure),
13
11
  [namespaceKind.runTimeKey]: null
14
12
  };
15
13
  }
@@ -0,0 +1,36 @@
1
+ const require_create = require("../../either/right/create.cjs");
2
+ const require_kind = require("../kind.cjs");
3
+ //#region scripts/modeling/fact/base.ts
4
+ const factKind = require_kind.createKind("fact");
5
+ const factHandlerKind = require_kind.createKind("fact-handler");
6
+ function createFact(name) {
7
+ function applyFact(...args) {
8
+ if (args.length === 1) {
9
+ const [payload] = args;
10
+ return (entity) => applyFact(entity, payload);
11
+ }
12
+ const [entity, payload] = args;
13
+ const entityWithFact = {
14
+ ...entity,
15
+ [factKind.runTimeKey]: {
16
+ name,
17
+ payload
18
+ }
19
+ };
20
+ return require_create.right(`fact-result-${name}`, entityWithFact);
21
+ }
22
+ return (createRun) => ({
23
+ name,
24
+ run: createRun({ applyFact }),
25
+ getPayload(entity) {
26
+ return factKind.getValue(entity).payload;
27
+ },
28
+ has(entity) {
29
+ return factKind.has(entity) && factKind.getValue(entity).name === name;
30
+ },
31
+ [factHandlerKind.runTimeKey]: null
32
+ });
33
+ }
34
+ //#endregion
35
+ exports.createFact = createFact;
36
+ exports.factKind = factKind;
@@ -0,0 +1,29 @@
1
+ import { EntityStructure, Entity } from '../entity';
2
+ import type * as DCommon from '../../common';
3
+ import type * as DKind from '../../kind';
4
+ import type * as DDataStructure from '../../dataStructure';
5
+ import * as DEither from '../../either';
6
+ export interface FactValue<GenericName extends string = string, GenericPayload extends unknown = unknown> {
7
+ name: GenericName;
8
+ payload: GenericPayload;
9
+ }
10
+ export declare const factKind: DKind.Handler<DKind.Definition<"@DuplojsLangModeling/fact", FactValue<string, unknown>>>;
11
+ export interface Fact<GenericName extends Capitalize<string> = Capitalize<string>, GenericValue extends unknown = unknown> extends DKind.Kind<typeof factKind, FactValue<GenericName, GenericValue>> {
12
+ }
13
+ export type GetFactName<GenericHandler extends Fact> = GenericHandler extends Fact<infer InferredName extends Capitalize<string>> ? InferredName : never;
14
+ export type GetFactPayload<GenericHandler extends Fact> = GenericHandler extends Fact<any, infer InferredPayload extends object> ? InferredPayload : never;
15
+ export type FactRun<GenericName extends string = string> = DCommon.AnyFunction<any[], DEither.Left | DEither.Right<`fact-result-${GenericName}`, unknown>>;
16
+ declare const factHandlerKind: DKind.Handler<DKind.Definition<"@DuplojsLangModeling/fact-handler", unknown>>;
17
+ export interface FactHandler<GenericName extends Capitalize<string> = Capitalize<string>, GenericEntity extends Entity = Entity, GenericPayload extends object = object, GenericRun extends FactRun<GenericName> = FactRun<GenericName>> extends DKind.Kind<typeof factHandlerKind> {
18
+ readonly name: GenericName;
19
+ run: GenericRun;
20
+ getPayload<GenericInputEntity extends Fact<GenericName, GenericPayload>>(entity: GenericInputEntity): DKind.GetValue<typeof factKind, GenericInputEntity>["payload"];
21
+ has<GenericInputEntity extends GenericEntity>(entity: GenericInputEntity): entity is Extract<GenericInputEntity, Fact<GenericName>>;
22
+ }
23
+ type RemoveFact<GenericEntity extends Entity> = GenericEntity extends Fact<infer InferredName, infer InferredValue> ? GenericEntity extends (infer InferredEntity & Fact<InferredName, InferredValue>) ? InferredEntity : GenericEntity : GenericEntity;
24
+ export interface CreateFactConstructorParams<GenericName extends Capitalize<string> = Capitalize<string>, GenericEntity extends Entity = Entity, GenericPayload extends object = object> {
25
+ applyFact<GenericInputEntity extends GenericEntity, GenericInputPayload extends GenericPayload>(payload: GenericInputPayload): (entity: GenericInputEntity) => DEither.Right<`fact-result-${GenericName}`, RemoveFact<GenericInputEntity> & Fact<GenericName, GenericInputPayload>>;
26
+ applyFact<GenericInputEntity extends GenericEntity, GenericInputPayload extends GenericPayload>(entity: GenericInputEntity, payload: GenericInputPayload): DEither.Right<`fact-result-${GenericName}`, RemoveFact<GenericInputEntity> & Fact<GenericName, GenericInputPayload>>;
27
+ }
28
+ export declare function createFact<GenericFact extends Fact, GenericEntityStructure extends EntityStructure>(name: GetFactName<GenericFact>): <GenericRun extends FactRun<GetFactName<GenericFact>>>(createRun: (params: CreateFactConstructorParams<GetFactName<GenericFact>, DDataStructure.StructureValue<GenericEntityStructure>, GetFactPayload<GenericFact>>) => GenericRun) => FactHandler<GetFactName<GenericFact>, DDataStructure.StructureValue<GenericEntityStructure>, GetFactPayload<GenericFact>, GenericRun>;
29
+ export {};
@@ -0,0 +1,35 @@
1
+ import { right } from "../../either/right/create.mjs";
2
+ import { createKind } from "../kind.mjs";
3
+ //#region scripts/modeling/fact/base.ts
4
+ const factKind = createKind("fact");
5
+ const factHandlerKind = createKind("fact-handler");
6
+ function createFact(name) {
7
+ function applyFact(...args) {
8
+ if (args.length === 1) {
9
+ const [payload] = args;
10
+ return (entity) => applyFact(entity, payload);
11
+ }
12
+ const [entity, payload] = args;
13
+ const entityWithFact = {
14
+ ...entity,
15
+ [factKind.runTimeKey]: {
16
+ name,
17
+ payload
18
+ }
19
+ };
20
+ return right(`fact-result-${name}`, entityWithFact);
21
+ }
22
+ return (createRun) => ({
23
+ name,
24
+ run: createRun({ applyFact }),
25
+ getPayload(entity) {
26
+ return factKind.getValue(entity).payload;
27
+ },
28
+ has(entity) {
29
+ return factKind.has(entity) && factKind.getValue(entity).name === name;
30
+ },
31
+ [factHandlerKind.runTimeKey]: null
32
+ });
33
+ }
34
+ //#endregion
35
+ export { createFact, factKind };
@@ -0,0 +1 @@
1
+ export * from './base';
@@ -1,10 +1,8 @@
1
- const require_type = require("../../dataStructure/structure/defaults/type.cjs");
2
- const require_null = require("../../dataStructure/type/defaults/null.cjs");
3
1
  const require_kind = require("../kind.cjs");
4
2
  //#region scripts/modeling/flag/base.ts
5
3
  const flagKind = require_kind.createKind("flag");
6
4
  const flagHandlerKind = require_kind.createKind("flag-handler");
7
- function createFlag(entityStructure, name, valueStructure = require_type.TypeStructure(require_null.NullType(), [])) {
5
+ function createFlag(name) {
8
6
  function append(...args) {
9
7
  if (args.length === 1) {
10
8
  const [value] = args;
@@ -19,10 +17,8 @@ function createFlag(entityStructure, name, valueStructure = require_type.TypeStr
19
17
  }
20
18
  return {
21
19
  name,
22
- entityStructure,
23
- valueStructure,
24
20
  append,
25
- getValue(entity) {
21
+ getPayload(entity) {
26
22
  return flagKind.getValue(entity)[name];
27
23
  },
28
24
  has(entity) {
@@ -1,19 +1,18 @@
1
- import { EntityStructure, Entity, GetEntityName } from '../entity';
1
+ import { EntityStructure, Entity } from '../entity';
2
2
  import type * as DKind from '../../kind';
3
- import * as DDataStructure from '../../dataStructure';
3
+ import type * as DDataStructure from '../../dataStructure';
4
4
  export declare const flagKind: DKind.Handler<DKind.Definition<"@DuplojsLangModeling/flag", Record<string, unknown>>>;
5
- export interface Flag<GenericName extends string = string, GenericValue extends unknown = never> extends DKind.Kind<typeof flagKind, Record<GenericName, GenericValue>> {
5
+ export interface Flag<GenericName extends Capitalize<string> = Capitalize<string>, GenericPayload extends unknown = unknown> extends DKind.Kind<typeof flagKind, Record<GenericName, GenericPayload>> {
6
6
  }
7
+ export type GetFlagName<GenericFlag extends Flag> = GenericFlag extends Flag<infer InferredName extends Capitalize<string>> ? InferredName : never;
8
+ export type GetFlagPayload<GenericFlag extends Flag> = GenericFlag extends Flag<any, infer InferredPayload> ? InferredPayload : never;
7
9
  declare const flagHandlerKind: DKind.Handler<DKind.Definition<"@DuplojsLangModeling/flag-handler", unknown>>;
8
- export interface FlagHandler<GenericEntity extends Entity = Entity, GenericName extends string = string, GenericValue extends unknown = unknown> extends DKind.Kind<typeof flagHandlerKind> {
10
+ export interface FlagHandler<GenericName extends Capitalize<string> = Capitalize<string>, GenericEntity extends Entity = Entity, GenericPayload extends unknown = unknown> extends DKind.Kind<typeof flagHandlerKind> {
9
11
  readonly name: GenericName;
10
- readonly entityStructure: EntityStructure<GetEntityName<GenericEntity>, Omit<GenericEntity, DKind.KeySymbol>>;
11
- readonly valueStructure: DDataStructure.Structure<GenericValue>;
12
- append<GenericInputEntity extends GenericEntity, const GenericInputValue extends GenericValue>(value: GenericInputValue): (entity: GenericInputEntity) => (GenericInputEntity & Flag<GenericName, GenericInputValue>);
13
- append<GenericInputEntity extends GenericEntity, const GenericInputValue extends GenericValue>(entity: GenericInputEntity, value: GenericInputValue): (GenericInputEntity & Flag<GenericName, GenericInputValue>);
14
- getValue<GenericInputEntity extends GenericEntity & Flag<GenericName, GenericValue>>(entity: GenericInputEntity): DKind.GetValue<typeof flagKind, GenericInputEntity>[GenericName];
12
+ append<GenericInputEntity extends GenericEntity, const GenericInputPayload extends GenericPayload>(value: GenericInputPayload): (entity: GenericInputEntity) => (GenericInputEntity & Flag<GenericName, GenericInputPayload>);
13
+ append<GenericInputEntity extends GenericEntity, const GenericInputPayload extends GenericPayload>(entity: GenericInputEntity, value: GenericInputPayload): (GenericInputEntity & Flag<GenericName, GenericInputPayload>);
14
+ getPayload<GenericInputEntity extends GenericEntity & Flag<GenericName, GenericPayload>>(entity: GenericInputEntity): DKind.GetValue<typeof flagKind, GenericInputEntity>[GenericName];
15
15
  has<GenericInputEntity extends GenericEntity>(entity: GenericInputEntity): entity is Extract<GenericInputEntity, Flag<GenericName, any>>;
16
16
  }
17
- export declare function createFlag<GenericEntityStructure extends EntityStructure, GenericName extends Capitalize<string>, GenericValueStructure extends DDataStructure.Structure = DDataStructure.Structure<null>>(entityStructure: GenericEntityStructure, name: GenericName, valueStructure?: GenericValueStructure): FlagHandler<DDataStructure.StructureValue<GenericEntityStructure>, GenericName, DDataStructure.StructureValue<GenericValueStructure>>;
18
- export type GetFlag<GenericHandler extends FlagHandler<any, any, any>> = GenericHandler extends FlagHandler<any, infer InferredName, infer InferredValue> ? Flag<InferredName, InferredValue> : never;
17
+ export declare function createFlag<GenericFLag extends Flag, GenericEntityStructure extends EntityStructure>(name: GetFlagName<GenericFLag>): FlagHandler<GetFlagName<GenericFLag>, DDataStructure.StructureValue<GenericEntityStructure>, GetFlagPayload<GenericFLag>>;
19
18
  export {};
@@ -1,10 +1,8 @@
1
- import { TypeStructure } from "../../dataStructure/structure/defaults/type.mjs";
2
- import { NullType } from "../../dataStructure/type/defaults/null.mjs";
3
1
  import { createKind } from "../kind.mjs";
4
2
  //#region scripts/modeling/flag/base.ts
5
3
  const flagKind = createKind("flag");
6
4
  const flagHandlerKind = createKind("flag-handler");
7
- function createFlag(entityStructure, name, valueStructure = TypeStructure(NullType(), [])) {
5
+ function createFlag(name) {
8
6
  function append(...args) {
9
7
  if (args.length === 1) {
10
8
  const [value] = args;
@@ -19,10 +17,8 @@ function createFlag(entityStructure, name, valueStructure = TypeStructure(NullTy
19
17
  }
20
18
  return {
21
19
  name,
22
- entityStructure,
23
- valueStructure,
24
20
  append,
25
- getValue(entity) {
21
+ getPayload(entity) {
26
22
  return flagKind.getValue(entity)[name];
27
23
  },
28
24
  has(entity) {
@@ -4,45 +4,50 @@ const require_base = require("./entity/base.cjs");
4
4
  const require_helper = require("./entity/helper.cjs");
5
5
  const require_base$1 = require("./newType/base.cjs");
6
6
  const require_helper$1 = require("./newType/helper.cjs");
7
- const require_base$2 = require("./flag/base.cjs");
8
7
  const require_namespace = require("./entity/namespace.cjs");
9
- const require_base$3 = require("./taggedObject/base.cjs");
8
+ const require_base$2 = require("./fact/base.cjs");
9
+ const require_base$3 = require("./flag/base.cjs");
10
+ const require_base$4 = require("./taggedObject/base.cjs");
10
11
  const require_helper$2 = require("./taggedObject/helper.cjs");
11
12
  //#region scripts/modeling/index.ts
12
13
  var modeling_exports = /* @__PURE__ */ require_runtime.__exportAll({
13
14
  EntityStructure: () => require_base.EntityStructure,
14
15
  NewTypeStructure: () => require_base$1.NewTypeStructure,
15
- TaggedObjectStructure: () => require_base$3.TaggedObjectStructure,
16
+ TaggedObjectStructure: () => require_base$4.TaggedObjectStructure,
16
17
  createEntity: () => require_helper.createEntity,
17
18
  createEntityNamespace: () => require_namespace.createEntityNamespace,
18
- createFlag: () => require_base$2.createFlag,
19
+ createFact: () => require_base$2.createFact,
20
+ createFlag: () => require_base$3.createFlag,
19
21
  createKind: () => require_kind.createKind,
20
22
  createNewType: () => require_helper$1.createNewType,
21
23
  createTaggedObject: () => require_helper$2.createTaggedObject,
22
24
  entityKind: () => require_base.entityKind,
23
25
  entityStructureKind: () => require_base.entityStructureKind,
24
- flagKind: () => require_base$2.flagKind,
26
+ factKind: () => require_base$2.factKind,
27
+ flagKind: () => require_base$3.flagKind,
25
28
  getTagValue: () => require_helper$2.getTagValue,
26
29
  hasTagValue: () => require_helper$2.hasTagValue,
27
30
  namespaceKind: () => require_namespace.namespaceKind,
28
31
  newTypeStructureKind: () => require_base$1.newTypeStructureKind,
29
- objectTagKind: () => require_base$3.objectTagKind,
32
+ objectTagKind: () => require_base$4.objectTagKind,
30
33
  taggedObject: () => require_helper$2.taggedObject,
31
- taggedObjectStructureKind: () => require_base$3.taggedObjectStructureKind
34
+ taggedObjectStructureKind: () => require_base$4.taggedObjectStructureKind
32
35
  });
33
36
  //#endregion
34
37
  exports.EntityStructure = require_base.EntityStructure;
35
38
  exports.NewTypeStructure = require_base$1.NewTypeStructure;
36
- exports.TaggedObjectStructure = require_base$3.TaggedObjectStructure;
39
+ exports.TaggedObjectStructure = require_base$4.TaggedObjectStructure;
37
40
  exports.createEntity = require_helper.createEntity;
38
41
  exports.createEntityNamespace = require_namespace.createEntityNamespace;
39
- exports.createFlag = require_base$2.createFlag;
42
+ exports.createFact = require_base$2.createFact;
43
+ exports.createFlag = require_base$3.createFlag;
40
44
  exports.createKind = require_kind.createKind;
41
45
  exports.createNewType = require_helper$1.createNewType;
42
46
  exports.createTaggedObject = require_helper$2.createTaggedObject;
43
47
  exports.entityKind = require_base.entityKind;
44
48
  exports.entityStructureKind = require_base.entityStructureKind;
45
- exports.flagKind = require_base$2.flagKind;
49
+ exports.factKind = require_base$2.factKind;
50
+ exports.flagKind = require_base$3.flagKind;
46
51
  exports.getTagValue = require_helper$2.getTagValue;
47
52
  exports.hasTagValue = require_helper$2.hasTagValue;
48
53
  Object.defineProperty(exports, "modeling_exports", {
@@ -53,6 +58,6 @@ Object.defineProperty(exports, "modeling_exports", {
53
58
  });
54
59
  exports.namespaceKind = require_namespace.namespaceKind;
55
60
  exports.newTypeStructureKind = require_base$1.newTypeStructureKind;
56
- exports.objectTagKind = require_base$3.objectTagKind;
61
+ exports.objectTagKind = require_base$4.objectTagKind;
57
62
  exports.taggedObject = require_helper$2.taggedObject;
58
- exports.taggedObjectStructureKind = require_base$3.taggedObjectStructureKind;
63
+ exports.taggedObjectStructureKind = require_base$4.taggedObjectStructureKind;
@@ -1,4 +1,5 @@
1
1
  export * from './entity';
2
+ export * from './fact';
2
3
  export * from './flag';
3
4
  export * from './kind';
4
5
  export * from './newType';
@@ -4,8 +4,9 @@ import { EntityStructure, entityKind, entityStructureKind } from "./entity/base.
4
4
  import { createEntity } from "./entity/helper.mjs";
5
5
  import { NewTypeStructure, newTypeStructureKind } from "./newType/base.mjs";
6
6
  import { createNewType } from "./newType/helper.mjs";
7
- import { createFlag, flagKind } from "./flag/base.mjs";
8
7
  import { createEntityNamespace, namespaceKind } from "./entity/namespace.mjs";
8
+ import { createFact, factKind } from "./fact/base.mjs";
9
+ import { createFlag, flagKind } from "./flag/base.mjs";
9
10
  import { TaggedObjectStructure, objectTagKind, taggedObjectStructureKind } from "./taggedObject/base.mjs";
10
11
  import { createTaggedObject, getTagValue, hasTagValue, taggedObject } from "./taggedObject/helper.mjs";
11
12
  //#region scripts/modeling/index.ts
@@ -15,12 +16,14 @@ var modeling_exports = /* @__PURE__ */ __exportAll({
15
16
  TaggedObjectStructure: () => TaggedObjectStructure,
16
17
  createEntity: () => createEntity,
17
18
  createEntityNamespace: () => createEntityNamespace,
19
+ createFact: () => createFact,
18
20
  createFlag: () => createFlag,
19
21
  createKind: () => createKind,
20
22
  createNewType: () => createNewType,
21
23
  createTaggedObject: () => createTaggedObject,
22
24
  entityKind: () => entityKind,
23
25
  entityStructureKind: () => entityStructureKind,
26
+ factKind: () => factKind,
24
27
  flagKind: () => flagKind,
25
28
  getTagValue: () => getTagValue,
26
29
  hasTagValue: () => hasTagValue,
@@ -31,4 +34,4 @@ var modeling_exports = /* @__PURE__ */ __exportAll({
31
34
  taggedObjectStructureKind: () => taggedObjectStructureKind
32
35
  });
33
36
  //#endregion
34
- export { EntityStructure, NewTypeStructure, TaggedObjectStructure, createEntity, createEntityNamespace, createFlag, createKind, createNewType, createTaggedObject, entityKind, entityStructureKind, flagKind, getTagValue, hasTagValue, modeling_exports, namespaceKind, newTypeStructureKind, objectTagKind, taggedObject, taggedObjectStructureKind };
37
+ export { EntityStructure, NewTypeStructure, TaggedObjectStructure, createEntity, createEntityNamespace, createFact, createFlag, createKind, createNewType, createTaggedObject, entityKind, entityStructureKind, factKind, flagKind, getTagValue, hasTagValue, modeling_exports, namespaceKind, newTypeStructureKind, objectTagKind, taggedObject, taggedObjectStructureKind };
@@ -3,14 +3,14 @@ const require_create = require("../../either/left/create.cjs");
3
3
  const require_create$1 = require("../../either/right/create.cjs");
4
4
  const require_justExec = require("../../common/justExec.cjs");
5
5
  const require_resultSymbol = require("../../dataStructure/common/resultSymbol.cjs");
6
- const require_error = require("../../dataStructure/common/error.cjs");
7
- const require_base = require("../../dataStructure/structure/base.cjs");
6
+ const require_base = require("../../dataStructure/common/error/base.cjs");
7
+ const require_base$1 = require("../../dataStructure/structure/base.cjs");
8
8
  //#region scripts/modeling/newType/base.ts
9
9
  const newTypeStructureKind = require("../kind.cjs").createKind("new-type-structure");
10
10
  function executeNewTypeConstraints(structure, data, errorHandler) {
11
11
  return structure.definition.newTypeConstraints.reduce((accumulator, constraint) => require_callThen.callThen(accumulator, (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(constraint.executeCheck(data), (constraintResult) => constraintResult === require_resultSymbol.ErrorSymbol ? errorHandler?.().addIssue(structure, data, constraint) ?? require_resultSymbol.ErrorSymbol : require_resultSymbol.SuccessSymbol)), require_resultSymbol.SuccessSymbol);
12
12
  }
13
- const NewTypeStructure = require_base.createStructure(newTypeStructureKind, ({ init }) => (name, structure, newTypeConstraints) => init({
13
+ const NewTypeStructure = require_base$1.createStructure(newTypeStructureKind, ({ init }) => (name, structure, newTypeConstraints) => init({
14
14
  constraints: [],
15
15
  newTypeConstraints,
16
16
  inner: structure
@@ -18,6 +18,7 @@ const NewTypeStructure = require_base.createStructure(newTypeStructureKind, ({ i
18
18
  executeCheck: (self, data, errorHandler) => require_callThen.callThen(self.definition.inner.executeCheck(data, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : executeNewTypeConstraints(self, data, errorHandler)),
19
19
  executeEncode: (self, codec, data, errorHandler) => require_callThen.callThen(self.definition.inner.executeEncode(codec, data, errorHandler), (awaitedInnerResult) => awaitedInnerResult === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(executeNewTypeConstraints(self, data, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(self.executeConstraints(data, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : awaitedInnerResult))),
20
20
  executeDecode: (self, codec, data, errorHandler) => require_callThen.callThen(self.definition.inner.executeDecode(codec, data, errorHandler), (awaitedInnerResult) => awaitedInnerResult === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(executeNewTypeConstraints(self, awaitedInnerResult, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(self.executeConstraints(awaitedInnerResult, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : awaitedInnerResult))),
21
+ executeParse: (self, codecContext, data, errorHandler) => require_callThen.callThen(self.definition.inner.executeParse(codecContext, data, errorHandler), (awaitedInnerResult) => awaitedInnerResult === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(executeNewTypeConstraints(self, awaitedInnerResult, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : require_callThen.callThen(self.executeConstraints(awaitedInnerResult, errorHandler), (result) => result === require_resultSymbol.ErrorSymbol ? require_resultSymbol.ErrorSymbol : awaitedInnerResult))),
21
22
  isAsynchronous: (self) => self.definition.inner.isAsynchronous() || self.definition.newTypeConstraints.some((value) => value.isAsynchronous())
22
23
  }, {
23
24
  name,
@@ -26,17 +27,17 @@ const NewTypeStructure = require_base.createStructure(newTypeStructureKind, ({ i
26
27
  const [codecs] = args;
27
28
  return (value) => self.decodeMap(codecs, value);
28
29
  }
29
- const errorHandler = require_error.createGetErrorHandler();
30
+ const errorHandler = require_base.createGetErrorHandler();
30
31
  const [codecs, data] = args;
31
32
  const result = self.executeDecode(codecs.context.value, data, errorHandler);
32
- if (result instanceof Promise) return require_create.left("async-error", void 0);
33
+ if (result instanceof Promise) return require_create.left("async-error", new require_base.ErrorPromise());
33
34
  if (result === require_resultSymbol.ErrorSymbol) return require_create.left("map-error", errorHandler().createError());
34
35
  return require_create$1.right("map-success", result);
35
36
  },
36
37
  map: (self, data) => {
37
- const errorHandler = require_error.createGetErrorHandler();
38
+ const errorHandler = require_base.createGetErrorHandler();
38
39
  const result = self.executeCheck(data, errorHandler);
39
- if (result instanceof Promise) return require_create.left("async-error", void 0);
40
+ if (result instanceof Promise) return require_create.left("async-error", new require_base.ErrorPromise());
40
41
  if (result === require_resultSymbol.ErrorSymbol) return require_create.left("map-error", errorHandler().createError());
41
42
  return require_create$1.right("map-success", data);
42
43
  },
@@ -46,18 +47,18 @@ const NewTypeStructure = require_base.createStructure(newTypeStructureKind, ({ i
46
47
  return (value) => self.asyncDecodeMap(codecs, value);
47
48
  }
48
49
  return require_justExec.justExec(async () => {
49
- const errorHandler = require_error.createGetErrorHandler();
50
+ const errorHandler = require_base.createGetErrorHandler();
50
51
  const [codecs, data] = args;
51
52
  const result = await self.executeDecode(codecs.context.value, data, errorHandler);
52
53
  if (result === require_resultSymbol.ErrorSymbol) return require_create.left("map-error", errorHandler().createError());
53
54
  return require_create$1.right("map-success", result);
54
55
  });
55
56
  },
56
- asyncMap: (self, data) => require_justExec.justExec(async () => {
57
- const errorHandler = require_error.createGetErrorHandler();
57
+ asyncMap: async (self, data) => {
58
+ const errorHandler = require_base.createGetErrorHandler();
58
59
  if (await self.executeCheck(data, errorHandler) === require_resultSymbol.ErrorSymbol) return require_create.left("map-error", errorHandler().createError());
59
60
  return require_create$1.right("map-success", data);
60
- })
61
+ }
61
62
  }));
62
63
  //#endregion
63
64
  exports.NewTypeStructure = NewTypeStructure;
@@ -24,14 +24,14 @@ export interface NewTypeStructureDefinition<GenericNewTypeConstraint extends rea
24
24
  readonly inner: DDataStructure.Structure;
25
25
  readonly newTypeConstraints: GenericNewTypeConstraint;
26
26
  }
27
- export type ComputeNewType<GenericName extends string, GenericValue extends unknown, GenericNewTypeConstraint extends readonly DDataStructure.Constraint<GenericValue>[], GenericIntersectionConstraintValue = DDataStructure.ConstraintValue<DArray.Unwrap<GenericNewTypeConstraint>>, GenericClearValue = DCommon.NeverCoalescing<DCommon.RemoveConstraint<GenericIntersectionConstraintValue>, unknown>> = (GenericValue & GenericClearValue & NewType<GenericName, GenericIntersectionConstraintValue extends (GenericClearValue & infer InferredConstraint extends DCommon.BaseConstraint) ? InferredConstraint : never>);
28
- export interface NewTypeStructure<GenericName extends string = string, GenericValue extends unknown = unknown, GenericNewTypeConstraint extends readonly DDataStructure.Constraint<GenericValue>[] = readonly DDataStructure.Constraint<GenericValue>[]> extends DCommon.Forward<DDataStructure.Structure<ComputeNewType<GenericName, GenericValue, GenericNewTypeConstraint>, NewTypeStructureDefinition<GenericNewTypeConstraint>> & DKind.Kind<typeof newTypeStructureKind>> {
27
+ export type ComputeNewType<GenericName extends string, GenericValue extends unknown, GenericNewTypeConstraint extends readonly DDataStructure.Constraint<GenericValue>[], GenericIntersectionConstraintValue = DDataStructure.ConstraintValue<DArray.Unwrap<GenericNewTypeConstraint>>, GenericClearValue = DCommon.NeverCoalescing<DCommon.RemoveConstraint<GenericIntersectionConstraintValue>, unknown>> = Extract<GenericValue & GenericClearValue & NewType<GenericName, GenericIntersectionConstraintValue extends (GenericClearValue & infer InferredConstraint extends DCommon.BaseConstraint) ? InferredConstraint : never>, any>;
28
+ export interface NewTypeStructure<out GenericName extends string = string, out GenericValue extends unknown = unknown, out GenericNewTypeConstraint extends readonly DDataStructure.Constraint<GenericValue>[] = readonly DDataStructure.Constraint<GenericValue>[]> extends DCommon.Forward<DDataStructure.Structure<ComputeNewType<GenericName, GenericValue, GenericNewTypeConstraint>, NewTypeStructureDefinition<GenericNewTypeConstraint>> & DKind.Kind<typeof newTypeStructureKind>> {
29
29
  readonly name: GenericName;
30
- decodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs): (data: DDataStructure.EncodedValue<NewTypeMap<DDataStructure.StructureValue<this>>, GenericCodecs>) => (DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"async-error", undefined> | DEither.Left<"map-error", DDataStructure.Error>);
31
- decodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs, data: DDataStructure.EncodedValue<NewTypeMap<DDataStructure.StructureValue<this>>, GenericCodecs>): (DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"async-error", undefined> | DEither.Left<"map-error", DDataStructure.Error>);
32
- map(data: NewTypeMap<DDataStructure.StructureValue<this>>): (DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"async-error", undefined> | DEither.Left<"map-error", DDataStructure.Error>);
33
- asyncDecodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs): (data: DDataStructure.EncodedValue<NewTypeMap<DDataStructure.StructureValue<this>>, GenericCodecs>) => Promise<DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"map-error", DDataStructure.Error>>;
34
- asyncDecodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs, data: DDataStructure.EncodedValue<NewTypeMap<DDataStructure.StructureValue<this>>, GenericCodecs>): Promise<DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"map-error", DDataStructure.Error>>;
35
- asyncMap(data: NewTypeMap<DDataStructure.StructureValue<this>>): Promise<DEither.Right<"map-success", DDataStructure.StructureValue<this>> | DEither.Left<"map-error", DDataStructure.Error>>;
30
+ decodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs): (data: DDataStructure.EncodedValue<NewTypeMap<ComputeNewType<GenericName, GenericValue, GenericNewTypeConstraint>>, GenericCodecs>) => (DEither.Right<"map-success", ComputeNewType<GenericName, GenericValue, GenericNewTypeConstraint>> | DEither.Left<"async-error", DDataStructure.ErrorPromise> | DEither.Left<"map-error", DDataStructure.Error>);
31
+ decodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs, data: DDataStructure.EncodedValue<NewTypeMap<ComputeNewType<GenericName, GenericValue, GenericNewTypeConstraint>>, GenericCodecs>): (DEither.Right<"map-success", ComputeNewType<GenericName, GenericValue, GenericNewTypeConstraint>> | DEither.Left<"async-error", DDataStructure.ErrorPromise> | DEither.Left<"map-error", DDataStructure.Error>);
32
+ map(data: NewTypeMap<ComputeNewType<GenericName, GenericValue, GenericNewTypeConstraint>>): (DEither.Right<"map-success", ComputeNewType<GenericName, GenericValue, GenericNewTypeConstraint>> | DEither.Left<"async-error", DDataStructure.ErrorPromise> | DEither.Left<"map-error", DDataStructure.Error>);
33
+ asyncDecodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs): (data: DDataStructure.EncodedValue<NewTypeMap<ComputeNewType<GenericName, GenericValue, GenericNewTypeConstraint>>, GenericCodecs>) => Promise<DEither.Right<"map-success", ComputeNewType<GenericName, GenericValue, GenericNewTypeConstraint>> | DEither.Left<"map-error", DDataStructure.Error>>;
34
+ asyncDecodeMap<GenericCodecs extends DDataStructure.Codecs>(codecs: GenericCodecs, data: DDataStructure.EncodedValue<NewTypeMap<ComputeNewType<GenericName, GenericValue, GenericNewTypeConstraint>>, GenericCodecs>): Promise<DEither.Right<"map-success", ComputeNewType<GenericName, GenericValue, GenericNewTypeConstraint>> | DEither.Left<"map-error", DDataStructure.Error>>;
35
+ asyncMap(data: NewTypeMap<ComputeNewType<GenericName, GenericValue, GenericNewTypeConstraint>>): Promise<DEither.Right<"map-success", ComputeNewType<GenericName, GenericValue, GenericNewTypeConstraint>> | DEither.Left<"map-error", DDataStructure.Error>>;
36
36
  }
37
37
  export declare const NewTypeStructure: <GenericName extends string, GenericStructure extends DDataStructure.Structure, const GenericNewTypeConstraint extends readonly DDataStructure.Constraint<DDataStructure.StructureValue<GenericStructure>>[]>(name: GenericName, structure: GenericStructure, newTypeConstraints: GenericNewTypeConstraint) => NewTypeStructure<GenericName, DDataStructure.StructureValue<GenericStructure>, GenericNewTypeConstraint>;