@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
@@ -0,0 +1,14 @@
1
+ const require_kind = require("./kind.cjs");
2
+ const require_is = require("./right/is.cjs");
3
+ //#region scripts/either/unwrapOtherwise.ts
4
+ function unwrapOtherwise(...args) {
5
+ if (args.length === 1) {
6
+ const [value] = args;
7
+ return (input) => unwrapOtherwise(input, value);
8
+ }
9
+ const [input, value] = args;
10
+ if (require_is.isRight(input)) return require_kind.valueKind.getValue(input);
11
+ return value();
12
+ }
13
+ //#endregion
14
+ exports.unwrapOtherwise = unwrapOtherwise;
@@ -0,0 +1,8 @@
1
+ import { Left } from './left';
2
+ import { Right } from './right';
3
+ import { GetValue } from './types';
4
+ import type * as DCommon from '../common';
5
+ type Either = Right | Left;
6
+ export declare function unwrapOtherwise<GenericInput extends Either | DCommon.AnyValue, const GenericValue extends unknown>(input: GenericInput, value: () => GenericValue): (GetValue<Extract<GenericInput, Right>> | GenericValue);
7
+ export declare function unwrapOtherwise<GenericInput extends Either | DCommon.AnyValue, const GenericValue extends unknown>(value: () => GenericValue): (input: GenericInput) => (GetValue<Extract<GenericInput, Right>> | GenericValue);
8
+ export {};
@@ -0,0 +1,14 @@
1
+ import { valueKind } from "./kind.mjs";
2
+ import { isRight } from "./right/is.mjs";
3
+ //#region scripts/either/unwrapOtherwise.ts
4
+ function unwrapOtherwise(...args) {
5
+ if (args.length === 1) {
6
+ const [value] = args;
7
+ return (input) => unwrapOtherwise(input, value);
8
+ }
9
+ const [input, value] = args;
10
+ if (isRight(input)) return valueKind.getValue(input);
11
+ return value();
12
+ }
13
+ //#endregion
14
+ export { unwrapOtherwise };
@@ -1,6 +1,7 @@
1
+ const require_kind = require("./kind.cjs");
1
2
  const require_reduce = require("../array/reduce.cjs");
2
3
  //#region scripts/generator/reduce.ts
3
- const reduceKind = require("./kind.cjs").createKind("reduce");
4
+ const reduceKind = require_kind.createKind("reduce");
4
5
  function reduceFrom(value) {
5
6
  return { [reduceKind.runTimeKey]: value };
6
7
  }
@@ -1,5 +1,5 @@
1
- import { reduceTools } from "../array/reduce.mjs";
2
1
  import { createKind } from "./kind.mjs";
2
+ import { reduceTools } from "../array/reduce.mjs";
3
3
  //#region scripts/generator/reduce.ts
4
4
  const reduceKind = createKind("reduce");
5
5
  function reduceFrom(value) {
@@ -14,5 +14,5 @@ export interface EvidenceResult<GenericInformation extends string, GenericValue
14
14
  */
15
15
  export declare function evidenceResult<GenericInformation extends string, GenericValue extends object>(information: GenericInformation): (value: GenericValue) => EvidenceResult<GenericInformation, GenericValue>;
16
16
  export declare function evidenceResult<GenericInformation extends string, GenericValue extends object>(information: GenericInformation, value: GenericValue): EvidenceResult<GenericInformation, GenericValue>;
17
- export type FindEvidence<GenericValue extends unknown> = (GenericValue extends Evidence ? GenericValue : GenericValue extends Promise<unknown> ? FindEvidence<Awaited<GenericValue>> : GenericValue extends DEither.Right | DEither.Left ? FindEvidence<DEither.GetValue<GenericValue>> : never) extends infer InferredResult extends Evidence ? InferredResult : never;
17
+ export type FindEvidence<GenericValue extends unknown> = (GenericValue extends Evidence ? GenericValue : GenericValue extends Promise<unknown> ? FindEvidence<Awaited<GenericValue>> : GenericValue extends DEither.Right | DEither.Left ? FindEvidence<DEither.GetValue<GenericValue>> : GenericValue extends Generator<infer InferredYeldValue, infer InferredResult> ? (FindEvidence<InferredYeldValue> | FindEvidence<InferredResult>) : GenericValue extends AsyncGenerator<infer InferredYeldValue, infer InferredResult> ? (FindEvidence<InferredYeldValue> | FindEvidence<InferredResult>) : never) extends infer InferredResult extends Evidence ? InferredResult : never;
18
18
  export type GetEvidenceResult<GenericFunction extends DCommon.AnyFunction, EvidenceName extends Extract<keyof FindEvidence<ReturnType<GenericFunction>>[DCommon.ConstraintSymbol]["evidence"], string>> = Extract<FindEvidence<ReturnType<GenericFunction>>, EvidenceName extends unknown ? Evidence<EvidenceName> : never>;
@@ -4,14 +4,14 @@ const require_base = require("./controller/base.cjs");
4
4
  //#region scripts/invocation/flow/base.ts
5
5
  function flow(...args) {
6
6
  const accumulateFunction = args.reduce((accumulator, currentValue) => {
7
- if (require_base.flowControllerKind.has(currentValue)) return (arg) => currentValue.exec(() => accumulator(arg));
7
+ if (require_base.flowControllerKind.has(currentValue)) return (input, argument) => currentValue.exec(() => accumulator(input, argument));
8
8
  else {
9
- const preparedResultTreatment = (result) => require_base.flowControllerExitKind.has(result) ? result : currentValue(result);
10
- return (arg) => require_callThen.callThen(accumulator(arg), preparedResultTreatment);
9
+ const preparedResultTreatment = (result, argument) => require_base.flowControllerExitKind.has(result) ? result : currentValue(result, argument);
10
+ return (input, argument) => require_callThen.callThen(accumulator(input, argument), (result) => preparedResultTreatment(result, argument));
11
11
  }
12
12
  }, require_forward.forward);
13
13
  const preparedResultTreatment = (result) => require_base.flowControllerExitKind.has(result) ? require_base.flowControllerExitKind.getValue(result) : result;
14
- return (arg) => require_callThen.callThen(accumulateFunction(arg), preparedResultTreatment);
14
+ return (input) => require_callThen.callThen(accumulateFunction(input, input), preparedResultTreatment);
15
15
  }
16
16
  //#endregion
17
17
  exports.flow = flow;
@@ -5,7 +5,7 @@ type ComputeLastUsableValue<GenericAccumulator extends DCommon.AnyTuple> = Gener
5
5
  ...infer InferredRest,
6
6
  infer InferredLast
7
7
  ] ? InferredLast extends FlowControllerResult<infer InferredFlowControllerResult> ? Exclude<Awaited<InferredFlowControllerResult>, FlowControllerPreviousFunctionResult | FlowControllerExit> extends infer InferredOutputValue ? DCommon.HasSomething<InferredOutputValue> extends true ? InferredOutputValue : InferredRest extends DCommon.AnyTuple ? ComputeLastUsableValue<InferredRest> : never : never : InferredLast : never;
8
- type Pipe<GenericAccumulator extends DCommon.AnyTuple, GenericOutput extends unknown> = (this: never, input: Awaited<ComputeLastUsableValue<GenericAccumulator>>) => GenericOutput;
8
+ type Pipe<GenericAccumulator extends DCommon.AnyTuple, GenericOutput extends unknown> = (this: never, input: Awaited<ComputeLastUsableValue<GenericAccumulator>>, argument: GenericAccumulator[0]) => GenericOutput;
9
9
  type IsMaybePromise<GenericAccumulator extends DCommon.AnyTuple> = {
10
10
  [Index in keyof GenericAccumulator]: UnwrapFlowControllerResult<GenericAccumulator[Index]> extends infer InferredResult ? DCommon.IsExtends<InferredResult, Promise<unknown>> extends true ? false : DCommon.ContainExtends<InferredResult, Promise<any>> : never;
11
11
  }[number] extends false ? false : true;
@@ -4,14 +4,14 @@ import { flowControllerExitKind, flowControllerKind } from "./controller/base.mj
4
4
  //#region scripts/invocation/flow/base.ts
5
5
  function flow(...args) {
6
6
  const accumulateFunction = args.reduce((accumulator, currentValue) => {
7
- if (flowControllerKind.has(currentValue)) return (arg) => currentValue.exec(() => accumulator(arg));
7
+ if (flowControllerKind.has(currentValue)) return (input, argument) => currentValue.exec(() => accumulator(input, argument));
8
8
  else {
9
- const preparedResultTreatment = (result) => flowControllerExitKind.has(result) ? result : currentValue(result);
10
- return (arg) => callThen(accumulator(arg), preparedResultTreatment);
9
+ const preparedResultTreatment = (result, argument) => flowControllerExitKind.has(result) ? result : currentValue(result, argument);
10
+ return (input, argument) => callThen(accumulator(input, argument), (result) => preparedResultTreatment(result, argument));
11
11
  }
12
12
  }, forward);
13
13
  const preparedResultTreatment = (result) => flowControllerExitKind.has(result) ? flowControllerExitKind.getValue(result) : result;
14
- return (arg) => callThen(accumulateFunction(arg), preparedResultTreatment);
14
+ return (input) => callThen(accumulateFunction(input, input), preparedResultTreatment);
15
15
  }
16
16
  //#endregion
17
17
  export { flow };
@@ -16,7 +16,7 @@ const debounce = require_base.createFlowController(flowControllerDebounceKind, (
16
16
  lastEvent?.resolve(false);
17
17
  lastEvent = require_externalPromise.createExternalPromise();
18
18
  lastTimeout = setTimeout(() => lastEvent?.resolve(true), formattedDebounceTime);
19
- if (!await lastEvent.promise) return exitFlow(require_create.left("debounce-reject"));
19
+ if (!await lastEvent.promise) return exitFlow(require_create.left("debounce-reject", void 0));
20
20
  return result;
21
21
  });
22
22
  });
@@ -16,7 +16,7 @@ const debounce = createFlowController(flowControllerDebounceKind, ({ init, exitF
16
16
  lastEvent?.resolve(false);
17
17
  lastEvent = createExternalPromise();
18
18
  lastTimeout = setTimeout(() => lastEvent?.resolve(true), formattedDebounceTime);
19
- if (!await lastEvent.promise) return exitFlow(left("debounce-reject"));
19
+ if (!await lastEvent.promise) return exitFlow(left("debounce-reject", void 0));
20
20
  return result;
21
21
  });
22
22
  });
@@ -15,7 +15,7 @@ const throttling = require_base.createFlowController(flowControllerThrottlingKin
15
15
  if (Date.now() - lastTime < formattedThrottlingTime) {
16
16
  lastEvent?.resolve(false);
17
17
  lastEvent = require_externalPromise.createExternalPromise();
18
- if (!await lastEvent.promise) return exitFlow(require_create.left("throttling-reject"));
18
+ if (!await lastEvent.promise) return exitFlow(require_create.left("throttling-reject", void 0));
19
19
  }
20
20
  setTimeout(() => lastEvent?.resolve(true), formattedThrottlingTime);
21
21
  lastTime = Date.now();
@@ -15,7 +15,7 @@ const throttling = createFlowController(flowControllerThrottlingKind, ({ init, e
15
15
  if (Date.now() - lastTime < formattedThrottlingTime) {
16
16
  lastEvent?.resolve(false);
17
17
  lastEvent = createExternalPromise();
18
- if (!await lastEvent.promise) return exitFlow(left("throttling-reject"));
18
+ if (!await lastEvent.promise) return exitFlow(left("throttling-reject", void 0));
19
19
  }
20
20
  setTimeout(() => lastEvent?.resolve(true), formattedThrottlingTime);
21
21
  lastTime = Date.now();
@@ -10,7 +10,9 @@ const require_throttling = require("./flow/controller/defaults/throttling.cjs");
10
10
  const require_timeout = require("./flow/controller/defaults/timeout.cjs");
11
11
  const require_base$1 = require("./flow/base.cjs");
12
12
  const require_port = require("./port.cjs");
13
- const require_useCase = require("./useCase.cjs");
13
+ const require_reader = require("./reader.cjs");
14
+ const require_resolver = require("./resolver.cjs");
15
+ const require_signature = require("./signature.cjs");
14
16
  //#region scripts/invocation/index.ts
15
17
  var invocation_exports = /* @__PURE__ */ require_runtime.__exportAll({
16
18
  AbortErrorFlowController: () => require_aborter.AbortErrorFlowController,
@@ -19,7 +21,8 @@ var invocation_exports = /* @__PURE__ */ require_runtime.__exportAll({
19
21
  createFlowController: () => require_base.createFlowController,
20
22
  createKind: () => require_kind.createKind,
21
23
  createPort: () => require_port.createPort,
22
- createUseCase: () => require_useCase.createUseCase,
24
+ createReader: () => require_reader.createReader,
25
+ createResolver: () => require_resolver.createResolver,
23
26
  debounce: () => require_debounce.debounce,
24
27
  evidenceResult: () => require_evidence.evidenceResult,
25
28
  filter: () => require_filter.filter,
@@ -33,11 +36,14 @@ var invocation_exports = /* @__PURE__ */ require_runtime.__exportAll({
33
36
  flowControllerThrottlingKind: () => require_throttling.flowControllerThrottlingKind,
34
37
  flowControllerTimeoutKind: () => require_timeout.flowControllerTimeoutKind,
35
38
  portHandlerKind: () => require_port.portHandlerKind,
39
+ readerKind: () => require_reader.readerKind,
40
+ resolveReaders: () => require_reader.resolveReaders,
41
+ resolverKind: () => require_resolver.resolverKind,
36
42
  retry: () => require_retry.retry,
43
+ signatureKind: () => require_signature.signatureKind,
44
+ signedFunction: () => require_signature.signedFunction,
37
45
  throttling: () => require_throttling.throttling,
38
- timeout: () => require_timeout.timeout,
39
- useCaseHandlerKind: () => require_useCase.useCaseHandlerKind,
40
- wireUseCases: () => require_useCase.wireUseCases
46
+ timeout: () => require_timeout.timeout
41
47
  });
42
48
  //#endregion
43
49
  exports.AbortErrorFlowController = require_aborter.AbortErrorFlowController;
@@ -46,7 +52,8 @@ exports.appendEvidence = require_evidence.appendEvidence;
46
52
  exports.createFlowController = require_base.createFlowController;
47
53
  exports.createKind = require_kind.createKind;
48
54
  exports.createPort = require_port.createPort;
49
- exports.createUseCase = require_useCase.createUseCase;
55
+ exports.createReader = require_reader.createReader;
56
+ exports.createResolver = require_resolver.createResolver;
50
57
  exports.debounce = require_debounce.debounce;
51
58
  exports.evidenceResult = require_evidence.evidenceResult;
52
59
  exports.filter = require_filter.filter;
@@ -66,8 +73,11 @@ Object.defineProperty(exports, "invocation_exports", {
66
73
  }
67
74
  });
68
75
  exports.portHandlerKind = require_port.portHandlerKind;
76
+ exports.readerKind = require_reader.readerKind;
77
+ exports.resolveReaders = require_reader.resolveReaders;
78
+ exports.resolverKind = require_resolver.resolverKind;
69
79
  exports.retry = require_retry.retry;
80
+ exports.signatureKind = require_signature.signatureKind;
81
+ exports.signedFunction = require_signature.signedFunction;
70
82
  exports.throttling = require_throttling.throttling;
71
83
  exports.timeout = require_timeout.timeout;
72
- exports.useCaseHandlerKind = require_useCase.useCaseHandlerKind;
73
- exports.wireUseCases = require_useCase.wireUseCases;
@@ -2,4 +2,6 @@ export * from './evidence';
2
2
  export * from './flow';
3
3
  export * from './kind';
4
4
  export * from './port';
5
- export * from './useCase';
5
+ export * from './reader';
6
+ export * from './resolver';
7
+ export * from './signature';
@@ -10,7 +10,9 @@ import { flowControllerThrottlingKind, throttling } from "./flow/controller/defa
10
10
  import { flowControllerTimeoutKind, timeout } from "./flow/controller/defaults/timeout.mjs";
11
11
  import { flow } from "./flow/base.mjs";
12
12
  import { createPort, portHandlerKind } from "./port.mjs";
13
- import { createUseCase, useCaseHandlerKind, wireUseCases } from "./useCase.mjs";
13
+ import { createReader, readerKind, resolveReaders } from "./reader.mjs";
14
+ import { createResolver, resolverKind } from "./resolver.mjs";
15
+ import { signatureKind, signedFunction } from "./signature.mjs";
14
16
  //#region scripts/invocation/index.ts
15
17
  var invocation_exports = /* @__PURE__ */ __exportAll({
16
18
  AbortErrorFlowController: () => AbortErrorFlowController,
@@ -19,7 +21,8 @@ var invocation_exports = /* @__PURE__ */ __exportAll({
19
21
  createFlowController: () => createFlowController,
20
22
  createKind: () => createKind,
21
23
  createPort: () => createPort,
22
- createUseCase: () => createUseCase,
24
+ createReader: () => createReader,
25
+ createResolver: () => createResolver,
23
26
  debounce: () => debounce,
24
27
  evidenceResult: () => evidenceResult,
25
28
  filter: () => filter,
@@ -33,11 +36,14 @@ var invocation_exports = /* @__PURE__ */ __exportAll({
33
36
  flowControllerThrottlingKind: () => flowControllerThrottlingKind,
34
37
  flowControllerTimeoutKind: () => flowControllerTimeoutKind,
35
38
  portHandlerKind: () => portHandlerKind,
39
+ readerKind: () => readerKind,
40
+ resolveReaders: () => resolveReaders,
41
+ resolverKind: () => resolverKind,
36
42
  retry: () => retry,
43
+ signatureKind: () => signatureKind,
44
+ signedFunction: () => signedFunction,
37
45
  throttling: () => throttling,
38
- timeout: () => timeout,
39
- useCaseHandlerKind: () => useCaseHandlerKind,
40
- wireUseCases: () => wireUseCases
46
+ timeout: () => timeout
41
47
  });
42
48
  //#endregion
43
- export { AbortErrorFlowController, aborter, appendEvidence, createFlowController, createKind, createPort, createUseCase, debounce, evidenceResult, filter, flow, flowControllerAborterKind, flowControllerDebounceKind, flowControllerExitKind, flowControllerFilterKind, flowControllerKind, flowControllerRetryKind, flowControllerThrottlingKind, flowControllerTimeoutKind, invocation_exports, portHandlerKind, retry, throttling, timeout, useCaseHandlerKind, wireUseCases };
49
+ export { AbortErrorFlowController, aborter, appendEvidence, createFlowController, createKind, createPort, createReader, createResolver, debounce, evidenceResult, filter, flow, flowControllerAborterKind, flowControllerDebounceKind, flowControllerExitKind, flowControllerFilterKind, flowControllerKind, flowControllerRetryKind, flowControllerThrottlingKind, flowControllerTimeoutKind, invocation_exports, portHandlerKind, readerKind, resolveReaders, resolverKind, retry, signatureKind, signedFunction, throttling, timeout };
@@ -0,0 +1,30 @@
1
+ const require_entries = require("../object/entries.cjs");
2
+ const require_entry = require("../object/entry.cjs");
3
+ const require_fromEntries = require("../object/fromEntries.cjs");
4
+ const require_map = require("../array/map.cjs");
5
+ const require_forward = require("../common/forward.cjs");
6
+ const require_pipe = require("../common/pipe.cjs");
7
+ const require_replace = require("../string/replace.cjs");
8
+ const require_uncapitalize = require("../string/uncapitalize.cjs");
9
+ //#region scripts/invocation/reader.ts
10
+ const readerKind = require("./kind.cjs").createKind("reader");
11
+ function formatPortName(value) {
12
+ return require_pipe.pipe(value, require_uncapitalize.uncapitalize, require_replace.replace(/Port$/, ""));
13
+ }
14
+ function createReader(dependencies, read) {
15
+ return {
16
+ dependencies,
17
+ run: (injectedDependencies) => read(require_pipe.pipe(require_forward.forward(dependencies), require_entries.entries, require_map.map(([key, value]) => {
18
+ const formattedKey = readerKind.has(value) ? require_uncapitalize.uncapitalize(key) : formatPortName(key);
19
+ return require_entry.entry(formattedKey, readerKind.has(value) && !injectedDependencies[formattedKey] ? value.run(injectedDependencies) : injectedDependencies[formattedKey]);
20
+ }), require_fromEntries.fromEntries)),
21
+ [readerKind.runTimeKey]: null
22
+ };
23
+ }
24
+ function resolveReaders(readers, ports) {
25
+ return require_pipe.pipe(readers, require_entries.entries, require_map.map(([key, reader]) => require_entry.entry(require_uncapitalize.uncapitalize(key), reader.run(ports))), require_fromEntries.fromEntries);
26
+ }
27
+ //#endregion
28
+ exports.createReader = createReader;
29
+ exports.readerKind = readerKind;
30
+ exports.resolveReaders = resolveReaders;
@@ -0,0 +1,30 @@
1
+ import { PortHandler } from './port';
2
+ import * as DCommon from '../common';
3
+ import type * as DKind from '../kind';
4
+ type FormatPortName<GenericValue extends string> = Uncapitalize<GenericValue> extends infer InferredResult extends string ? InferredResult extends `${infer InferredName}Port` ? InferredName : InferredResult : never;
5
+ export type ReaderDependencies = Record<string, Reader | PortHandler>;
6
+ export type ReaderDependenciesValue<GenericDependencies extends ReaderDependencies> = DCommon.SimplifyTopLevel<{
7
+ [Prop in keyof GenericDependencies as (GenericDependencies[Prop] extends PortHandler ? FormatPortName<Extract<Prop, string>> : Uncapitalize<Extract<Prop, string>>)]: GenericDependencies[Prop] extends PortHandler ? ReturnType<GenericDependencies[Prop]["createImplementation"]> : GenericDependencies[Prop] extends Reader ? ReturnType<GenericDependencies[Prop]["run"]> : never;
8
+ }>;
9
+ export type GetAllPorts<GenericDependenciesValue extends ReaderDependencies> = GenericDependenciesValue extends any ? ({
10
+ [Prop in keyof GenericDependenciesValue]: (GenericDependenciesValue[Prop] extends PortHandler ? [
11
+ FormatPortName<Extract<Prop, string>>,
12
+ ReturnType<GenericDependenciesValue[Prop]["createImplementation"]>
13
+ ] : GenericDependenciesValue[Prop] extends Reader ? GetAllPorts<GenericDependenciesValue[Prop]["dependencies"]> : never);
14
+ })[keyof GenericDependenciesValue] : never;
15
+ export declare const readerKind: DKind.Handler<DKind.Definition<"@DuplojsLangInvocation/reader", unknown>>;
16
+ export interface Reader<GenericDependencies extends ReaderDependencies = ReaderDependencies, GenericOutput extends unknown = unknown> extends DKind.Kind<typeof readerKind> {
17
+ dependencies: GenericDependencies;
18
+ run(ports: DCommon.SimplifyTopLevel<(GetAllPorts<GenericDependencies> extends infer InferredEntriesDependenciesValue extends DCommon.ObjectEntry ? {
19
+ [Entry in InferredEntriesDependenciesValue as Entry[0]]: Entry[1];
20
+ } : never) & ({
21
+ [Prop in keyof GenericDependencies as GenericDependencies[Prop] extends Reader ? Uncapitalize<Extract<Prop, string>> : never]?: GenericDependencies[Prop] extends Reader ? ReturnType<GenericDependencies[Prop]["run"]> : never;
22
+ })>): GenericOutput;
23
+ }
24
+ export declare function createReader<const GenericDependencies extends ReaderDependencies, GenericOutput extends unknown>(dependencies: GenericDependencies, read: (dependenciesValue: ReaderDependenciesValue<GenericDependencies>) => GenericOutput): Reader<GenericDependencies, GenericOutput>;
25
+ export declare function resolveReaders<GenericReaders extends Record<string, Reader>>(readers: GenericReaders, ports: DCommon.SimplifyTopLevel<DCommon.UnionToIntersection<{
26
+ [Prop in keyof GenericReaders]: GetAllPorts<GenericReaders[Prop]["dependencies"]> extends infer InferredEntriesDependenciesValue extends DCommon.ObjectEntry ? {
27
+ [Entry in InferredEntriesDependenciesValue as Entry[0]]: Entry[1];
28
+ } : never;
29
+ }[keyof GenericReaders]>>): ReaderDependenciesValue<GenericReaders>;
30
+ export {};
@@ -0,0 +1,29 @@
1
+ import { entries } from "../object/entries.mjs";
2
+ import { entry } from "../object/entry.mjs";
3
+ import { fromEntries } from "../object/fromEntries.mjs";
4
+ import { map } from "../array/map.mjs";
5
+ import { forward } from "../common/forward.mjs";
6
+ import { pipe } from "../common/pipe.mjs";
7
+ import { replace } from "../string/replace.mjs";
8
+ import { uncapitalize } from "../string/uncapitalize.mjs";
9
+ import { createKind } from "./kind.mjs";
10
+ //#region scripts/invocation/reader.ts
11
+ const readerKind = createKind("reader");
12
+ function formatPortName(value) {
13
+ return pipe(value, uncapitalize, replace(/Port$/, ""));
14
+ }
15
+ function createReader(dependencies, read) {
16
+ return {
17
+ dependencies,
18
+ run: (injectedDependencies) => read(pipe(forward(dependencies), entries, map(([key, value]) => {
19
+ const formattedKey = readerKind.has(value) ? uncapitalize(key) : formatPortName(key);
20
+ return entry(formattedKey, readerKind.has(value) && !injectedDependencies[formattedKey] ? value.run(injectedDependencies) : injectedDependencies[formattedKey]);
21
+ }), fromEntries)),
22
+ [readerKind.runTimeKey]: null
23
+ };
24
+ }
25
+ function resolveReaders(readers, ports) {
26
+ return pipe(readers, entries, map(([key, reader]) => entry(uncapitalize(key), reader.run(ports))), fromEntries);
27
+ }
28
+ //#endregion
29
+ export { createReader, readerKind, resolveReaders };
@@ -0,0 +1,31 @@
1
+ const require_callThen = require("../common/callThen.cjs");
2
+ const require_create = require("../either/left/create.cjs");
3
+ const require_is = require("../either/left/is.cjs");
4
+ const require_create$1 = require("../either/right/create.cjs");
5
+ //#region scripts/invocation/resolver.ts
6
+ const resolverKind = require("./kind.cjs").createKind("resolver");
7
+ function createResolver(value) {
8
+ function resolve(subscribers, whenError) {
9
+ return Promise.resolve().then(() => Object.values(subscribers).reduce((accumulator, element) => require_callThen.callThen(accumulator, (awaitedAccumulator) => {
10
+ if (require_is.isLeft(awaitedAccumulator)) return awaitedAccumulator;
11
+ return element(value);
12
+ }), null)).then((result) => {
13
+ if (require_is.isLeft(result)) return require_callThen.callThen(whenError(result, value), (output) => require_create.left("resolve-error", output));
14
+ return require_create$1.right("resolve-success", value);
15
+ });
16
+ }
17
+ function runAndResolve(theFunction, subscribers, whenError) {
18
+ return Promise.resolve().then(() => theFunction(value)).then((result) => {
19
+ if (require_is.isLeft(result)) return require_callThen.callThen(whenError(result, value), (output) => require_create.left("resolve-error", output));
20
+ return resolve(subscribers, whenError);
21
+ });
22
+ }
23
+ return () => ({
24
+ resolve,
25
+ runAndResolve,
26
+ [resolverKind.runTimeKey]: null
27
+ });
28
+ }
29
+ //#endregion
30
+ exports.createResolver = createResolver;
31
+ exports.resolverKind = resolverKind;
@@ -0,0 +1,14 @@
1
+ import * as DCommon from '../common';
2
+ import type * as DKind from '../kind';
3
+ import type * as DObject from '../object';
4
+ import * as DEither from '../either';
5
+ export declare const resolverKind: DKind.Handler<DKind.Definition<"@DuplojsLangInvocation/resolver", unknown>>;
6
+ export interface Resolver<GenericValue extends unknown = unknown, GenericSubscribers extends Record<string, (value: GenericValue) => unknown> = Record<string, (value: GenericValue) => unknown>> extends DKind.Kind<typeof resolverKind> {
7
+ runAndResolve<GenericOutput extends DCommon.MaybePromise<DEither.Right | DEither.Left | undefined | DCommon.EscapeVoid>, const GenericWrapperSubscribers extends GenericSubscribers, GenericOutputHandlerLeft extends unknown = never>(theFunction: (value: GenericValue) => GenericOutput, subscribers: GenericWrapperSubscribers, ...args: (DCommon.ContainExtends<Extract<Awaited<GenericOutput> | Awaited<ReturnType<DObject.Values<GenericWrapperSubscribers>>>, DEither.Left>, DEither.Left> extends true ? [
8
+ whenLeft: (result: Extract<Awaited<GenericOutput> | Awaited<ReturnType<DObject.Values<GenericWrapperSubscribers>>>, DEither.Left>, value: GenericValue) => GenericOutputHandlerLeft
9
+ ] : [])): Promise<(DCommon.IsNever<GenericOutputHandlerLeft> extends true ? never : DEither.Left<"resolve-error", Awaited<GenericOutputHandlerLeft>>) | DEither.Right<"resolve-success", GenericValue>>;
10
+ resolve<const GenericWrapperSubscribers extends GenericSubscribers, GenericOutputHandlerLeft extends unknown = never>(subscribers: GenericWrapperSubscribers, ...args: (DCommon.ContainExtends<Extract<Awaited<ReturnType<DObject.Values<GenericWrapperSubscribers>>>, DEither.Left>, DEither.Left> extends true ? [
11
+ whenLeft: (result: Extract<Awaited<ReturnType<DObject.Values<GenericWrapperSubscribers>>>, DEither.Left>, value: GenericValue) => GenericOutputHandlerLeft
12
+ ] : [])): Promise<(DCommon.IsNever<GenericOutputHandlerLeft> extends true ? never : DEither.Left<"resolve-error", Awaited<GenericOutputHandlerLeft>>) | DEither.Right<"resolve-success", GenericValue>>;
13
+ }
14
+ export declare function createResolver<const GenericValue extends unknown>(value: GenericValue): <GenericSubscribers extends (Record<string, (value: GenericValue) => unknown> | DCommon.AnyTuple<string>)>() => Resolver<GenericValue, GenericSubscribers extends readonly string[] ? Record<GenericSubscribers[number], (value: GenericValue) => unknown> : GenericSubscribers>;
@@ -0,0 +1,31 @@
1
+ import { callThen } from "../common/callThen.mjs";
2
+ import { left } from "../either/left/create.mjs";
3
+ import { isLeft } from "../either/left/is.mjs";
4
+ import { right } from "../either/right/create.mjs";
5
+ import { createKind } from "./kind.mjs";
6
+ //#region scripts/invocation/resolver.ts
7
+ const resolverKind = createKind("resolver");
8
+ function createResolver(value) {
9
+ function resolve(subscribers, whenError) {
10
+ return Promise.resolve().then(() => Object.values(subscribers).reduce((accumulator, element) => callThen(accumulator, (awaitedAccumulator) => {
11
+ if (isLeft(awaitedAccumulator)) return awaitedAccumulator;
12
+ return element(value);
13
+ }), null)).then((result) => {
14
+ if (isLeft(result)) return callThen(whenError(result, value), (output) => left("resolve-error", output));
15
+ return right("resolve-success", value);
16
+ });
17
+ }
18
+ function runAndResolve(theFunction, subscribers, whenError) {
19
+ return Promise.resolve().then(() => theFunction(value)).then((result) => {
20
+ if (isLeft(result)) return callThen(whenError(result, value), (output) => left("resolve-error", output));
21
+ return resolve(subscribers, whenError);
22
+ });
23
+ }
24
+ return () => ({
25
+ resolve,
26
+ runAndResolve,
27
+ [resolverKind.runTimeKey]: null
28
+ });
29
+ }
30
+ //#endregion
31
+ export { createResolver, resolverKind };
@@ -0,0 +1,8 @@
1
+ //#region scripts/invocation/signature.ts
2
+ const signatureKind = require("./kind.cjs").createKind("signature");
3
+ function signedFunction(name, theFunction) {
4
+ return signatureKind.setTo(theFunction, name);
5
+ }
6
+ //#endregion
7
+ exports.signatureKind = signatureKind;
8
+ exports.signedFunction = signedFunction;
@@ -0,0 +1,7 @@
1
+ import type * as DCommon from '../common';
2
+ import type * as DKind from '../kind';
3
+ export declare const signatureKind: DKind.Handler<DKind.Definition<"@DuplojsLangInvocation/signature", string>>;
4
+ export interface Signature<GenericName extends string = string> extends DKind.Kind<typeof signatureKind, GenericName> {
5
+ }
6
+ export type SignedFunction<GenericName extends string = string, GenericFunction extends DCommon.AnyFunction = DCommon.AnyFunction> = (Signature<GenericName> & GenericFunction);
7
+ export declare function signedFunction<GenericName extends string, GenericFunction extends DCommon.AnyFunction>(name: NoInfer<GenericName>, theFunction: NoInfer<GenericFunction>): SignedFunction<GenericName, GenericFunction>;
@@ -0,0 +1,8 @@
1
+ import { createKind } from "./kind.mjs";
2
+ //#region scripts/invocation/signature.ts
3
+ const signatureKind = createKind("signature");
4
+ function signedFunction(name, theFunction) {
5
+ return signatureKind.setTo(theFunction, name);
6
+ }
7
+ //#endregion
8
+ export { signatureKind, signedFunction };
@@ -4,15 +4,15 @@ const require_create$1 = require("../../either/right/create.cjs");
4
4
  const require_justExec = require("../../common/justExec.cjs");
5
5
  const require_memo = require("../../common/memo.cjs");
6
6
  const require_resultSymbol = require("../../dataStructure/common/resultSymbol.cjs");
7
- const require_error = require("../../dataStructure/common/error.cjs");
8
- const require_base = require("../../dataStructure/structure/base.cjs");
7
+ const require_base = require("../../dataStructure/common/error/base.cjs");
8
+ const require_base$1 = require("../../dataStructure/structure/base.cjs");
9
9
  const require_nonEncodableString = require("../../dataStructure/structure/defaults/nonEncodableString.cjs");
10
10
  const require_object = require("../../dataStructure/structure/defaults/object.cjs");
11
11
  const require_kind = require("../kind.cjs");
12
12
  //#region scripts/modeling/entity/base.ts
13
13
  const entityKind = require_kind.createKind("entity");
14
14
  const entityStructureKind = require_kind.createKind("entity-structure");
15
- const EntityStructure = require_base.createStructure(entityStructureKind, ({ init }) => (name, shape) => init({
15
+ const EntityStructure = require_base$1.createStructure(entityStructureKind, ({ init }) => (name, shape) => init({
16
16
  inner: require_memo.memo(() => require_object.ObjectStructure({
17
17
  ...shape(),
18
18
  [entityKind.runTimeKey]: require_nonEncodableString.NonEncodableStringStructure(name)
@@ -22,6 +22,7 @@ const EntityStructure = require_base.createStructure(entityStructureKind, ({ ini
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,
@@ -34,24 +35,24 @@ const EntityStructure = require_base.createStructure(entityStructureKind, ({ ini
34
35
  const [codecs] = args;
35
36
  return (value) => self.decodeMap(codecs, value);
36
37
  }
37
- const errorHandler = require_error.createGetErrorHandler();
38
+ const errorHandler = require_base.createGetErrorHandler();
38
39
  const [codecs, data] = args;
39
40
  const result = self.executeDecode(codecs.context.value, require_isSimple.isSimple(data) ? {
40
41
  ...data,
41
42
  [entityKind.runTimeKey]: name
42
43
  } : data, errorHandler);
43
- if (result instanceof Promise) return require_create.left("async-error", void 0);
44
+ if (result instanceof Promise) return require_create.left("async-error", new require_base.ErrorPromise());
44
45
  if (result === require_resultSymbol.ErrorSymbol) return require_create.left("map-error", errorHandler().createError());
45
46
  return require_create$1.right("map-success", result);
46
47
  },
47
48
  map: (self, data) => {
48
- const errorHandler = require_error.createGetErrorHandler();
49
+ const errorHandler = require_base.createGetErrorHandler();
49
50
  const formattedData = require_isSimple.isSimple(data) ? {
50
51
  ...data,
51
52
  [entityKind.runTimeKey]: name
52
53
  } : data;
53
54
  const result = self.executeCheck(formattedData, errorHandler);
54
- if (result instanceof Promise) return require_create.left("async-error", void 0);
55
+ if (result instanceof Promise) return require_create.left("async-error", new require_base.ErrorPromise());
55
56
  if (result === require_resultSymbol.ErrorSymbol) return require_create.left("map-error", errorHandler().createError());
56
57
  return require_create$1.right("map-success", formattedData);
57
58
  },
@@ -61,7 +62,7 @@ const EntityStructure = require_base.createStructure(entityStructureKind, ({ ini
61
62
  return (value) => self.asyncDecodeMap(codecs, value);
62
63
  }
63
64
  return require_justExec.justExec(async () => {
64
- const errorHandler = require_error.createGetErrorHandler();
65
+ const errorHandler = require_base.createGetErrorHandler();
65
66
  const [codecs, data] = args;
66
67
  const result = await self.executeDecode(codecs.context.value, require_isSimple.isSimple(data) ? {
67
68
  ...data,
@@ -71,15 +72,25 @@ const EntityStructure = require_base.createStructure(entityStructureKind, ({ ini
71
72
  return require_create$1.right("map-success", result);
72
73
  });
73
74
  },
74
- asyncMap: (self, data) => require_justExec.justExec(async () => {
75
- const errorHandler = require_error.createGetErrorHandler();
75
+ asyncMap: async (self, data) => {
76
+ const errorHandler = require_base.createGetErrorHandler();
76
77
  const formattedData = require_isSimple.isSimple(data) ? {
77
78
  ...data,
78
79
  [entityKind.runTimeKey]: name
79
80
  } : data;
80
81
  if (await self.executeCheck(formattedData, errorHandler) === require_resultSymbol.ErrorSymbol) return require_create.left("map-error", errorHandler().createError());
81
82
  return require_create$1.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
  exports.EntityStructure = EntityStructure;