@duplojs/agents-kit 0.0.0-stage → 0.1.0-beta.10

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 (929) hide show
  1. package/README.md +81 -2
  2. package/dist/bin/index.d.ts +2 -0
  3. package/dist/bin/index.mjs +7 -0
  4. package/dist/bin/packagePath.d.ts +2 -0
  5. package/dist/bin/packagePath.mjs +12 -0
  6. package/dist/bin/setup/index.d.ts +12 -0
  7. package/dist/bin/setup/index.mjs +33 -0
  8. package/dist/bin/setup/instructions.d.ts +8 -0
  9. package/dist/bin/setup/instructions.mjs +27 -0
  10. package/dist/bin/skills/index.d.ts +5 -0
  11. package/dist/bin/skills/index.mjs +11 -0
  12. package/dist/bin/skills/install.d.ts +2 -0
  13. package/dist/bin/skills/install.mjs +25 -0
  14. package/dist/bin/skills/skill.d.ts +35 -0
  15. package/dist/bin/skills/skill.mjs +60 -0
  16. package/dist/bin/skills/update.d.ts +2 -0
  17. package/dist/bin/skills/update.mjs +19 -0
  18. package/dist/index.cjs +1 -0
  19. package/dist/index.d.ts +1 -0
  20. package/dist/index.mjs +0 -0
  21. package/docs/API/10-lang/10-array/10-at.ts +65 -0
  22. package/docs/API/10-lang/10-array/10-chunk.ts +42 -0
  23. package/docs/API/10-lang/10-array/10-coalescing.ts +20 -0
  24. package/docs/API/10-lang/10-array/10-concat.ts +34 -0
  25. package/docs/API/10-lang/10-array/10-copyWithin.ts +34 -0
  26. package/docs/API/10-lang/10-array/10-every.ts +25 -0
  27. package/docs/API/10-lang/10-array/10-fill.ts +34 -0
  28. package/docs/API/10-lang/10-array/10-fillAll.ts +34 -0
  29. package/docs/API/10-lang/10-array/10-filter.ts +43 -0
  30. package/docs/API/10-lang/10-array/10-find.ts +33 -0
  31. package/docs/API/10-lang/10-array/10-findAndReplace.ts +35 -0
  32. package/docs/API/10-lang/10-array/10-findAndSpliceDelete.ts +35 -0
  33. package/docs/API/10-lang/10-array/10-findAndSpliceInsert.ts +35 -0
  34. package/docs/API/10-lang/10-array/10-findAndSpliceReplace.ts +24 -0
  35. package/docs/API/10-lang/10-array/10-findDuplicates.ts +19 -0
  36. package/docs/API/10-lang/10-array/10-findIndex.ts +25 -0
  37. package/docs/API/10-lang/10-array/10-findLast.ts +33 -0
  38. package/docs/API/10-lang/10-array/10-findLastIndex.ts +25 -0
  39. package/docs/API/10-lang/10-array/10-first.ts +21 -0
  40. package/docs/API/10-lang/10-array/10-flat.ts +22 -0
  41. package/docs/API/10-lang/10-array/10-flatMap.ts +24 -0
  42. package/docs/API/10-lang/10-array/10-from.ts +25 -0
  43. package/docs/API/10-lang/10-array/10-group.ts +27 -0
  44. package/docs/API/10-lang/10-array/10-groupOutput.ts +30 -0
  45. package/docs/API/10-lang/10-array/10-includes.ts +24 -0
  46. package/docs/API/10-lang/10-array/10-indexOf.ts +24 -0
  47. package/docs/API/10-lang/10-array/10-insert.ts +34 -0
  48. package/docs/API/10-lang/10-array/10-is.ts +29 -0
  49. package/docs/API/10-lang/10-array/10-isLastIndex.ts +24 -0
  50. package/docs/API/10-lang/10-array/10-last.ts +21 -0
  51. package/docs/API/10-lang/10-array/10-lastIndexOf.ts +24 -0
  52. package/docs/API/10-lang/10-array/10-length.ts +28 -0
  53. package/docs/API/10-lang/10-array/10-lengthEqual.ts +39 -0
  54. package/docs/API/10-lang/10-array/10-map.ts +34 -0
  55. package/docs/API/10-lang/10-array/10-maxElements.ts +44 -0
  56. package/docs/API/10-lang/10-array/10-minElements.ts +44 -0
  57. package/docs/API/10-lang/10-array/10-notIncludes.ts +24 -0
  58. package/docs/API/10-lang/10-array/10-pop.ts +23 -0
  59. package/docs/API/10-lang/10-array/10-prepend.ts +34 -0
  60. package/docs/API/10-lang/10-array/10-push.ts +34 -0
  61. package/docs/API/10-lang/10-array/10-reduce.ts +28 -0
  62. package/docs/API/10-lang/10-array/10-reduceFrom.ts +16 -0
  63. package/docs/API/10-lang/10-array/10-reduceRight.ts +28 -0
  64. package/docs/API/10-lang/10-array/10-reverse.ts +25 -0
  65. package/docs/API/10-lang/10-array/10-select.ts +26 -0
  66. package/docs/API/10-lang/10-array/10-set.ts +24 -0
  67. package/docs/API/10-lang/10-array/10-shift.ts +23 -0
  68. package/docs/API/10-lang/10-array/10-slice.ts +24 -0
  69. package/docs/API/10-lang/10-array/10-some.ts +25 -0
  70. package/docs/API/10-lang/10-array/10-sort.ts +34 -0
  71. package/docs/API/10-lang/10-array/10-spliceDelete.ts +34 -0
  72. package/docs/API/10-lang/10-array/10-spliceInsert.ts +34 -0
  73. package/docs/API/10-lang/10-array/10-spliceReplace.ts +24 -0
  74. package/docs/API/10-lang/10-array/10-unshift.ts +34 -0
  75. package/docs/API/10-lang/10-array/index.llms.md +220 -0
  76. package/docs/API/10-lang/10-array/index.md +3 -0
  77. package/docs/API/10-lang/10-chrono/10-addDays.ts +25 -0
  78. package/docs/API/10-lang/10-chrono/10-addHours.ts +25 -0
  79. package/docs/API/10-lang/10-chrono/10-addMilliseconds.ts +25 -0
  80. package/docs/API/10-lang/10-chrono/10-addMinutes.ts +25 -0
  81. package/docs/API/10-lang/10-chrono/10-addMonths.ts +25 -0
  82. package/docs/API/10-lang/10-chrono/10-addSeconds.ts +25 -0
  83. package/docs/API/10-lang/10-chrono/10-addTime.ts +38 -0
  84. package/docs/API/10-lang/10-chrono/10-addWeeks.ts +25 -0
  85. package/docs/API/10-lang/10-chrono/10-addYears.ts +25 -0
  86. package/docs/API/10-lang/10-chrono/10-applyTimezone.ts +29 -0
  87. package/docs/API/10-lang/10-chrono/10-betweenThanDate.ts +27 -0
  88. package/docs/API/10-lang/10-chrono/10-betweenThanOrEqualDate.ts +27 -0
  89. package/docs/API/10-lang/10-chrono/10-betweenThanOrEqualTime.ts +27 -0
  90. package/docs/API/10-lang/10-chrono/10-betweenThanTime.ts +27 -0
  91. package/docs/API/10-lang/10-chrono/10-closestTo.ts +45 -0
  92. package/docs/API/10-lang/10-chrono/10-computeTime.ts +35 -0
  93. package/docs/API/10-lang/10-chrono/10-createDate.ts +122 -0
  94. package/docs/API/10-lang/10-chrono/10-createDateOrThrow.ts +39 -0
  95. package/docs/API/10-lang/10-chrono/10-createTime.ts +86 -0
  96. package/docs/API/10-lang/10-chrono/10-createTimeOrThrow.ts +28 -0
  97. package/docs/API/10-lang/10-chrono/10-eachDate.ts +67 -0
  98. package/docs/API/10-lang/10-chrono/10-equalDate.ts +26 -0
  99. package/docs/API/10-lang/10-chrono/10-equalTime.ts +26 -0
  100. package/docs/API/10-lang/10-chrono/10-formatDate.ts +43 -0
  101. package/docs/API/10-lang/10-chrono/10-formatTime.ts +37 -0
  102. package/docs/API/10-lang/10-chrono/10-getDayOfMonth.ts +37 -0
  103. package/docs/API/10-lang/10-chrono/10-getDayOfWeek.ts +30 -0
  104. package/docs/API/10-lang/10-chrono/10-getDayOfYear.ts +28 -0
  105. package/docs/API/10-lang/10-chrono/10-getDifference.ts +29 -0
  106. package/docs/API/10-lang/10-chrono/10-getFirstDayOfMonth.ts +24 -0
  107. package/docs/API/10-lang/10-chrono/10-getFirstDayOfWeek.ts +24 -0
  108. package/docs/API/10-lang/10-chrono/10-getHour.ts +28 -0
  109. package/docs/API/10-lang/10-chrono/10-getLastDayOfMonth.ts +24 -0
  110. package/docs/API/10-lang/10-chrono/10-getLastDayOfWeek.ts +24 -0
  111. package/docs/API/10-lang/10-chrono/10-getMilliseconds.ts +24 -0
  112. package/docs/API/10-lang/10-chrono/10-getMinute.ts +27 -0
  113. package/docs/API/10-lang/10-chrono/10-getMonth.ts +27 -0
  114. package/docs/API/10-lang/10-chrono/10-getSecond.ts +27 -0
  115. package/docs/API/10-lang/10-chrono/10-getTimezoneOffset.ts +28 -0
  116. package/docs/API/10-lang/10-chrono/10-getWeekOfYear.ts +27 -0
  117. package/docs/API/10-lang/10-chrono/10-getYear.ts +27 -0
  118. package/docs/API/10-lang/10-chrono/10-greaterThanDate.ts +26 -0
  119. package/docs/API/10-lang/10-chrono/10-greaterThanOrEqualDate.ts +26 -0
  120. package/docs/API/10-lang/10-chrono/10-greaterThanOrEqualTime.ts +26 -0
  121. package/docs/API/10-lang/10-chrono/10-greaterThanTime.ts +26 -0
  122. package/docs/API/10-lang/10-chrono/10-isDate.ts +36 -0
  123. package/docs/API/10-lang/10-chrono/10-isSafeTimeValue.ts +19 -0
  124. package/docs/API/10-lang/10-chrono/10-isSafeTimestamp.ts +19 -0
  125. package/docs/API/10-lang/10-chrono/10-isSerializedTheDate.ts +41 -0
  126. package/docs/API/10-lang/10-chrono/10-isSerializedTheTime.ts +41 -0
  127. package/docs/API/10-lang/10-chrono/10-isTime.ts +36 -0
  128. package/docs/API/10-lang/10-chrono/10-lessThanDate.ts +26 -0
  129. package/docs/API/10-lang/10-chrono/10-lessThanOrEqualDate.ts +26 -0
  130. package/docs/API/10-lang/10-chrono/10-lessThanOrEqualTime.ts +26 -0
  131. package/docs/API/10-lang/10-chrono/10-lessThanTime.ts +26 -0
  132. package/docs/API/10-lang/10-chrono/10-makeSafeTimeValue.ts +19 -0
  133. package/docs/API/10-lang/10-chrono/10-makeSafeTimestamp.ts +19 -0
  134. package/docs/API/10-lang/10-chrono/10-maxDate.ts +19 -0
  135. package/docs/API/10-lang/10-chrono/10-maxTime.ts +19 -0
  136. package/docs/API/10-lang/10-chrono/10-minDate.ts +19 -0
  137. package/docs/API/10-lang/10-chrono/10-minTime.ts +19 -0
  138. package/docs/API/10-lang/10-chrono/10-now.ts +13 -0
  139. package/docs/API/10-lang/10-chrono/10-round.ts +41 -0
  140. package/docs/API/10-lang/10-chrono/10-serialize.ts +23 -0
  141. package/docs/API/10-lang/10-chrono/10-sortDates.ts +30 -0
  142. package/docs/API/10-lang/10-chrono/10-sortTimes.ts +29 -0
  143. package/docs/API/10-lang/10-chrono/10-subtractDays.ts +25 -0
  144. package/docs/API/10-lang/10-chrono/10-subtractHours.ts +25 -0
  145. package/docs/API/10-lang/10-chrono/10-subtractMilliseconds.ts +25 -0
  146. package/docs/API/10-lang/10-chrono/10-subtractMinutes.ts +25 -0
  147. package/docs/API/10-lang/10-chrono/10-subtractMonths.ts +25 -0
  148. package/docs/API/10-lang/10-chrono/10-subtractSeconds.ts +25 -0
  149. package/docs/API/10-lang/10-chrono/10-subtractTime.ts +38 -0
  150. package/docs/API/10-lang/10-chrono/10-subtractWeeks.ts +25 -0
  151. package/docs/API/10-lang/10-chrono/10-subtractYears.ts +25 -0
  152. package/docs/API/10-lang/10-chrono/10-toDateISOString.ts +17 -0
  153. package/docs/API/10-lang/10-chrono/10-toNative.ts +25 -0
  154. package/docs/API/10-lang/10-chrono/10-toTimeValue.ts +17 -0
  155. package/docs/API/10-lang/10-chrono/10-toTimestamp.ts +17 -0
  156. package/docs/API/10-lang/10-chrono/10-today.ts +13 -0
  157. package/docs/API/10-lang/10-chrono/10-tomorrow.ts +13 -0
  158. package/docs/API/10-lang/10-chrono/10-yesterday.ts +13 -0
  159. package/docs/API/10-lang/10-chrono/index.llms.md +332 -0
  160. package/docs/API/10-lang/10-chrono/index.md +3 -0
  161. package/docs/API/10-lang/10-common/10-and.ts +51 -0
  162. package/docs/API/10-lang/10-common/10-asserts.ts +13 -0
  163. package/docs/API/10-lang/10-common/10-asyncInnerPipe.ts +23 -0
  164. package/docs/API/10-lang/10-common/10-asyncLoop.ts +23 -0
  165. package/docs/API/10-lang/10-common/10-asyncLoopAccumulator.ts +40 -0
  166. package/docs/API/10-lang/10-common/10-asyncPipe.ts +21 -0
  167. package/docs/API/10-lang/10-common/10-callThen.ts +22 -0
  168. package/docs/API/10-lang/10-common/10-cast.ts +16 -0
  169. package/docs/API/10-lang/10-common/10-clone.ts +12 -0
  170. package/docs/API/10-lang/10-common/10-createAsyncRetry.ts +34 -0
  171. package/docs/API/10-lang/10-common/10-createBuilder.ts +19 -0
  172. package/docs/API/10-lang/10-common/10-createEnum.ts +25 -0
  173. package/docs/API/10-lang/10-common/10-createExternalPromise.ts +13 -0
  174. package/docs/API/10-lang/10-common/10-createFormData.ts +16 -0
  175. package/docs/API/10-lang/10-common/10-createInterpolation.ts +12 -0
  176. package/docs/API/10-lang/10-common/10-createQueue.ts +17 -0
  177. package/docs/API/10-lang/10-common/10-createTransformer.ts +16 -0
  178. package/docs/API/10-lang/10-common/10-detachObjectMethod.ts +20 -0
  179. package/docs/API/10-lang/10-common/10-equal.ts +37 -0
  180. package/docs/API/10-lang/10-common/10-escapeRegExp.ts +11 -0
  181. package/docs/API/10-lang/10-common/10-falsy.ts +31 -0
  182. package/docs/API/10-lang/10-common/10-forward.ts +11 -0
  183. package/docs/API/10-lang/10-common/10-forwardAsserts.ts +17 -0
  184. package/docs/API/10-lang/10-common/10-forwardLog.ts +11 -0
  185. package/docs/API/10-lang/10-common/10-infer.ts +16 -0
  186. package/docs/API/10-lang/10-common/10-innerPipe.ts +23 -0
  187. package/docs/API/10-lang/10-common/10-instanceOf.ts +34 -0
  188. package/docs/API/10-lang/10-common/10-isType.ts +35 -0
  189. package/docs/API/10-lang/10-common/10-justExec.ts +28 -0
  190. package/docs/API/10-lang/10-common/10-justReturn.ts +19 -0
  191. package/docs/API/10-lang/10-common/10-loop.ts +18 -0
  192. package/docs/API/10-lang/10-common/10-loopAccumulator.ts +35 -0
  193. package/docs/API/10-lang/10-common/10-loopAccumulatorFrom.ts +29 -0
  194. package/docs/API/10-lang/10-common/10-memo.ts +12 -0
  195. package/docs/API/10-lang/10-common/10-memoObject.ts +11 -0
  196. package/docs/API/10-lang/10-common/10-memoPromise.ts +16 -0
  197. package/docs/API/10-lang/10-common/10-or.ts +43 -0
  198. package/docs/API/10-lang/10-common/10-pipe.ts +21 -0
  199. package/docs/API/10-lang/10-common/10-pipeCall.ts +20 -0
  200. package/docs/API/10-lang/10-common/10-prepareAsyncPipe.ts +20 -0
  201. package/docs/API/10-lang/10-common/10-preparePipe.ts +20 -0
  202. package/docs/API/10-lang/10-common/10-promiseAll.ts +16 -0
  203. package/docs/API/10-lang/10-common/10-promiseObject.ts +22 -0
  204. package/docs/API/10-lang/10-common/10-removeConstraint.ts +13 -0
  205. package/docs/API/10-lang/10-common/10-shameOnYou.ts +20 -0
  206. package/docs/API/10-lang/10-common/10-simpleClone.ts +12 -0
  207. package/docs/API/10-lang/10-common/10-stringToBytes.ts +16 -0
  208. package/docs/API/10-lang/10-common/10-stringToMillisecond.ts +17 -0
  209. package/docs/API/10-lang/10-common/10-tap.ts +28 -0
  210. package/docs/API/10-lang/10-common/10-timeout.ts +11 -0
  211. package/docs/API/10-lang/10-common/10-toCurriedPredicate.ts +28 -0
  212. package/docs/API/10-lang/10-common/10-toJSON.ts +15 -0
  213. package/docs/API/10-lang/10-common/10-toNative.ts +15 -0
  214. package/docs/API/10-lang/10-common/10-toRegExp.ts +17 -0
  215. package/docs/API/10-lang/10-common/10-transformer.ts +21 -0
  216. package/docs/API/10-lang/10-common/10-truthy.ts +31 -0
  217. package/docs/API/10-lang/10-common/10-useAsyncRetry.ts +31 -0
  218. package/docs/API/10-lang/10-common/10-when.ts +27 -0
  219. package/docs/API/10-lang/10-common/10-whenElse.ts +28 -0
  220. package/docs/API/10-lang/10-common/10-whenNot.ts +57 -0
  221. package/docs/API/10-lang/10-common/index.llms.md +244 -0
  222. package/docs/API/10-lang/10-common/index.md +3 -0
  223. package/docs/API/10-lang/10-dataStructure/10-absolutePath.ts +25 -0
  224. package/docs/API/10-lang/10-dataStructure/10-allowedCharacters.ts +25 -0
  225. package/docs/API/10-lang/10-dataStructure/10-array.ts +23 -0
  226. package/docs/API/10-lang/10-dataStructure/10-arrayLengthEqual.ts +25 -0
  227. package/docs/API/10-lang/10-dataStructure/10-betweenThan.ts +25 -0
  228. package/docs/API/10-lang/10-dataStructure/10-betweenThanOrEqual.ts +25 -0
  229. package/docs/API/10-lang/10-dataStructure/10-bigint.ts +22 -0
  230. package/docs/API/10-lang/10-dataStructure/10-boolean.ts +22 -0
  231. package/docs/API/10-lang/10-dataStructure/10-createCodec.ts +45 -0
  232. package/docs/API/10-lang/10-dataStructure/10-createCodecs.ts +134 -0
  233. package/docs/API/10-lang/10-dataStructure/10-createErrorInterpreter.ts +74 -0
  234. package/docs/API/10-lang/10-dataStructure/10-date.ts +23 -0
  235. package/docs/API/10-lang/10-dataStructure/10-email.ts +25 -0
  236. package/docs/API/10-lang/10-dataStructure/10-endsWith.ts +24 -0
  237. package/docs/API/10-lang/10-dataStructure/10-even.ts +25 -0
  238. package/docs/API/10-lang/10-dataStructure/10-extend.ts +27 -0
  239. package/docs/API/10-lang/10-dataStructure/10-greaterThan.ts +25 -0
  240. package/docs/API/10-lang/10-dataStructure/10-greaterThanOrEqual.ts +25 -0
  241. package/docs/API/10-lang/10-dataStructure/10-include.ts +24 -0
  242. package/docs/API/10-lang/10-dataStructure/10-integer.ts +25 -0
  243. package/docs/API/10-lang/10-dataStructure/10-isNullStructure.ts +12 -0
  244. package/docs/API/10-lang/10-dataStructure/10-isNullable.ts +12 -0
  245. package/docs/API/10-lang/10-dataStructure/10-isOptional.ts +12 -0
  246. package/docs/API/10-lang/10-dataStructure/10-isUndefinedStructure.ts +12 -0
  247. package/docs/API/10-lang/10-dataStructure/10-lazy.ts +23 -0
  248. package/docs/API/10-lang/10-dataStructure/10-lessThan.ts +25 -0
  249. package/docs/API/10-lang/10-dataStructure/10-lessThanOrEqual.ts +25 -0
  250. package/docs/API/10-lang/10-dataStructure/10-literal.ts +19 -0
  251. package/docs/API/10-lang/10-dataStructure/10-maxCharacters.ts +25 -0
  252. package/docs/API/10-lang/10-dataStructure/10-maxElements.ts +25 -0
  253. package/docs/API/10-lang/10-dataStructure/10-minCharacters.ts +25 -0
  254. package/docs/API/10-lang/10-dataStructure/10-minElements.ts +25 -0
  255. package/docs/API/10-lang/10-dataStructure/10-multipleOf.ts +25 -0
  256. package/docs/API/10-lang/10-dataStructure/10-negative.ts +25 -0
  257. package/docs/API/10-lang/10-dataStructure/10-notEmpty.ts +25 -0
  258. package/docs/API/10-lang/10-dataStructure/10-notZero.ts +25 -0
  259. package/docs/API/10-lang/10-dataStructure/10-null.ts +22 -0
  260. package/docs/API/10-lang/10-dataStructure/10-nullable.ts +19 -0
  261. package/docs/API/10-lang/10-dataStructure/10-number.ts +22 -0
  262. package/docs/API/10-lang/10-dataStructure/10-numberInString.ts +25 -0
  263. package/docs/API/10-lang/10-dataStructure/10-object.ts +25 -0
  264. package/docs/API/10-lang/10-dataStructure/10-odd.ts +25 -0
  265. package/docs/API/10-lang/10-dataStructure/10-optional.ts +19 -0
  266. package/docs/API/10-lang/10-dataStructure/10-partial.ts +23 -0
  267. package/docs/API/10-lang/10-dataStructure/10-path.ts +25 -0
  268. package/docs/API/10-lang/10-dataStructure/10-positive.ts +25 -0
  269. package/docs/API/10-lang/10-dataStructure/10-record.ts +22 -0
  270. package/docs/API/10-lang/10-dataStructure/10-refine.ts +27 -0
  271. package/docs/API/10-lang/10-dataStructure/10-regex.ts +24 -0
  272. package/docs/API/10-lang/10-dataStructure/10-required.ts +21 -0
  273. package/docs/API/10-lang/10-dataStructure/10-safe.ts +25 -0
  274. package/docs/API/10-lang/10-dataStructure/10-segmentPath.ts +25 -0
  275. package/docs/API/10-lang/10-dataStructure/10-startsWith.ts +24 -0
  276. package/docs/API/10-lang/10-dataStructure/10-strictNegative.ts +25 -0
  277. package/docs/API/10-lang/10-dataStructure/10-strictPositive.ts +25 -0
  278. package/docs/API/10-lang/10-dataStructure/10-string.ts +22 -0
  279. package/docs/API/10-lang/10-dataStructure/10-stringLengthEqual.ts +25 -0
  280. package/docs/API/10-lang/10-dataStructure/10-time.ts +23 -0
  281. package/docs/API/10-lang/10-dataStructure/10-trimmed.ts +25 -0
  282. package/docs/API/10-lang/10-dataStructure/10-typeStructureIdentifier.ts +33 -0
  283. package/docs/API/10-lang/10-dataStructure/10-undefined.ts +22 -0
  284. package/docs/API/10-lang/10-dataStructure/10-union.ts +24 -0
  285. package/docs/API/10-lang/10-dataStructure/10-unwrapLazy.ts +17 -0
  286. package/docs/API/10-lang/10-dataStructure/10-url.ts +25 -0
  287. package/docs/API/10-lang/10-dataStructure/10-uuid.ts +25 -0
  288. package/docs/API/10-lang/10-dataStructure/index.llms.md +264 -0
  289. package/docs/API/10-lang/10-dataStructure/index.md +3 -0
  290. package/docs/API/10-lang/10-either/10-asyncGroup.ts +44 -0
  291. package/docs/API/10-lang/10-either/10-asyncSafeCallback.ts +25 -0
  292. package/docs/API/10-lang/10-either/10-error.ts +12 -0
  293. package/docs/API/10-lang/10-either/10-expect.ts +13 -0
  294. package/docs/API/10-lang/10-either/10-extractErrorInLeft.ts +45 -0
  295. package/docs/API/10-lang/10-either/10-fail.ts +12 -0
  296. package/docs/API/10-lang/10-either/10-forwardAssertsSelection.ts +28 -0
  297. package/docs/API/10-lang/10-either/10-group.ts +58 -0
  298. package/docs/API/10-lang/10-either/10-hasInformation.ts +30 -0
  299. package/docs/API/10-lang/10-either/10-isLeft.ts +25 -0
  300. package/docs/API/10-lang/10-either/10-isRight.ts +25 -0
  301. package/docs/API/10-lang/10-either/10-isSelected.ts +41 -0
  302. package/docs/API/10-lang/10-either/10-keepAsRightByInformation.ts +29 -0
  303. package/docs/API/10-lang/10-either/10-keepAsRightSelection.ts +23 -0
  304. package/docs/API/10-lang/10-either/10-left.ts +13 -0
  305. package/docs/API/10-lang/10-either/10-matchInformation.ts +28 -0
  306. package/docs/API/10-lang/10-either/10-matchInformationCombination.ts +61 -0
  307. package/docs/API/10-lang/10-either/10-matchInformationCombinationOtherwise.ts +62 -0
  308. package/docs/API/10-lang/10-either/10-matchInformationOtherwise.ts +29 -0
  309. package/docs/API/10-lang/10-either/10-none.ts +12 -0
  310. package/docs/API/10-lang/10-either/10-ok.ts +12 -0
  311. package/docs/API/10-lang/10-either/10-result.ts +18 -0
  312. package/docs/API/10-lang/10-either/10-rewriteInformation.ts +24 -0
  313. package/docs/API/10-lang/10-either/10-right.ts +13 -0
  314. package/docs/API/10-lang/10-either/10-rightAsyncPipe.ts +70 -0
  315. package/docs/API/10-lang/10-either/10-rightPipe.ts +72 -0
  316. package/docs/API/10-lang/10-either/10-safeCallback.ts +29 -0
  317. package/docs/API/10-lang/10-either/10-some.ts +12 -0
  318. package/docs/API/10-lang/10-either/10-success.ts +12 -0
  319. package/docs/API/10-lang/10-either/10-toMaybe.ts +53 -0
  320. package/docs/API/10-lang/10-either/10-unwrapByInformation.ts +20 -0
  321. package/docs/API/10-lang/10-either/10-unwrapByInformationOrThrow.ts +19 -0
  322. package/docs/API/10-lang/10-either/10-unwrapLeft.ts +14 -0
  323. package/docs/API/10-lang/10-either/10-unwrapLeftOrThrow.ts +17 -0
  324. package/docs/API/10-lang/10-either/10-unwrapOr.ts +17 -0
  325. package/docs/API/10-lang/10-either/10-unwrapOtherwise.ts +20 -0
  326. package/docs/API/10-lang/10-either/10-unwrapRight.ts +14 -0
  327. package/docs/API/10-lang/10-either/10-unwrapRightOrThrow.ts +17 -0
  328. package/docs/API/10-lang/10-either/10-unwrapSelection.ts +26 -0
  329. package/docs/API/10-lang/10-either/10-unwrapSelectionOrThrow.ts +19 -0
  330. package/docs/API/10-lang/10-either/10-whenHasInformation.ts +36 -0
  331. package/docs/API/10-lang/10-either/10-whenHasInformationOtherwise.ts +29 -0
  332. package/docs/API/10-lang/10-either/10-whenIsLeft.ts +20 -0
  333. package/docs/API/10-lang/10-either/10-whenIsLeftOtherwise.ts +27 -0
  334. package/docs/API/10-lang/10-either/10-whenIsRight.ts +20 -0
  335. package/docs/API/10-lang/10-either/10-whenIsRightOtherwise.ts +26 -0
  336. package/docs/API/10-lang/10-either/10-whenIsSelected.ts +33 -0
  337. package/docs/API/10-lang/10-either/10-whenIsSelectedOtherwise.ts +35 -0
  338. package/docs/API/10-lang/10-either/index.llms.md +196 -0
  339. package/docs/API/10-lang/10-either/index.md +3 -0
  340. package/docs/API/10-lang/10-generator/10-asyncChunk.ts +55 -0
  341. package/docs/API/10-lang/10-generator/10-asyncConcat.ts +43 -0
  342. package/docs/API/10-lang/10-generator/10-asyncFilter.ts +41 -0
  343. package/docs/API/10-lang/10-generator/10-asyncFlat.ts +37 -0
  344. package/docs/API/10-lang/10-generator/10-asyncGroup.ts +65 -0
  345. package/docs/API/10-lang/10-generator/10-asyncLoop.ts +50 -0
  346. package/docs/API/10-lang/10-generator/10-asyncLoopAccumulator.ts +40 -0
  347. package/docs/API/10-lang/10-generator/10-asyncMap.ts +48 -0
  348. package/docs/API/10-lang/10-generator/10-asyncReduce.ts +63 -0
  349. package/docs/API/10-lang/10-generator/10-chunk.ts +44 -0
  350. package/docs/API/10-lang/10-generator/10-concat.ts +37 -0
  351. package/docs/API/10-lang/10-generator/10-createExternalAsyncGenerator.ts +29 -0
  352. package/docs/API/10-lang/10-generator/10-execute.ts +44 -0
  353. package/docs/API/10-lang/10-generator/10-filter.ts +35 -0
  354. package/docs/API/10-lang/10-generator/10-flat.ts +25 -0
  355. package/docs/API/10-lang/10-generator/10-group.ts +44 -0
  356. package/docs/API/10-lang/10-generator/10-groupOutput.ts +48 -0
  357. package/docs/API/10-lang/10-generator/10-loop.ts +46 -0
  358. package/docs/API/10-lang/10-generator/10-loopAccumulator.ts +33 -0
  359. package/docs/API/10-lang/10-generator/10-loopAccumulatorFrom.ts +30 -0
  360. package/docs/API/10-lang/10-generator/10-map.ts +35 -0
  361. package/docs/API/10-lang/10-generator/10-reduce.ts +51 -0
  362. package/docs/API/10-lang/10-generator/10-reduceFrom.ts +30 -0
  363. package/docs/API/10-lang/10-generator/index.llms.md +96 -0
  364. package/docs/API/10-lang/10-generator/index.md +3 -0
  365. package/docs/API/10-lang/10-number/10-betweenThan.ts +43 -0
  366. package/docs/API/10-lang/10-number/10-betweenThanOrEqual.ts +43 -0
  367. package/docs/API/10-lang/10-number/10-greaterThan.ts +35 -0
  368. package/docs/API/10-lang/10-number/10-greaterThanOrEqual.ts +35 -0
  369. package/docs/API/10-lang/10-number/10-isEven.ts +33 -0
  370. package/docs/API/10-lang/10-number/10-isInteger.ts +33 -0
  371. package/docs/API/10-lang/10-number/10-isMultipleOf.ts +35 -0
  372. package/docs/API/10-lang/10-number/10-isNegative.ts +33 -0
  373. package/docs/API/10-lang/10-number/10-isNotZero.ts +33 -0
  374. package/docs/API/10-lang/10-number/10-isOdd.ts +33 -0
  375. package/docs/API/10-lang/10-number/10-isPositive.ts +33 -0
  376. package/docs/API/10-lang/10-number/10-isSafe.ts +33 -0
  377. package/docs/API/10-lang/10-number/10-isStrictNegative.ts +34 -0
  378. package/docs/API/10-lang/10-number/10-isStrictPositive.ts +33 -0
  379. package/docs/API/10-lang/10-number/10-lessThan.ts +35 -0
  380. package/docs/API/10-lang/10-number/10-lessThanOrEqual.ts +35 -0
  381. package/docs/API/10-lang/10-number/10-max.ts +19 -0
  382. package/docs/API/10-lang/10-number/10-maxOf.ts +19 -0
  383. package/docs/API/10-lang/10-number/10-min.ts +19 -0
  384. package/docs/API/10-lang/10-number/10-minOf.ts +19 -0
  385. package/docs/API/10-lang/10-number/10-sort.ts +19 -0
  386. package/docs/API/10-lang/10-number/10-sum.ts +19 -0
  387. package/docs/API/10-lang/10-number/index.llms.md +92 -0
  388. package/docs/API/10-lang/10-number/index.md +3 -0
  389. package/docs/API/10-lang/10-object/10-assign.ts +41 -0
  390. package/docs/API/10-lang/10-object/10-countKeys.ts +15 -0
  391. package/docs/API/10-lang/10-object/10-deepOverride.ts +35 -0
  392. package/docs/API/10-lang/10-object/10-discriminate.ts +102 -0
  393. package/docs/API/10-lang/10-object/10-discriminateEntryKey.ts +43 -0
  394. package/docs/API/10-lang/10-object/10-discriminateEntryValue.ts +44 -0
  395. package/docs/API/10-lang/10-object/10-entries.ts +19 -0
  396. package/docs/API/10-lang/10-object/10-entry.ts +17 -0
  397. package/docs/API/10-lang/10-object/10-fromEntries.ts +23 -0
  398. package/docs/API/10-lang/10-object/10-getDeepProperty.ts +26 -0
  399. package/docs/API/10-lang/10-object/10-getProperty.ts +24 -0
  400. package/docs/API/10-lang/10-object/10-hasKeys.ts +43 -0
  401. package/docs/API/10-lang/10-object/10-isSimple.ts +38 -0
  402. package/docs/API/10-lang/10-object/10-keys.ts +19 -0
  403. package/docs/API/10-lang/10-object/10-omit.ts +39 -0
  404. package/docs/API/10-lang/10-object/10-override.ts +24 -0
  405. package/docs/API/10-lang/10-object/10-pick.ts +41 -0
  406. package/docs/API/10-lang/10-object/10-to.ts +40 -0
  407. package/docs/API/10-lang/10-object/10-transformProperties.ts +43 -0
  408. package/docs/API/10-lang/10-object/10-transformProperty.ts +39 -0
  409. package/docs/API/10-lang/10-object/10-values.ts +19 -0
  410. package/docs/API/10-lang/10-object/index.llms.md +88 -0
  411. package/docs/API/10-lang/10-object/index.md +3 -0
  412. package/docs/API/10-lang/10-path/10-computeRelative.ts +19 -0
  413. package/docs/API/10-lang/10-path/10-concatSegment.ts +28 -0
  414. package/docs/API/10-lang/10-path/10-create.ts +21 -0
  415. package/docs/API/10-lang/10-path/10-createAbsolute.ts +21 -0
  416. package/docs/API/10-lang/10-path/10-createAbsoluteOrThrow.ts +16 -0
  417. package/docs/API/10-lang/10-path/10-createMatcher.ts +50 -0
  418. package/docs/API/10-lang/10-path/10-createOrThrow.ts +16 -0
  419. package/docs/API/10-lang/10-path/10-createSegment.ts +26 -0
  420. package/docs/API/10-lang/10-path/10-createSegmentOrThrow.ts +16 -0
  421. package/docs/API/10-lang/10-path/10-declareAbsolutePath.ts +15 -0
  422. package/docs/API/10-lang/10-path/10-declarePath.ts +15 -0
  423. package/docs/API/10-lang/10-path/10-declareSegment.ts +15 -0
  424. package/docs/API/10-lang/10-path/10-getBaseName.ts +22 -0
  425. package/docs/API/10-lang/10-path/10-getExtensionName.ts +22 -0
  426. package/docs/API/10-lang/10-path/10-getParentFolderPath.ts +25 -0
  427. package/docs/API/10-lang/10-path/10-is.ts +46 -0
  428. package/docs/API/10-lang/10-path/10-isAbsolute.ts +46 -0
  429. package/docs/API/10-lang/10-path/10-isSegment.ts +42 -0
  430. package/docs/API/10-lang/10-path/10-normalize.ts +26 -0
  431. package/docs/API/10-lang/10-path/10-resolveFrom.ts +37 -0
  432. package/docs/API/10-lang/10-path/10-resolveRelative.ts +23 -0
  433. package/docs/API/10-lang/10-path/index.llms.md +88 -0
  434. package/docs/API/10-lang/10-path/index.md +3 -0
  435. package/docs/API/10-lang/10-pattern/10-exhaustive.ts +26 -0
  436. package/docs/API/10-lang/10-pattern/10-isMatch.ts +72 -0
  437. package/docs/API/10-lang/10-pattern/10-match.ts +133 -0
  438. package/docs/API/10-lang/10-pattern/10-matchWithEntity.ts +49 -0
  439. package/docs/API/10-lang/10-pattern/10-matchWithEntityOtherwise.ts +55 -0
  440. package/docs/API/10-lang/10-pattern/10-matchWithError.ts +45 -0
  441. package/docs/API/10-lang/10-pattern/10-matchWithErrorOtherwise.ts +48 -0
  442. package/docs/API/10-lang/10-pattern/10-matchWithFact.ts +49 -0
  443. package/docs/API/10-lang/10-pattern/10-matchWithFactOtherwise.ts +49 -0
  444. package/docs/API/10-lang/10-pattern/10-matchWithNumber.ts +33 -0
  445. package/docs/API/10-lang/10-pattern/10-matchWithNumberOtherwise.ts +37 -0
  446. package/docs/API/10-lang/10-pattern/10-matchWithString.ts +34 -0
  447. package/docs/API/10-lang/10-pattern/10-matchWithStringOtherwise.ts +35 -0
  448. package/docs/API/10-lang/10-pattern/10-matchWithTaggedObject.ts +43 -0
  449. package/docs/API/10-lang/10-pattern/10-matchWithTaggedObjectOtherwise.ts +49 -0
  450. package/docs/API/10-lang/10-pattern/10-otherwise.ts +28 -0
  451. package/docs/API/10-lang/10-pattern/10-union.ts +47 -0
  452. package/docs/API/10-lang/10-pattern/10-when.ts +46 -0
  453. package/docs/API/10-lang/10-pattern/10-whenNot.ts +123 -0
  454. package/docs/API/10-lang/10-pattern/index.llms.md +80 -0
  455. package/docs/API/10-lang/10-pattern/index.md +3 -0
  456. package/docs/API/10-lang/10-printer/10-bold.ts +12 -0
  457. package/docs/API/10-lang/10-printer/10-colorized.ts +18 -0
  458. package/docs/API/10-lang/10-printer/10-colorizedBold.ts +18 -0
  459. package/docs/API/10-lang/10-printer/10-primitives.md +19 -0
  460. package/docs/API/10-lang/10-printer/10-renderLine.ts +36 -0
  461. package/docs/API/10-lang/10-printer/10-renderParagraph.ts +37 -0
  462. package/docs/API/10-lang/10-printer/index.llms.md +29 -0
  463. package/docs/API/10-lang/10-printer/index.md +3 -0
  464. package/docs/API/10-lang/10-string/10-at.ts +18 -0
  465. package/docs/API/10-lang/10-string/10-capitalize.ts +18 -0
  466. package/docs/API/10-lang/10-string/10-charAt.ts +18 -0
  467. package/docs/API/10-lang/10-string/10-concat.ts +18 -0
  468. package/docs/API/10-lang/10-string/10-endsWith.ts +33 -0
  469. package/docs/API/10-lang/10-string/10-extract.ts +18 -0
  470. package/docs/API/10-lang/10-string/10-extractAll.ts +18 -0
  471. package/docs/API/10-lang/10-string/10-first.ts +17 -0
  472. package/docs/API/10-lang/10-string/10-includes.ts +33 -0
  473. package/docs/API/10-lang/10-string/10-indexOf.ts +17 -0
  474. package/docs/API/10-lang/10-string/10-isComposedOf.ts +33 -0
  475. package/docs/API/10-lang/10-string/10-isEmail.ts +56 -0
  476. package/docs/API/10-lang/10-string/10-isIn.ts +34 -0
  477. package/docs/API/10-lang/10-string/10-isKeyof.ts +37 -0
  478. package/docs/API/10-lang/10-string/10-isNotEmpty.ts +32 -0
  479. package/docs/API/10-lang/10-string/10-isNumber.ts +32 -0
  480. package/docs/API/10-lang/10-string/10-isTrimmed.ts +33 -0
  481. package/docs/API/10-lang/10-string/10-isUrl.ts +31 -0
  482. package/docs/API/10-lang/10-string/10-isUuid.ts +31 -0
  483. package/docs/API/10-lang/10-string/10-join.ts +18 -0
  484. package/docs/API/10-lang/10-string/10-last.ts +17 -0
  485. package/docs/API/10-lang/10-string/10-lastIndexOf.ts +17 -0
  486. package/docs/API/10-lang/10-string/10-length.ts +18 -0
  487. package/docs/API/10-lang/10-string/10-lengthEqual.ts +33 -0
  488. package/docs/API/10-lang/10-string/10-maxCharacters.ts +33 -0
  489. package/docs/API/10-lang/10-string/10-minCharacters.ts +33 -0
  490. package/docs/API/10-lang/10-string/10-normalize.ts +17 -0
  491. package/docs/API/10-lang/10-string/10-padEnd.ts +17 -0
  492. package/docs/API/10-lang/10-string/10-padStart.ts +17 -0
  493. package/docs/API/10-lang/10-string/10-pop.ts +17 -0
  494. package/docs/API/10-lang/10-string/10-prepend.ts +17 -0
  495. package/docs/API/10-lang/10-string/10-repeat.ts +17 -0
  496. package/docs/API/10-lang/10-string/10-replace.ts +18 -0
  497. package/docs/API/10-lang/10-string/10-replaceAll.ts +17 -0
  498. package/docs/API/10-lang/10-string/10-search.ts +17 -0
  499. package/docs/API/10-lang/10-string/10-shift.ts +17 -0
  500. package/docs/API/10-lang/10-string/10-slice.ts +17 -0
  501. package/docs/API/10-lang/10-string/10-sort.ts +19 -0
  502. package/docs/API/10-lang/10-string/10-sortCompare.ts +17 -0
  503. package/docs/API/10-lang/10-string/10-split.ts +34 -0
  504. package/docs/API/10-lang/10-string/10-startsWith.ts +33 -0
  505. package/docs/API/10-lang/10-string/10-stringify.ts +11 -0
  506. package/docs/API/10-lang/10-string/10-substring.ts +17 -0
  507. package/docs/API/10-lang/10-string/10-test.ts +17 -0
  508. package/docs/API/10-lang/10-string/10-to.ts +11 -0
  509. package/docs/API/10-lang/10-string/10-toLowerCase.ts +17 -0
  510. package/docs/API/10-lang/10-string/10-toUpperCase.ts +17 -0
  511. package/docs/API/10-lang/10-string/10-trim.ts +17 -0
  512. package/docs/API/10-lang/10-string/10-trimEnd.ts +17 -0
  513. package/docs/API/10-lang/10-string/10-trimStart.ts +17 -0
  514. package/docs/API/10-lang/10-string/10-uncapitalize.ts +17 -0
  515. package/docs/API/10-lang/10-string/index.llms.md +208 -0
  516. package/docs/API/10-lang/10-string/index.md +3 -0
  517. package/docs/API/10-lang/10-tuple/10-from.ts +50 -0
  518. package/docs/API/10-lang/10-tuple/10-map.ts +37 -0
  519. package/docs/API/10-lang/10-tuple/index.llms.md +12 -0
  520. package/docs/API/10-lang/10-tuple/index.md +3 -0
  521. package/docs/API/10-lang/index.md +3 -0
  522. package/docs/API/20-server/10-file/10-appendFile.ts +50 -0
  523. package/docs/API/20-server/10-file/10-appendTextFile.ts +49 -0
  524. package/docs/API/20-server/10-file/10-copy.ts +50 -0
  525. package/docs/API/20-server/10-file/10-createEntryInterface.ts +13 -0
  526. package/docs/API/20-server/10-file/10-createFileInterface.ts +22 -0
  527. package/docs/API/20-server/10-file/10-createFolderInterface.ts +20 -0
  528. package/docs/API/20-server/10-file/10-createUnknownEntryInterface.ts +13 -0
  529. package/docs/API/20-server/10-file/10-ensureDirectory.ts +39 -0
  530. package/docs/API/20-server/10-file/10-ensureFile.ts +40 -0
  531. package/docs/API/20-server/10-file/10-exists.ts +36 -0
  532. package/docs/API/20-server/10-file/10-link.ts +51 -0
  533. package/docs/API/20-server/10-file/10-linkStat.ts +37 -0
  534. package/docs/API/20-server/10-file/10-makeDirectory.ts +41 -0
  535. package/docs/API/20-server/10-file/10-makeTemporaryDirectory.ts +35 -0
  536. package/docs/API/20-server/10-file/10-makeTemporaryFile.ts +40 -0
  537. package/docs/API/20-server/10-file/10-move.ts +51 -0
  538. package/docs/API/20-server/10-file/10-readDirectory.ts +52 -0
  539. package/docs/API/20-server/10-file/10-readFile.ts +38 -0
  540. package/docs/API/20-server/10-file/10-readJsonFile.ts +38 -0
  541. package/docs/API/20-server/10-file/10-readLink.ts +37 -0
  542. package/docs/API/20-server/10-file/10-readTextFile.ts +38 -0
  543. package/docs/API/20-server/10-file/10-realPath.ts +36 -0
  544. package/docs/API/20-server/10-file/10-relocate.ts +51 -0
  545. package/docs/API/20-server/10-file/10-remove.ts +40 -0
  546. package/docs/API/20-server/10-file/10-rename.ts +43 -0
  547. package/docs/API/20-server/10-file/10-setMode.ts +37 -0
  548. package/docs/API/20-server/10-file/10-setOwner.ts +38 -0
  549. package/docs/API/20-server/10-file/10-setTime.ts +42 -0
  550. package/docs/API/20-server/10-file/10-stat.ts +37 -0
  551. package/docs/API/20-server/10-file/10-symlink.ts +49 -0
  552. package/docs/API/20-server/10-file/10-truncate.ts +41 -0
  553. package/docs/API/20-server/10-file/10-walkDirectory.ts +75 -0
  554. package/docs/API/20-server/10-file/10-writeFile.ts +50 -0
  555. package/docs/API/20-server/10-file/10-writeJsonFile.ts +41 -0
  556. package/docs/API/20-server/10-file/10-writeTextFile.ts +49 -0
  557. package/docs/API/20-server/10-file/index.llms.md +144 -0
  558. package/docs/API/20-server/10-file/index.md +3 -0
  559. package/docs/API/20-server/20-common/10-environmentVariable.ts +57 -0
  560. package/docs/API/20-server/20-common/10-environmentVariableOrThrow.ts +21 -0
  561. package/docs/API/20-server/20-common/10-exitProcess.ts +9 -0
  562. package/docs/API/20-server/20-common/10-getCurrentDirectoryName.ts +10 -0
  563. package/docs/API/20-server/20-common/10-getCurrentWorkDirectory.ts +10 -0
  564. package/docs/API/20-server/20-common/10-getCurrentWorkDirectoryOrThrow.ts +10 -0
  565. package/docs/API/20-server/20-common/10-getProcessArguments.ts +10 -0
  566. package/docs/API/20-server/20-common/10-setCurrentWorkingDirectory.ts +14 -0
  567. package/docs/API/20-server/20-common/10-setCurrentWorkingDirectoryOrThrow.ts +12 -0
  568. package/docs/API/20-server/20-common/index.llms.md +40 -0
  569. package/docs/API/20-server/20-common/index.md +3 -0
  570. package/docs/API/20-server/30-dataStructure/10-file.ts +14 -0
  571. package/docs/API/20-server/30-dataStructure/10-fileExist.ts +27 -0
  572. package/docs/API/20-server/30-dataStructure/10-folder.ts +14 -0
  573. package/docs/API/20-server/30-dataStructure/10-folderExist.ts +14 -0
  574. package/docs/API/20-server/30-dataStructure/10-mimeType.ts +14 -0
  575. package/docs/API/20-server/30-dataStructure/10-size.ts +32 -0
  576. package/docs/API/20-server/30-dataStructure/index.llms.md +28 -0
  577. package/docs/API/20-server/30-dataStructure/index.md +3 -0
  578. package/docs/API/20-server/40-command/10-create.ts +39 -0
  579. package/docs/API/20-server/40-command/10-createArgument.ts +39 -0
  580. package/docs/API/20-server/40-command/10-createArrayOption.ts +36 -0
  581. package/docs/API/20-server/40-command/10-createBooleanOption.ts +28 -0
  582. package/docs/API/20-server/40-command/10-createOption.ts +46 -0
  583. package/docs/API/20-server/40-command/10-exec.ts +51 -0
  584. package/docs/API/20-server/40-command/10-execOptions.ts +30 -0
  585. package/docs/API/20-server/40-command/index.llms.md +32 -0
  586. package/docs/API/20-server/40-command/index.md +3 -0
  587. package/docs/API/20-server/index.md +3 -0
  588. package/docs/API/40-json-web-token/10-tokenHandler/10-createTokenHandler.ts +160 -0
  589. package/docs/API/40-json-web-token/10-tokenHandler/index.llms.md +8 -0
  590. package/docs/API/40-json-web-token/10-tokenHandler/index.md +3 -0
  591. package/docs/API/40-json-web-token/20-signer/10-createHS256.ts +24 -0
  592. package/docs/API/40-json-web-token/20-signer/10-createHS512.ts +24 -0
  593. package/docs/API/40-json-web-token/20-signer/10-createRS256.ts +28 -0
  594. package/docs/API/40-json-web-token/20-signer/10-createRS512.ts +28 -0
  595. package/docs/API/40-json-web-token/20-signer/10-factory.ts +29 -0
  596. package/docs/API/40-json-web-token/20-signer/index.llms.md +24 -0
  597. package/docs/API/40-json-web-token/20-signer/index.md +3 -0
  598. package/docs/API/40-json-web-token/30-cipher/10-createRSAOAEP.ts +26 -0
  599. package/docs/API/40-json-web-token/30-cipher/10-createRSAOAEP256.ts +26 -0
  600. package/docs/API/40-json-web-token/30-cipher/10-factory.ts +29 -0
  601. package/docs/API/40-json-web-token/30-cipher/index.llms.md +16 -0
  602. package/docs/API/40-json-web-token/30-cipher/index.md +3 -0
  603. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.decrypt.ts +17 -0
  604. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.encrypt.ts +11 -0
  605. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.generateInitializationVector.ts +9 -0
  606. package/docs/API/40-json-web-token/40-utils/10-HMAC.sign.ts +13 -0
  607. package/docs/API/40-json-web-token/40-utils/10-HMAC.verify.ts +11 -0
  608. package/docs/API/40-json-web-token/40-utils/10-RSA.sign.ts +14 -0
  609. package/docs/API/40-json-web-token/40-utils/10-RSA.verify.ts +13 -0
  610. package/docs/API/40-json-web-token/40-utils/10-RSA_OAEP.decrypt.ts +13 -0
  611. package/docs/API/40-json-web-token/40-utils/10-RSA_OAEP.encrypt.ts +10 -0
  612. package/docs/API/40-json-web-token/40-utils/10-decodeBase64.ts +9 -0
  613. package/docs/API/40-json-web-token/40-utils/10-decodeBase64Url.ts +9 -0
  614. package/docs/API/40-json-web-token/40-utils/10-decodeText.ts +9 -0
  615. package/docs/API/40-json-web-token/40-utils/10-encodeBase64.ts +9 -0
  616. package/docs/API/40-json-web-token/40-utils/10-encodeBase64Url.ts +9 -0
  617. package/docs/API/40-json-web-token/40-utils/10-encodeText.ts +9 -0
  618. package/docs/API/40-json-web-token/40-utils/10-isBase64Url.ts +11 -0
  619. package/docs/API/40-json-web-token/40-utils/10-jsonParse.ts +11 -0
  620. package/docs/API/40-json-web-token/40-utils/10-pemToBinary.ts +11 -0
  621. package/docs/API/40-json-web-token/40-utils/index.llms.md +76 -0
  622. package/docs/API/40-json-web-token/40-utils/index.md +3 -0
  623. package/docs/API/40-json-web-token/index.md +3 -0
  624. package/docs/API/50-form/10-vue/10-construction/10-createForm.ts +48 -0
  625. package/docs/API/50-form/10-vue/10-construction/10-createFormField.ts +66 -0
  626. package/docs/API/50-form/10-vue/10-construction/10-createGridTemplates.ts +39 -0
  627. package/docs/API/50-form/10-vue/10-construction/10-createInput.ts +46 -0
  628. package/docs/API/50-form/10-vue/10-construction/10-createTemplate.ts +36 -0
  629. package/docs/API/50-form/10-vue/10-construction/fixtures/AddressInput.vue +19 -0
  630. package/docs/API/50-form/10-vue/10-construction/index.llms.md +24 -0
  631. package/docs/API/50-form/10-vue/10-construction/index.md +3 -0
  632. package/docs/API/50-form/10-vue/20-layouts/10-useCheckLayout.ts +40 -0
  633. package/docs/API/50-form/10-vue/20-layouts/10-useDisabledLayout.ts +34 -0
  634. package/docs/API/50-form/10-vue/20-layouts/10-useMultiLayout.ts +32 -0
  635. package/docs/API/50-form/10-vue/20-layouts/10-useRepeatLayout.ts +34 -0
  636. package/docs/API/50-form/10-vue/20-layouts/10-useSectionLayout.ts +20 -0
  637. package/docs/API/50-form/10-vue/20-layouts/10-useSlotLayout.ts +37 -0
  638. package/docs/API/50-form/10-vue/20-layouts/10-useStepLayout.ts +31 -0
  639. package/docs/API/50-form/10-vue/20-layouts/10-useUnionLayout.ts +48 -0
  640. package/docs/API/50-form/10-vue/20-layouts/index.llms.md +36 -0
  641. package/docs/API/50-form/10-vue/20-layouts/index.md +3 -0
  642. package/docs/API/50-form/10-vue/30-designSystem/10-useCheckbox.ts +13 -0
  643. package/docs/API/50-form/10-vue/30-designSystem/10-useCheckboxPolicy.ts +18 -0
  644. package/docs/API/50-form/10-vue/30-designSystem/10-useDateInput.ts +20 -0
  645. package/docs/API/50-form/10-vue/30-designSystem/10-useDualRangeInput.ts +27 -0
  646. package/docs/API/50-form/10-vue/30-designSystem/10-useFileInput.ts +23 -0
  647. package/docs/API/50-form/10-vue/30-designSystem/10-useNumberInput.ts +18 -0
  648. package/docs/API/50-form/10-vue/30-designSystem/10-useRadioGroup.ts +31 -0
  649. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeDateInput.ts +23 -0
  650. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeInput.ts +18 -0
  651. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeTimeInput.ts +23 -0
  652. package/docs/API/50-form/10-vue/30-designSystem/10-useSelectInput.ts +31 -0
  653. package/docs/API/50-form/10-vue/30-designSystem/10-useTextInput.ts +14 -0
  654. package/docs/API/50-form/10-vue/30-designSystem/10-useTextareaInput.ts +14 -0
  655. package/docs/API/50-form/10-vue/30-designSystem/10-useTimeInput.ts +20 -0
  656. package/docs/API/50-form/10-vue/30-designSystem/20-components.md +11 -0
  657. package/docs/API/50-form/10-vue/30-designSystem/index.llms.md +65 -0
  658. package/docs/API/50-form/10-vue/30-designSystem/index.md +3 -0
  659. package/docs/API/50-form/10-vue/fixtures/templates.ts +20 -0
  660. package/docs/API/50-form/10-vue/index.md +3 -0
  661. package/docs/API/50-form/index.md +3 -0
  662. package/docs/API/60-playwright/10-construction/10-createComponent.ts +47 -0
  663. package/docs/API/60-playwright/10-construction/10-createComponentInteraction.ts +28 -0
  664. package/docs/API/60-playwright/10-construction/10-createPage.ts +34 -0
  665. package/docs/API/60-playwright/10-construction/10-createStepWrapper.ts +23 -0
  666. package/docs/API/60-playwright/10-construction/10-createWebsite.ts +57 -0
  667. package/docs/API/60-playwright/10-construction/10-initClient.ts +38 -0
  668. package/docs/API/60-playwright/10-construction/index.llms.md +28 -0
  669. package/docs/API/60-playwright/10-construction/index.md +3 -0
  670. package/docs/API/60-playwright/20-actions/10-check.ts +9 -0
  671. package/docs/API/60-playwright/20-actions/10-clear.ts +9 -0
  672. package/docs/API/60-playwright/20-actions/10-click.ts +9 -0
  673. package/docs/API/60-playwright/20-actions/10-dragTo.ts +10 -0
  674. package/docs/API/60-playwright/20-actions/10-extractContent.ts +10 -0
  675. package/docs/API/60-playwright/20-actions/10-fill.ts +9 -0
  676. package/docs/API/60-playwright/20-actions/10-focus.ts +9 -0
  677. package/docs/API/60-playwright/20-actions/10-forceClick.ts +10 -0
  678. package/docs/API/60-playwright/20-actions/10-hover.ts +9 -0
  679. package/docs/API/60-playwright/20-actions/10-press.ts +9 -0
  680. package/docs/API/60-playwright/20-actions/10-selectOption.ts +10 -0
  681. package/docs/API/60-playwright/20-actions/10-type.ts +10 -0
  682. package/docs/API/60-playwright/20-actions/10-uncheck.ts +9 -0
  683. package/docs/API/60-playwright/20-actions/10-withStep.ts +10 -0
  684. package/docs/API/60-playwright/20-actions/index.llms.md +60 -0
  685. package/docs/API/60-playwright/20-actions/index.md +3 -0
  686. package/docs/API/60-playwright/30-assertions/10-toBeBusy.ts +10 -0
  687. package/docs/API/60-playwright/30-assertions/10-toBeChecked.ts +9 -0
  688. package/docs/API/60-playwright/30-assertions/10-toBeDisabled.ts +9 -0
  689. package/docs/API/60-playwright/30-assertions/10-toBeEnabled.ts +9 -0
  690. package/docs/API/60-playwright/30-assertions/10-toBeHidden.ts +9 -0
  691. package/docs/API/60-playwright/30-assertions/10-toBeNotBusy.ts +10 -0
  692. package/docs/API/60-playwright/30-assertions/10-toBeVisible.ts +10 -0
  693. package/docs/API/60-playwright/30-assertions/10-toContainText.ts +9 -0
  694. package/docs/API/60-playwright/30-assertions/10-toHaveAttribute.ts +12 -0
  695. package/docs/API/60-playwright/30-assertions/10-toHaveClass.ts +9 -0
  696. package/docs/API/60-playwright/30-assertions/10-toHaveNoText.ts +10 -0
  697. package/docs/API/60-playwright/30-assertions/10-toHaveQuantity.ts +20 -0
  698. package/docs/API/60-playwright/30-assertions/10-toHaveText.ts +9 -0
  699. package/docs/API/60-playwright/30-assertions/10-toHaveValue.ts +9 -0
  700. package/docs/API/60-playwright/30-assertions/10-withStep.ts +10 -0
  701. package/docs/API/60-playwright/30-assertions/index.llms.md +64 -0
  702. package/docs/API/60-playwright/30-assertions/index.md +3 -0
  703. package/docs/API/60-playwright/fixtures/component.ts +44 -0
  704. package/docs/API/60-playwright/index.md +3 -0
  705. package/docs/API/index.md +3 -0
  706. package/docs/API.llms.md +135 -0
  707. package/docs/concepts/01-fundamental/01-constraint/01-use.ts +22 -0
  708. package/docs/concepts/01-fundamental/01-constraint/10-built-in-constraint.ts +37 -0
  709. package/docs/concepts/01-fundamental/01-constraint/20-manipulation.ts +41 -0
  710. package/docs/concepts/01-fundamental/01-constraint/30-cast.ts +66 -0
  711. package/docs/concepts/01-fundamental/01-constraint/40-custom-constraint.ts +45 -0
  712. package/docs/concepts/01-fundamental/01-constraint/index.md +3 -0
  713. package/docs/concepts/01-fundamental/02-currying/01-use.ts +38 -0
  714. package/docs/concepts/01-fundamental/02-currying/10-built-in-function.ts +190 -0
  715. package/docs/concepts/01-fundamental/02-currying/20-inner-pipe.ts +48 -0
  716. package/docs/concepts/01-fundamental/02-currying/30-async-pipe.ts +51 -0
  717. package/docs/concepts/01-fundamental/02-currying/index.md +3 -0
  718. package/docs/concepts/01-fundamental/03-either/01-use.ts +21 -0
  719. package/docs/concepts/01-fundamental/03-either/10-discrimination.ts +90 -0
  720. package/docs/concepts/01-fundamental/03-either/20-exhaustive-handling.ts +90 -0
  721. package/docs/concepts/01-fundamental/03-either/30-composition.ts +80 -0
  722. package/docs/concepts/01-fundamental/03-either/40-result-adaptation.ts +46 -0
  723. package/docs/concepts/01-fundamental/03-either/50-external-results.ts +72 -0
  724. package/docs/concepts/01-fundamental/03-either/60-contextual-state.ts +40 -0
  725. package/docs/concepts/01-fundamental/03-either/index.md +3 -0
  726. package/docs/concepts/01-fundamental/04-data-structure/01-use.ts +22 -0
  727. package/docs/concepts/01-fundamental/04-data-structure/10-structure.ts +244 -0
  728. package/docs/concepts/01-fundamental/04-data-structure/20-constraint.ts +86 -0
  729. package/docs/concepts/01-fundamental/04-data-structure/30-validation.ts +104 -0
  730. package/docs/concepts/01-fundamental/04-data-structure/40-codecs.ts +162 -0
  731. package/docs/concepts/01-fundamental/04-data-structure/50-recursive.ts +57 -0
  732. package/docs/concepts/01-fundamental/04-data-structure/60-interpret-error.ts +123 -0
  733. package/docs/concepts/01-fundamental/04-data-structure/index.md +3 -0
  734. package/docs/concepts/01-fundamental/05-chrono/01-use.ts +14 -0
  735. package/docs/concepts/01-fundamental/05-chrono/10-creation.ts +85 -0
  736. package/docs/concepts/01-fundamental/05-chrono/20-manipulation.ts +110 -0
  737. package/docs/concepts/01-fundamental/05-chrono/30-serialized.ts +89 -0
  738. package/docs/concepts/01-fundamental/05-chrono/40-timezone.ts +85 -0
  739. package/docs/concepts/01-fundamental/05-chrono/index.md +3 -0
  740. package/docs/concepts/01-fundamental/06-modeling/10-new-type.ts +42 -0
  741. package/docs/concepts/01-fundamental/06-modeling/20-entity.ts +191 -0
  742. package/docs/concepts/01-fundamental/06-modeling/30-tagged-object.ts +204 -0
  743. package/docs/concepts/01-fundamental/06-modeling/40-entity-lifecycle.ts +272 -0
  744. package/docs/concepts/01-fundamental/06-modeling/50-evidence.ts +94 -0
  745. package/docs/concepts/01-fundamental/06-modeling/60-signed-function.ts +26 -0
  746. package/docs/concepts/01-fundamental/06-modeling/index.md +3 -0
  747. package/docs/concepts/01-fundamental/07-discrimination/10-entity.ts +136 -0
  748. package/docs/concepts/01-fundamental/07-discrimination/20-fact.ts +158 -0
  749. package/docs/concepts/01-fundamental/07-discrimination/30-tagged-object.ts +137 -0
  750. package/docs/concepts/01-fundamental/07-discrimination/40-error.ts +73 -0
  751. package/docs/concepts/01-fundamental/07-discrimination/50-literal.ts +106 -0
  752. package/docs/concepts/01-fundamental/07-discrimination/60-shape.ts +160 -0
  753. package/docs/concepts/01-fundamental/07-discrimination/70-predicate.ts +101 -0
  754. package/docs/concepts/01-fundamental/07-discrimination/index.md +3 -0
  755. package/docs/concepts/01-fundamental/08-kind/01-identity.md +7 -0
  756. package/docs/concepts/01-fundamental/08-kind/20-metadata.md +11 -0
  757. package/docs/concepts/01-fundamental/08-kind/30-transport.md +11 -0
  758. package/docs/concepts/01-fundamental/08-kind/index.md +3 -0
  759. package/docs/concepts/01-fundamental/index.md +1 -0
  760. package/docs/concepts/02-server/10-file/10-manipulation.ts +52 -0
  761. package/docs/concepts/02-server/10-file/20-path.ts +72 -0
  762. package/docs/concepts/02-server/10-file/index.md +3 -0
  763. package/docs/concepts/02-server/20-http/10-init.ts +23 -0
  764. package/docs/concepts/02-server/20-http/20-route.ts +182 -0
  765. package/docs/concepts/02-server/20-http/30-routine.ts +188 -0
  766. package/docs/concepts/02-server/20-http/40-jwt.ts +149 -0
  767. package/docs/concepts/02-server/20-http/50-open-api.ts +44 -0
  768. package/docs/concepts/02-server/20-http/index.md +3 -0
  769. package/docs/concepts/02-server/30-environment/10-platform.ts +47 -0
  770. package/docs/concepts/02-server/30-environment/20-variable.ts +47 -0
  771. package/docs/concepts/02-server/30-environment/index.md +3 -0
  772. package/docs/concepts/02-server/40-command/10-use.ts +112 -0
  773. package/docs/concepts/02-server/40-command/20-sub-command.ts +48 -0
  774. package/docs/concepts/02-server/40-command/index.md +3 -0
  775. package/docs/concepts/02-server/index.md +1 -0
  776. package/docs/concepts/03-client/10-http/10-init.ts +52 -0
  777. package/docs/concepts/03-client/10-http/20-request.ts +254 -0
  778. package/docs/concepts/03-client/10-http/30-hook.ts +139 -0
  779. package/docs/concepts/03-client/10-http/index.md +3 -0
  780. package/docs/concepts/03-client/20-form/10-init.ts +98 -0
  781. package/docs/concepts/03-client/20-form/20-input.ts +103 -0
  782. package/docs/concepts/03-client/20-form/30-layout.ts +155 -0
  783. package/docs/concepts/03-client/20-form/40-template.ts +94 -0
  784. package/docs/concepts/03-client/20-form/50-integration.md +11 -0
  785. package/docs/concepts/03-client/20-form/examples/postModeration/ThePage.vue +32 -0
  786. package/docs/concepts/03-client/20-form/examples/postModeration/usePostModeration.ts +80 -0
  787. package/docs/concepts/03-client/20-form/index.md +3 -0
  788. package/docs/concepts/03-client/index.md +1 -0
  789. package/docs/concepts/04-tests/01-unit/10-either.ts +136 -0
  790. package/docs/concepts/04-tests/01-unit/20-server-mocking.ts +53 -0
  791. package/docs/concepts/04-tests/01-unit/index.md +3 -0
  792. package/docs/concepts/04-tests/02-e2e/10-init.ts +80 -0
  793. package/docs/concepts/04-tests/02-e2e/20-architecture.ts +76 -0
  794. package/docs/concepts/04-tests/02-e2e/30-testing.ts +90 -0
  795. package/docs/concepts/04-tests/02-e2e/index.md +3 -0
  796. package/docs/concepts/04-tests/index.md +1 -0
  797. package/docs/concepts/05-type-driven-design/01-architecture/10-boundaries.md +44 -0
  798. package/docs/concepts/05-type-driven-design/01-architecture/index.md +3 -0
  799. package/docs/concepts/05-type-driven-design/02-domains/10-entities.md +50 -0
  800. package/docs/concepts/05-type-driven-design/02-domains/20-aggregates.md +65 -0
  801. package/docs/concepts/05-type-driven-design/02-domains/30-repositories.md +35 -0
  802. package/docs/concepts/05-type-driven-design/02-domains/40-refinements.md +30 -0
  803. package/docs/concepts/05-type-driven-design/02-domains/index.md +3 -0
  804. package/docs/concepts/05-type-driven-design/03-applications/10-use-case.md +62 -0
  805. package/docs/concepts/05-type-driven-design/03-applications/20-ports.md +49 -0
  806. package/docs/concepts/05-type-driven-design/03-applications/index.md +3 -0
  807. package/docs/concepts/05-type-driven-design/04-infrastructure/10-implementation.md +47 -0
  808. package/docs/concepts/05-type-driven-design/04-infrastructure/index.md +3 -0
  809. package/docs/concepts/05-type-driven-design/fixtures/business/applications/index.ts +2 -0
  810. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/book.ts +10 -0
  811. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/client.ts +10 -0
  812. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/email.ts +7 -0
  813. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/index.ts +4 -0
  814. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/waitingListEntry.ts +17 -0
  815. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientGiveBackBook.ts +45 -0
  816. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientRentBook.ts +31 -0
  817. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/createBook.ts +32 -0
  818. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/index.ts +4 -0
  819. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/withdrawBook.ts +32 -0
  820. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientGiveBackBook.ts +74 -0
  821. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientRentBook.ts +42 -0
  822. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/createBook.ts +33 -0
  823. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/index.ts +4 -0
  824. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/withdrawBook.ts +37 -0
  825. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/create.ts +33 -0
  826. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/index.ts +5 -0
  827. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/rental.ts +31 -0
  828. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/reserve.ts +37 -0
  829. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/returnBook.ts +32 -0
  830. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/withdraw.ts +21 -0
  831. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/index.ts +118 -0
  832. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/giveBackBook.ts +35 -0
  833. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/index.ts +2 -0
  834. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/rentBook.ts +32 -0
  835. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/index.ts +59 -0
  836. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/index.ts +3 -0
  837. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/cancel.ts +26 -0
  838. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/create.ts +33 -0
  839. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/index.ts +3 -0
  840. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/prepare.ts +23 -0
  841. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/index.ts +79 -0
  842. package/docs/concepts/05-type-driven-design/fixtures/business/domains/index.ts +4 -0
  843. package/docs/concepts/05-type-driven-design/fixtures/business/domains/refinements/index.ts +1 -0
  844. package/docs/concepts/05-type-driven-design/fixtures/business/domains/refinements/refineLinkBetweenClientAndBorrowedBook.ts +34 -0
  845. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/book.ts +16 -0
  846. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/client.ts +7 -0
  847. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/email.ts +12 -0
  848. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/index.ts +4 -0
  849. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/waitingListEntry.ts +19 -0
  850. package/docs/concepts/05-type-driven-design/fixtures/business/index.ts +2 -0
  851. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/command/clientRentBook.ts +62 -0
  852. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/command/index.ts +11 -0
  853. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/bookExist.ts +19 -0
  854. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/clientExist.ts +19 -0
  855. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/index.ts +2 -0
  856. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/main.ts +19 -0
  857. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientGiveBackBook.ts +46 -0
  858. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientRentBook.ts +45 -0
  859. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/index.ts +2 -0
  860. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/book.ts +25 -0
  861. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/client.ts +7 -0
  862. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/email.ts +10 -0
  863. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/index.ts +4 -0
  864. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/waitingListEntry.ts +17 -0
  865. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/useCases/index.ts +13 -0
  866. package/docs/concepts/05-type-driven-design/index.md +3 -0
  867. package/docs/concepts.llms.md +521 -0
  868. package/instructions/coding-conventions.md +8 -0
  869. package/package.json +99 -3
  870. package/skills/command/SKILL.md +63 -0
  871. package/skills/command/references/examples/cli.ts +22 -0
  872. package/skills/command/references/examples/options-only.ts +27 -0
  873. package/skills/command/references/examples/preview-command.ts +57 -0
  874. package/skills/command/references/execution.md +31 -0
  875. package/skills/command/references/inputs.md +27 -0
  876. package/skills/fundamental/SKILL.md +80 -0
  877. package/skills/fundamental/references/composition.md +19 -0
  878. package/skills/fundamental/references/constraints-and-validation.md +24 -0
  879. package/skills/fundamental/references/examples/async-composition.ts +15 -0
  880. package/skills/fundamental/references/examples/cast.ts +18 -0
  881. package/skills/fundamental/references/examples/composition.ts +40 -0
  882. package/skills/fundamental/references/examples/environment-initialization.ts +19 -0
  883. package/skills/fundamental/references/examples/error-propagation.ts +24 -0
  884. package/skills/fundamental/references/examples/generic-inference.ts +31 -0
  885. package/skills/fundamental/references/examples/guaranteed-array-access.ts +31 -0
  886. package/skills/fundamental/references/examples/independent-inputs.ts +18 -0
  887. package/skills/fundamental/references/examples/infer.ts +21 -0
  888. package/skills/fundamental/references/examples/input-validation.ts +37 -0
  889. package/skills/fundamental/references/examples/iterations.ts +112 -0
  890. package/skills/fundamental/references/examples/result-selection.ts +65 -0
  891. package/skills/fundamental/references/examples/safe-declarations.ts +25 -0
  892. package/skills/fundamental/references/iterations.md +24 -0
  893. package/skills/fundamental/references/results-and-errors.md +34 -0
  894. package/skills/http-client/SKILL.md +50 -0
  895. package/skills/http-client/references/configuration.md +11 -0
  896. package/skills/http-client/references/examples/client-expectations.ts +85 -0
  897. package/skills/http-client/references/examples/client-streams.ts +74 -0
  898. package/skills/http-client/references/examples/external-client.ts +78 -0
  899. package/skills/http-client/references/hooks.md +7 -0
  900. package/skills/http-client/references/responses.md +39 -0
  901. package/skills/http-client/references/streams.md +10 -0
  902. package/skills/http-server/SKILL.md +61 -0
  903. package/skills/http-server/references/examples/authentication.ts +42 -0
  904. package/skills/http-server/references/examples/contracts.ts +19 -0
  905. package/skills/http-server/references/examples/inferred-client.ts +54 -0
  906. package/skills/http-server/references/examples/initialize.ts +29 -0
  907. package/skills/http-server/references/examples/minimal-route.ts +17 -0
  908. package/skills/http-server/references/examples/protected-route.ts +29 -0
  909. package/skills/http-server/references/examples/rename-user-route.ts +52 -0
  910. package/skills/http-server/references/examples/user-checker.ts +26 -0
  911. package/skills/http-server/references/examples/user-route.ts +45 -0
  912. package/skills/http-server/references/initialization.md +33 -0
  913. package/skills/http-server/references/reusable-flows.md +40 -0
  914. package/skills/http-server/references/routes-and-floor.md +46 -0
  915. package/skills/modeling/SKILL.md +76 -0
  916. package/skills/modeling/references/domain.md +33 -0
  917. package/skills/modeling/references/orchestration.md +36 -0
  918. package/skills/server/SKILL.md +55 -0
  919. package/skills/server/references/environment.md +30 -0
  920. package/skills/server/references/examples/environment.ts +41 -0
  921. package/skills/server/references/examples/file-structure.ts +26 -0
  922. package/skills/server/references/examples/files.ts +52 -0
  923. package/skills/server/references/files.md +38 -0
  924. package/skills/server/references/structures.md +15 -0
  925. package/skills/test/SKILL.md +70 -0
  926. package/skills/test/references/examples/results.ts +95 -0
  927. package/skills/test/references/examples/server.ts +59 -0
  928. package/skills/test/references/results.md +21 -0
  929. package/skills/test/references/server.md +17 -0
@@ -0,0 +1,136 @@
1
+ /**
2
+ * @title Tester un résultat Either
3
+ *
4
+ * Vérification des branches, des valeurs et du typage d’un contrat Either.
5
+ */
6
+ import * as DCommon from "@duplojs/lang/common";
7
+ import * as DEither from "@duplojs/lang/either";
8
+
9
+ // Dans les tests du monorepo, Vitest expose ces globals directement.
10
+ // Ces déclarations rendent uniquement l'exemple typable dans la documentation d'AgentKit.
11
+ declare const describe: (title: string, body: () => void) => void;
12
+ declare const it: (title: string, body: () => void | Promise<void>) => void;
13
+ declare const expect: (value: unknown) => {
14
+ toBe(expected: unknown): void;
15
+ toStrictEqual(expected: unknown): void;
16
+ };
17
+
18
+ interface User {
19
+ id: number;
20
+ email: string;
21
+ }
22
+
23
+ declare function findUserByEmail(
24
+ email: string,
25
+ ): (
26
+ | DEither.Result<"user.found", User>
27
+ | DEither.Left<"user.notfound", string>
28
+ | DEither.Error<Error>
29
+ );
30
+
31
+ // L'unwrap exprime la branche attendue avant l'assertion sur la donnée.
32
+ // `unwrapByInformationOrThrow` sélectionne l’information visée et extrait sa
33
+ // valeur. Une information différente provoque une exception et fait échouer le test.
34
+ // L’assertion vérifie ensuite la donnée ; `ExpectType` vérifie son type à la compilation.
35
+ describe("findUserByEmail", () => {
36
+ it("returns the found user", () => {
37
+ const result = findUserByEmail("jane@duplo.dev");
38
+
39
+ const user = DEither.unwrapByInformationOrThrow(
40
+ result,
41
+ "user.found",
42
+ );
43
+
44
+ expect(user).toStrictEqual({
45
+ id: 1,
46
+ email: "jane@duplo.dev",
47
+ });
48
+
49
+ type _CheckUser = DCommon.ExpectType<
50
+ typeof user,
51
+ User,
52
+ "strict"
53
+ >;
54
+ });
55
+
56
+ it("returns the not found email", () => {
57
+ const result = findUserByEmail("missing@duplo.dev");
58
+
59
+ const email = DEither.unwrapByInformationOrThrow(
60
+ result,
61
+ "user.notfound",
62
+ );
63
+
64
+ expect(email).toBe("missing@duplo.dev");
65
+ });
66
+ });
67
+
68
+ // La sélection rend explicites les branches acceptées par ce test.
69
+ // `unwrapSelectionOrThrow` lève aussi une exception si le résultat appartient
70
+ // à une branche exclue, ici `error`.
71
+ describe("findUserByEmail selection", () => {
72
+ it("accepts only the business results handled by this test", () => {
73
+ const result = findUserByEmail("jane@duplo.dev");
74
+
75
+ const value = DEither.unwrapSelectionOrThrow(
76
+ result,
77
+ {
78
+ "user.found": true,
79
+ "user.notfound": true,
80
+ error: false,
81
+ },
82
+ );
83
+
84
+ type _CheckValue = DCommon.ExpectType<
85
+ typeof value,
86
+ User | string,
87
+ "strict"
88
+ >;
89
+
90
+ if (typeof value === "string") {
91
+ expect(value).toBe("jane@duplo.dev");
92
+ } else {
93
+ expect(value).toStrictEqual({
94
+ id: 1,
95
+ email: "jane@duplo.dev",
96
+ });
97
+ }
98
+ });
99
+ });
100
+
101
+ // `DEither.expect` matérialise dans le type qu'une valeur est déjà un `Either`.
102
+ describe("DEither.expect", () => {
103
+ it("keeps the exact either type", () => {
104
+ const input = DEither.success(42);
105
+ const result = DEither.expect(input);
106
+
107
+ expect(result).toBe(input);
108
+
109
+ type _CheckResult = DCommon.ExpectType<
110
+ typeof result,
111
+ DEither.Success<42>,
112
+ "strict"
113
+ >;
114
+
115
+ // @ts-expect-error input must be an Either
116
+ DEither.expect("plain value");
117
+ });
118
+ });
119
+
120
+ // Tester une API curifiée dans son contexte réel conserve l'inférence utile.
121
+ describe("curried Either helpers", () => {
122
+ it("preserves inference in a pipe", () => {
123
+ const result = DCommon.pipe(
124
+ findUserByEmail("jane@duplo.dev"),
125
+ DEither.unwrapByInformationOrThrow("user.found"),
126
+ );
127
+
128
+ expect(result.email).toBe("jane@duplo.dev");
129
+
130
+ type _CheckResult = DCommon.ExpectType<
131
+ typeof result,
132
+ User,
133
+ "strict"
134
+ >;
135
+ });
136
+ });
@@ -0,0 +1,53 @@
1
+ /**
2
+ * @title Remplacer les implémentations serveur
3
+ *
4
+ * Contrôle de l'environnement et des fonctions serveur pour isoler les tests.
5
+ */
6
+ import * as DEither from "@duplojs/lang/either";
7
+ // Ces deux outils sont des exports directs du package, sans sous-export dédié.
8
+ import { TESTImplementation, setEnvironment } from "@duplojs/server";
9
+ import * as DSCommand from "@duplojs/server/command";
10
+ import { afterEach, describe, expect, it, vi } from "vitest";
11
+
12
+ // Pour les fonctions serveur exposées via `implementFunction`, privilégier
13
+ // ce mécanisme aux mocks de modules ou d'imports et aux spies sur les exports.
14
+ // `setEnvironment("TEST")` sélectionne les implémentations enregistrées avec
15
+ // `TESTImplementation.set` ; leur signature est vérifiée par TypeScript.
16
+ // Chaque fonction serveur effectivement appelée, même indirectement, doit être
17
+ // enregistrée : une implémentation absente lève une erreur, sans repli natif.
18
+ describe("command with controlled server dependencies", () => {
19
+ afterEach(() => {
20
+ // Le registre et l'environnement sont partagés. Nettoyer même si le test
21
+ // échoue ; ne pas exécuter ces tests concurremment.
22
+ TESTImplementation.clear();
23
+ // Cette suite Vitest tourne sous Node. Adapter l'environnement rétabli
24
+ // à celui attendu par la suite lorsqu'elle utilise Bun ou Deno.
25
+ setEnvironment("NODE");
26
+ });
27
+
28
+ it("reads the injected process arguments", async() => {
29
+ setEnvironment("TEST");
30
+
31
+ // `vi.fn` reste utile pour observer les appels de l'implémentation injectée.
32
+ const getProcessArgumentsSpy = vi.fn(() => ["--verbose"]);
33
+ TESTImplementation.set("getProcessArguments", getProcessArgumentsSpy);
34
+ const executeSpy = vi.fn(() => undefined);
35
+
36
+ const result = await DSCommand.exec(
37
+ {
38
+ displayName: "tool",
39
+ options: [DSCommand.createBooleanOption("verbose")],
40
+ },
41
+ executeSpy,
42
+ );
43
+
44
+ DEither.unwrapByInformationOrThrow(result, "ok");
45
+ expect(getProcessArgumentsSpy).toHaveBeenCalledTimes(1);
46
+ expect(executeSpy).toHaveBeenCalledWith({
47
+ options: { verbose: true },
48
+ });
49
+ });
50
+ });
51
+
52
+ // Les autres dépendances sans ce mécanisme peuvent toujours être observées
53
+ // ou remplacées avec les outils de mock habituels du runner de tests.
@@ -0,0 +1,3 @@
1
+ ## Tests unitaires
2
+
3
+ Vérification du comportement et du typage des unités de code.
@@ -0,0 +1,80 @@
1
+ /**
2
+ * @title Initialiser le client E2E
3
+ *
4
+ * Configuration de l’environnement de test et intégration du site aux fixtures Playwright.
5
+ */
6
+ import * as DCommon from "@duplojs/lang/common";
7
+ import * as DDataStructure from "@duplojs/lang/dataStructure";
8
+ import * as DSCommon from "@duplojs/server/common";
9
+ import { createWebsite, type Website } from "@duplojs/playwright";
10
+ import test, { defineConfig, devices } from "playwright/test";
11
+
12
+ const envs = await DSCommon.environmentVariableOrThrow(
13
+ {
14
+ BASE_URL: DDataStructure.string([DDataStructure.url()]),
15
+ CI: DDataStructure.boolean(),
16
+ RETRIES: DDataStructure.number([DDataStructure.integer()]),
17
+ WORKERS: DDataStructure.number([DDataStructure.integer()]),
18
+ },
19
+ {
20
+ justRead: true,
21
+ includedEnvironmentFiles: [DCommon.infer(".env")],
22
+ },
23
+ );
24
+
25
+ // La configuration reste une configuration Playwright normale.
26
+ export default defineConfig({
27
+ testDir: "./tests",
28
+ fullyParallel: true,
29
+ forbidOnly: envs.CI,
30
+ retries: envs.RETRIES,
31
+ workers: envs.WORKERS,
32
+ reporter: [
33
+ [
34
+ "html",
35
+ {
36
+ open: "never",
37
+ outputFolder: "playwright-report",
38
+ },
39
+ ],
40
+ ["list"],
41
+ ],
42
+ use: {
43
+ headless: true,
44
+ trace: "retain-on-failure",
45
+ screenshot: "only-on-failure",
46
+ },
47
+ projects: [
48
+ {
49
+ name: "chromium",
50
+ use: { ...devices["Desktop Chrome"] },
51
+ },
52
+ ],
53
+ });
54
+
55
+ interface TestFixtures {
56
+ website: Website;
57
+ }
58
+
59
+ // La fixture ajoute `website` aux tests et centralise le contexte du site.
60
+ // Elle crée un `Website` par test à partir de la `page` et du `BrowserContext`
61
+ // fournis par Playwright. `baseUrl` fixe l’adresse du site ; le hook attend la
62
+ // fin du chargement réseau après chaque navigation.
63
+ export const testClient = test.extend<TestFixtures>({
64
+ async website({ page, context }, use) {
65
+ const website = createWebsite({
66
+ playwrightPage: page,
67
+ playwrightBrowserContext: context,
68
+ envConfig: {
69
+ baseUrl: envs.BASE_URL,
70
+ },
71
+ hooks: {
72
+ async afterNavigateOnPage() {
73
+ await page.waitForLoadState("networkidle");
74
+ },
75
+ },
76
+ });
77
+
78
+ await use(website);
79
+ },
80
+ });
@@ -0,0 +1,76 @@
1
+ /**
2
+ * @title Architecturer une suite E2E
3
+ *
4
+ * Organisation d’une suite E2E selon les pages et les composants du site testé.
5
+ */
6
+ import { createComponent, createPage } from "@duplojs/playwright";
7
+
8
+ // `Website` représente l’application et son contexte global, `Page` un écran
9
+ // navigable et `Component` une zone réutilisable de l’interface.
10
+ // Les locators sont déclarés dans ces objets ; les specs utilisent leurs
11
+ // éléments et leurs méthodes sans répéter les sélecteurs.
12
+ //
13
+ // tests/
14
+ // website.ts
15
+ // pages/
16
+ // home.page.ts
17
+ // search.page.ts
18
+ // components/
19
+ // newsletter.component.ts
20
+ // specs/
21
+ // home.spec.ts
22
+
23
+ // Un composant declare son element racine et les elements utiles au test.
24
+ export const newsletterComponent = createComponent(
25
+ "newsletter",
26
+ {
27
+ getMainElement({ body }) {
28
+ return body.locator("[data-newsletter]");
29
+ },
30
+ getElements({ mainElement }) {
31
+ return {
32
+ emailInput: mainElement.locator("input[type='email']"),
33
+ submitButton: mainElement.locator("button[type='submit']"),
34
+ feedback: mainElement.locator("[data-feedback]"),
35
+ };
36
+ },
37
+ },
38
+ );
39
+
40
+ // Une page ajoute un path et les composants disponibles sur cet ecran.
41
+ export const homePage = createPage(
42
+ "home",
43
+ {
44
+ makePath() {
45
+ return "/";
46
+ },
47
+ getMainElement({ body }) {
48
+ return body.locator("main[data-page='home']");
49
+ },
50
+ getElements({ mainElement }) {
51
+ return {
52
+ title: mainElement.locator("h1"),
53
+ };
54
+ },
55
+ components: [newsletterComponent],
56
+ },
57
+ );
58
+
59
+ // Les parametres d'URL restent avec la definition de l'ecran.
60
+ export const articlePage = createPage(
61
+ "article",
62
+ {
63
+ makePath(params: { slug: string }) {
64
+ return `/articles/${params.slug}`;
65
+ },
66
+ getMainElement({ body }) {
67
+ return body.locator("article");
68
+ },
69
+ getElements({ mainElement }) {
70
+ return {
71
+ title: mainElement.locator("h1"),
72
+ content: mainElement.locator("[data-content]"),
73
+ };
74
+ },
75
+ },
76
+ );
@@ -0,0 +1,90 @@
1
+ /**
2
+ * @title Ecrire un parcours de test
3
+ *
4
+ * Scénarios utilisateur, interactions et vérifications avec les objets du site.
5
+ */
6
+ import { Actions, Assertions, createComponent, createPage, type Website } from "@duplojs/playwright";
7
+
8
+ interface TestFixtures {
9
+ website: Website;
10
+ }
11
+
12
+ declare const testClient: (title: string, body: (fixtures: TestFixtures) => Promise<void>) => void;
13
+
14
+ const newsletterComponent = createComponent(
15
+ "newsletter",
16
+ {
17
+ getMainElement({ body }) {
18
+ return body.locator("[data-newsletter]");
19
+ },
20
+ getElements({ mainElement }) {
21
+ return {
22
+ emailInput: mainElement.locator("input[type='email']"),
23
+ submitButton: mainElement.locator("button[type='submit']"),
24
+ feedback: mainElement.locator("[data-feedback]"),
25
+ };
26
+ },
27
+ getMethods({ elements }) {
28
+ return {
29
+ async subscribe(email: string) {
30
+ await elements!.emailInput.fill(email);
31
+ await elements!.submitButton.click();
32
+ },
33
+ };
34
+ },
35
+ },
36
+ );
37
+
38
+ const homePage = createPage(
39
+ "home",
40
+ {
41
+ makePath() {
42
+ return "/";
43
+ },
44
+ getMainElement({ body }) {
45
+ return body.locator("main[data-page='home']");
46
+ },
47
+ getElements({ mainElement }) {
48
+ return {
49
+ title: mainElement.locator("h1"),
50
+ };
51
+ },
52
+ components: [newsletterComponent],
53
+ },
54
+ );
55
+
56
+ // Les actions parcourent l'interface, les assertions vérifient son état.
57
+ // Les clés passées aux helpers viennent des éléments nommés dans `getElements`.
58
+ // `Actions` et `Assertions` limitent ces clés aux éléments déclarés sur l’objet ciblé.
59
+ // Le scénario navigue vers une page, récupère son composant, agit sur ses
60
+ // éléments puis vérifie le résultat ; une méthode nommée peut regrouper les actions.
61
+ testClient("visitor subscribes to the newsletter", async({ website }) => {
62
+ const home = await website.iNavigateTo(homePage);
63
+
64
+ await website.iExpectTitleIs(/Home/);
65
+ await Assertions.toHaveText(home, "title", "Welcome");
66
+
67
+ const newsletter = await home.iWantToSeeComponent("newsletter");
68
+
69
+ await Assertions.toHaveText(newsletter, "feedback", "No email submitted yet.");
70
+ await Actions.fill(newsletter, "emailInput", "jane@duplo.dev");
71
+ await Actions.click(newsletter, "submitButton");
72
+ await Assertions.toContainText(newsletter, "feedback", "jane@duplo.dev");
73
+ await Assertions.toHaveValue(newsletter, "emailInput", "jane@duplo.dev");
74
+ });
75
+
76
+ testClient("visitor cannot submit an empty newsletter form", async({ website }) => {
77
+ const home = await website.iNavigateTo(homePage);
78
+ const newsletter = await home.iWantToSeeComponent("newsletter");
79
+
80
+ await Actions.click(newsletter, "submitButton");
81
+ await Assertions.toHaveText(newsletter, "feedback", "Email is required.");
82
+ });
83
+
84
+ testClient("component methods can express repeated intentions", async({ website }) => {
85
+ const home = await website.iNavigateTo(homePage);
86
+ const newsletter = await home.iWantToSeeComponent("newsletter");
87
+
88
+ await newsletter.methods.subscribe("jane@duplo.dev");
89
+ await Assertions.toContainText(newsletter, "feedback", "jane@duplo.dev");
90
+ });
@@ -0,0 +1,3 @@
1
+ ## Tests E2E
2
+
3
+ Vérification des parcours utilisateur dans une application web.
@@ -0,0 +1 @@
1
+ # Tests
@@ -0,0 +1,44 @@
1
+ ### Frontières entre domaine, application et infrastructure
2
+
3
+ Responsabilités des couches, sens des dépendances et préparation des garanties aux frontières du système.
4
+
5
+ ---
6
+
7
+ ### Faire du domaine le contrat de l'opération
8
+
9
+ Le domaine traduit les exigences du monde réel en états, préconditions, transitions et opérations coordonnées. Il définit ce qui doit se passer et les garanties nécessaires pour continuer.
10
+
11
+ | Couche | Responsabilité | Exemple du retour d'un livre |
12
+ | --- | --- | --- |
13
+ | Domaine | Définir les états autorisés, les faits, leur enchaînement et les capacités extérieures requises. | Exiger le lien client-livre, rendre le livre, demander la prochaine inscription en attente et réserver le livre si une inscription existe. |
14
+ | Application | Satisfaire les préconditions et les effets de l'agrégat avec des ports abstraits. | Fournir le résultat de sélection attendu, sauvegarder les entités transmises et propager une indisponibilité. |
15
+ | Infrastructure | Réaliser les ports et adapter les points d'entrée aux contrats applicatifs. | Interroger le stockage, hydrater les entités et convertir le résultat en réponse HTTP. |
16
+
17
+ Une règle encore à décider dans un use case ou un adaptateur indique un contrat métier incomplet. Les couches techniques conservent leurs choix d'implémentation, mais ces choix doivent respecter les garanties définies dans le domaine.
18
+
19
+ ### Sens des dépendances
20
+
21
+ ```text
22
+ Infrastructure → Application → Domaine
23
+ Infrastructure → Domaine
24
+ ```
25
+
26
+ Le domaine n'importe ni l'application ni l'infrastructure. Il décrit ses besoins extérieurs par des [repositories](../02-domains/30-repositories.md) et ses demandes d'effets par des [workflows](../02-domains/20-aggregates.md). Il n'appelle aucune implémentation technique.
27
+
28
+ L'application définit les ports de ses use cases ; l'infrastructure les implémente. Changer de base de données ou de protocole d'entrée ne change donc pas les transitions du domaine.
29
+
30
+ ### Respecter les responsabilités aux frontières
31
+
32
+ Un point d'entrée peut lire des données par un repository et appeler les qualifications pures du domaine pour préparer les paramètres d'un use case. Une lecture seule, comme `findById`, ne demande pas un use case de relais.
33
+
34
+ Dès que l'opération conduit un cycle de vie ou des effets métier, le point d'entrée passe par un use case. Il n'appelle directement ni fait ni agrégat, et ne modifie pas une entité pour réaliser une transition. Les fonctions du domaine restent responsables de la vérification qui établit un flag ou une preuve combinatoire.
35
+
36
+ La signature du use case indique les [préconditions à préparer](../03-applications/10-use-case.md#préparer-les-préconditions-demandées) par le point d'entrée.
37
+
38
+ ### Faire circuler les garanties et les résultats
39
+
40
+ Les structures du domaine valident les entrées externes et hydratent les données existantes. Les qualifications, refinements et repositories établissent les garanties exigées par l'opération.
41
+
42
+ Le domaine distingue les issues qui ont un sens pour son raisonnement. L'application sélectionne celles qui permettent de poursuivre et propage les refus, y compris les résultats techniques ajoutés par ses ports. L'infrastructure adapte le résultat final au consommateur : statut HTTP, sortie de commande ou autre protocole.
43
+
44
+ Le traitement des refus prévisibles et des défaillances imprévues suit les [règles des résultats et exceptions](../../01-fundamental/03-either/50-external-results.ts).
@@ -0,0 +1,3 @@
1
+ ## Architecture
2
+
3
+ Répartir la décision métier, la satisfaction des contrats et la réalisation technique entre domaine, application et infrastructure.
@@ -0,0 +1,50 @@
1
+ ### Entités, qualifications et faits
2
+
3
+ Modéliser les données et leurs invariants, certifier leurs conditions actuelles et rendre explicites les préconditions des transitions métier.
4
+
5
+ ---
6
+
7
+ ### Décrire les valeurs possibles
8
+
9
+ Une entité porte une identité et une forme métier stable. Ses propriétés utilisent les types qui expriment leur sens et leurs contraintes : identifiants distincts, titres bornés, collections limitées ou variantes d'état. Regrouper dans son namespace les types, structures, états, flags et l'union de ses faits permet de retrouver son cycle de vie.
10
+
11
+ Les propriétés propres à un état appartiennent à une variante de cet état. Dans [`Book`](../fixtures/business/domains/entities/book/index.ts), `state` est une union de `TaggedObject` : disponible, emprunté, réservé ou retiré. Le client emprunteur existe dans `BorrowedState` ; `ReservedState` référence l'entrée de liste d'attente concernée. Ces informations ne deviennent pas des propriétés facultatives communes à tous les livres.
12
+
13
+ Chaque [`WaitingListEntry`](../fixtures/business/domains/entities/waitingListEntry/index.ts) représente une inscription individuelle. Plusieurs inscriptions peuvent concerner un livre, mais son état `ReservedState` n'en référence qu'une : la réservation effective. Le client reste porté par cette entrée, sans duplication de son `clientId` dans le livre.
14
+
15
+ Les primitives et leurs API sont présentées dans les fondamentaux : [NewType](../../01-fundamental/06-modeling/10-new-type.ts), [Entity](../../01-fundamental/06-modeling/20-entity.ts) et [TaggedObject](../../01-fundamental/06-modeling/30-tagged-object.ts).
16
+
17
+ ### Qualifier une condition actuelle
18
+
19
+ Une qualification observe une entité sans modifier ses propriétés métier. Elle vérifie une condition puis retourne la valeur avec le `Flag` correspondant. Un flag peut certifier un état nommé ou une capacité ; plusieurs flags compatibles peuvent coexister.
20
+
21
+ [`Book.refineState`](../fixtures/business/domains/entities/book/index.ts) reconnaît l'état du livre et produit notamment `AvailableFlag` ou `BorrowedFlag`. Dans [`Client`](../fixtures/business/domains/entities/client/index.ts), l'invariant limite `borrowedBooks` à cinq identifiants. La qualification `canRentBook` vérifie que le client en possède au plus quatre avant une nouvelle location et produit `CanRentBookFlag`. Cette capacité permet au fait de préserver l'invariant en ajoutant un emprunt.
22
+
23
+ | Besoin | Modélisation |
24
+ | --- | --- |
25
+ | Décrire les données propres à une variante | État sous forme de `TaggedObject`. |
26
+ | Certifier une condition sur l'entité actuelle | Qualification et `Flag`. |
27
+ | Certifier une combinaison de plusieurs valeurs | [Refinement](./40-refinements.md) produisant une évidence sur le contexte. |
28
+ | Exiger une vérification extérieure ou une provenance | [Evidence](./20-aggregates.md#exiger-les-preuves-utiles-au-parcours) issue du contrat qui établit cette garantie. |
29
+
30
+ `Flag.append` appartient aux qualifications et aux faits qui établissent réellement sa condition. L'appelant consomme leur résultat ; il ne fabrique pas un flag pour contourner une précondition.
31
+
32
+ ### Définir le contrat d'une transition
33
+
34
+ Une `Fact` représente une création ou une modification métier. Elle peut lire plusieurs entités, mais ne modifie qu'une seule cible. Chaque changement métier passe par un fait, y compris un changement de propriété qui conserve le même état nommé. Un [agrégat](./20-aggregates.md) coordonne les faits lorsque l'opération touche plusieurs cibles.
35
+
36
+ La signature du fait exige les états nécessaires à sa transition. [`BookRentalFact`](../fixtures/business/domains/entities/book/facts/rental.ts) reçoit un client portant `CanRentBookFlag` et un livre portant `AvailableFlag`. Il construit l'état emprunté, met à jour le livre, ajoute `BorrowedFlag` et applique le fait. Le client est lu ; sa modification appartient à [`ClientRentBookFact`](../fixtures/business/domains/entities/client/facts/rentBook.ts).
37
+
38
+ Une évidence appartient au contrat d'un fait si sa garantie est intrinsèque à la transition ; une provenance propre à un parcours relève de l'agrégat. Ainsi, [`PrepareWaitingListEntryFact`](../fixtures/business/domains/entities/waitingListEntry/facts/prepare.ts) exige une entrée en attente, sans imposer sa sélection lors d'un retour. [`CancelWaitingListEntryFact`](../fixtures/business/domains/entities/waitingListEntry/facts/cancel.ts) accepte une entrée en attente ou prête et un motif, pour servir aussi bien le retrait d'un livre qu'une annulation par le client.
39
+
40
+ ### Distinguer l'événement et l'état produit
41
+
42
+ La payload du fait décrit l'événement ; celle du flag porte les informations de la condition certifiée. Elles peuvent différer. [`ReserveBookFact`](../fixtures/business/domains/entities/book/facts/reserve.ts) conserve `waitingListEntryId` et `clientId` dans sa payload. L'état réservé et son flag ne conservent que `waitingListEntryId`, suffisant pour référencer la réservation effective.
43
+
44
+ Le fait courant porté par une entité ne constitue pas à lui seul un historique persistant. Si le métier demande cet historique, sa conservation doit être prévue par un contrat dédié.
45
+
46
+ ### Poursuivre avec la nouvelle entité
47
+
48
+ `Entity.update` est réservé aux faits. Il reconstruit l'entité à partir de ses propriétés déclarées et ne conserve pas automatiquement les anciens flags ni le fait précédent. La transition établit les garanties de la nouvelle valeur, puis les opérations suivantes utilisent cette valeur retournée.
49
+
50
+ Les propriétés fournies à `update` doivent déjà satisfaire les types métier : cette opération ne réalise pas une validation runtime. Ne pas transférer les preuves de l'ancienne valeur par un spread ou un cast. Le [cycle de vie avec Flag et Fact](../../01-fundamental/06-modeling/40-entity-lifecycle.ts) détaille ces mécanismes.
@@ -0,0 +1,65 @@
1
+ ### Agrégats, preuves et workflows
2
+
3
+ Définir le déroulement d'une opération métier, les preuves qui l'autorisent et les demandes commit, resolve et iterate que l'application doit satisfaire.
4
+
5
+ ---
6
+
7
+ ### Porter l'opération métier entière
8
+
9
+ Dans ce Type-Driven Design, un **agrégat est une fonction qui conduit une opération métier**. Il exige ses préconditions, coordonne les [faits](./10-entities.md#définir-le-contrat-dune-transition), relie leurs entrées et leurs sorties et détermine le résultat final.
10
+
11
+ [`clientRentBook`](../fixtures/business/domains/aggregates/clientRentBook.ts) coordonne ainsi le fait qui ajoute un emprunt au client et celui qui passe le livre à l'état emprunté.
12
+
13
+ L'agrégat fixe aussi les exigences propres à l'opération. [`CreateBookFact`](../fixtures/business/domains/entities/book/facts/create.ts) reçoit un identifiant et un titre. L'agrégat [`createBook`](../fixtures/business/domains/aggregates/createBook.ts) exige en plus que l'identifiant ait été généré et que le titre ait été vérifié comme absent du catalogue. Le fait reste réutilisable ; ce parcours de création porte ses propres preuves.
14
+
15
+ Un agrégat reste pur. Il n'appelle ni repository ni callback impure injectée : il transforme les valeurs disponibles et déclare les besoins extérieurs. À entrées et résultats fournis identiques, son raisonnement métier est identique. Un agrégat sans effet à demander peut retourner directement une valeur ou un `Either`.
16
+
17
+ ### Exiger les preuves utiles au parcours
18
+
19
+ Une [Evidence](../../01-fundamental/06-modeling/50-evidence.ts) rend exigible dans les types une garantie de contexte, une relation entre valeurs ou une provenance.
20
+
21
+ Un `Book.Title` satisfait ses contraintes de forme, mais ne prouve pas que le catalogue ne contient pas déjà ce titre. Le résultat `title-not-registered` du [repository](../fixtures/business/domains/repositories/book.ts) apporte cette garantie contextuelle. De même, le [refinement client-livre](./40-refinements.md) certifie une combinaison que ni le client seul ni un livre simplement qualifié comme emprunté ne suffisent à établir.
22
+
23
+ `GetEvidenceResult` permet d'exiger la valeur portant une évidence précise parmi les résultats d'une fonction ou d'une méthode, y compris à travers une promesse, un `Either` ou un générateur. L'agrégat se rattache ainsi au contrat qui définit le résultat attendu sans reprendre l'ensemble de ses issues. Les noms d'évidence distinguent les garanties : deux méthodes annonçant le même type et la même évidence restent compatibles. Une identité d'opération particulière se représente avec une [SignedFunction](../../01-fundamental/06-modeling/60-signed-function.ts).
24
+
25
+ L'agrégat peut exiger la provenance d'une sélection ou d'un flux, puis transmettre aux faits les entités qualifiées selon leurs propres préconditions.
26
+
27
+ ### Faire du workflow le contrat du déroulement
28
+
29
+ Le workflow exprime les endroits où l'opération transmet une donnée, attend un contexte supplémentaire ou applique un cycle de vie à une collection. Il précise ce que l'application doit fournir et à quel moment. Les branches métier restent dans l'agrégat ; les appels techniques restent dans l'application.
30
+
31
+ | Demande | Ce que le domaine impose | Liberté de réalisation technique |
32
+ | --- | --- | --- |
33
+ | `commit` | Prendre en charge une donnée à cette étape du déroulement. | Réaliser la sauvegarde ou l'action prévue par le contrat. |
34
+ | `resolve` | Fournir le résultat qualifié nécessaire pour poursuivre le raisonnement. | Obtenir ce résultat par l'opération extérieure appropriée. |
35
+ | `iterate` | Fournir les éléments du périmètre demandé et exécuter le workflow métier pour chacun. | Lire le flux progressivement et organiser son exécution. |
36
+
37
+ Les fixtures déclarent ces demandes avec `createWorkflow` ; l'[application](../03-applications/10-use-case.md) les satisfait avec `consumeWorkflow`.
38
+
39
+ ### Transmettre une donnée avec commit
40
+
41
+ Un `commit` indique que la donnée a atteint le point où l'agrégat veut la confier à une opération extérieure. La persistance est un usage fréquent. Le commit peut aussi demander une action, par exemple l'envoi d'un courriel. Sa valeur de retour n'alimente pas le raisonnement métier du générateur.
42
+
43
+ Dans [`clientRentBook`](../fixtures/business/domains/aggregates/clientRentBook.ts), les faits produisent les nouvelles valeurs du client et du livre. Le premier commit les transmet ensemble ; le suivant demande le courriel d'information. L'application attend la prise en charge du premier avant de poursuivre avec le second.
44
+
45
+ Si l'identité de l'action importe, `withSignature<EmailRepository["sendRentInformationalEmail"]>()` exige la fonction signée correspondante. Un commit qui transmet simplement une entité laisse au use case le raccordement à sa sauvegarde.
46
+
47
+ ### Obtenir un contexte extérieur avec resolve
48
+
49
+ Un `resolve` intervient lorsque les données disponibles ne permettent pas de poursuivre la décision métier. Une qualification pure suffit si toute l'information est déjà présente. Quand la réponse dépend d'une collection extérieure potentiellement volumineuse, le domaine exige le résultat utile sans charger cette collection dans ses paramètres.
50
+
51
+ [`clientGiveBackBook`](../fixtures/business/domains/aggregates/clientGiveBackBook.ts) applique les faits de retour, puis demande la prochaine inscription en attente du livre rendu. Il exige les résultats de `WaitingListEntryRepository.findNextPendingForBook` : une entrée sélectionnée ou la preuve qu'aucune entrée n'est en attente.
52
+
53
+ Ces deux issues permettent de continuer. Sans inscription, l'agrégat transmet le livre disponible et le client. Avec une inscription, il applique les faits de réservation du livre et de préparation de l'entrée, puis transmet les trois entités. La décision de réserver appartient entièrement au domaine ; l'application fournit le contexte qui la rend possible.
54
+
55
+ Le [repository](./30-repositories.md#décrire-la-garantie-au-delà-de-la-forme) précise les garanties de sélection ; l'[application](../03-applications/10-use-case.md#propager-les-arrêts-et-respecter-les-garanties-dexécution) traite l'impossibilité de satisfaire la résolution.
56
+
57
+ ### Faire vivre chaque élément d'un flux avec iterate
58
+
59
+ Un `iterate` exprime qu'une même opération métier doit s'appliquer à chaque élément d'un ensemble. Il permet de parcourir un volume non borné sans réunir toutes les entités en mémoire et de conserver les transitions du domaine pour chacune.
60
+
61
+ [`withdrawBook`](../fixtures/business/domains/aggregates/withdrawBook.ts) reçoit un livre disponible ou réservé : il est encore à la bibliothèque. Après le fait de retrait et le commit du livre, il demande toutes les entrées actives de sa liste d'attente. Chaque élément doit porter la preuve du résultat de `WaitingListEntryRepository.findAllActiveByBook` et contenir une entrée en attente ou prête.
62
+
63
+ Le workflow imbriqué applique `CancelWaitingListEntryFact` avec le motif `book-withdrawn`, puis transmet l'entrée annulée par un commit. Une mise à jour globale en base contournerait ces faits et leurs préconditions. Le domaine conserve le choix de la transition et de son motif ; l'application fournit la génératrice asynchrone et le degré de concurrence.
64
+
65
+ Le résultat final est le livre retiré ; le workflow n'accumule pas les entrées traitées. Le [use case de retrait](../fixtures/business/applications/useCases/withdrawBook.ts) montre le raccordement du flux et des commits. Les conséquences d'un arrêt après des effets déjà exécutés sont décrites dans la [consommation applicative](../03-applications/10-use-case.md#propager-les-arrêts-et-respecter-les-garanties-dexécution).
@@ -0,0 +1,35 @@
1
+ ### Repositories : capacités extérieures du domaine
2
+
3
+ Définir les opérations extérieures utiles au métier, leurs résultats et leurs garanties sans exposer leur réalisation technique.
4
+
5
+ ---
6
+
7
+ ### Nommer les opérations dont le métier a besoin
8
+
9
+ Un repository décrit les entrées, les issues et les garanties d'une capacité extérieure au domaine. Ce rôle couvre les lectures, les vérifications sur des collections, la génération d'identifiants, les flux d'entités ou l'envoi d'un courriel, sans exposer leur réalisation technique.
10
+
11
+ | Besoin du domaine | Contrat de la fixture |
12
+ | --- | --- |
13
+ | Disposer d'un identifiant généré | [`BookRepository.generateId`](../fixtures/business/domains/repositories/book.ts). |
14
+ | Savoir si un titre figure déjà au catalogue | `BookRepository.titleIsAlreadyRegistered`. |
15
+ | Retrouver une entité existante | `BookRepository.findById` et [`ClientRepository.findById`](../fixtures/business/domains/repositories/client.ts). |
16
+ | Choisir la prochaine inscription ou parcourir les inscriptions actives | [`WaitingListEntryRepository`](../fixtures/business/domains/repositories/waitingListEntry.ts). |
17
+ | Envoyer le courriel d'information de location | [`EmailRepository.sendRentInformationalEmail`](../fixtures/business/domains/repositories/email.ts). |
18
+
19
+ Un nom d'opération métier et une signature précise rendent le besoin implémentable. Une méthode générique qui laisse à chaque appelant le choix des filtres ou de l'ordre peut laisser des décisions métier hors du domaine.
20
+
21
+ ### Décrire la garantie, au-delà de la forme
22
+
23
+ Le contrat doit expliquer ce que le résultat certifie. Pour `findNextPendingForBook`, il s'agit de l'entrée en attente du livre fourni ayant la date de demande la plus ancienne ; l'identifiant départage les dates égales. Le résultat contient le livre disponible et cette entrée qualifiée. L'autre issue certifie l'absence d'entrée en attente pour ce livre.
24
+
25
+ Les deux issues normales sont `next-pending-waiting-list-entry` et `no-pending-waiting-list-entry`. Elles utilisent [EvidenceResult](../../01-fundamental/06-modeling/50-evidence.ts) pour associer leur information à l'évidence de même nom sur leur valeur.
26
+
27
+ Pour `findAllActiveByBook`, le résultat est un générateur asynchrone : il fournit une fois chaque entrée active du livre retiré, encore en attente ou déjà prête. Les entrées annulées sont exclues. Chaque élément contient le livre et l'entrée qualifiée, avec l'évidence `active-waiting-list-entry-for-withdrawn-book`. Le contrat porte sur chaque élément et sur le périmètre complet du flux ; le type de l'élément ne suffit pas à prouver l'exhaustivité de sa lecture.
28
+
29
+ ### Exiger un résultat sans appeler l'implémentation
30
+
31
+ Le contrat peut fournir une précondition, comme le titre vérifié de `createBook`, ou le contexte d'un `resolve` ou d'un `iterate`. L'agrégat exige ces résultats avec [GetEvidenceResult](./20-aggregates.md#exiger-les-preuves-utiles-au-parcours). Pour demander une opération identifiée, comme le courriel de location ou `BookRepository.rankAvailability`, il utilise un [commit signé](./20-aggregates.md#transmettre-une-donnée-avec-commit).
32
+
33
+ ### Laisser les contraintes techniques à l'application
34
+
35
+ Le [port applicatif](../03-applications/20-ports.md#ajouter-les-résultats-propres-à-lexécution-technique) ajoute les refus techniques aux résultats métier. L'[infrastructure](../04-infrastructure/10-implementation.md#implémenter-les-garanties-des-ports) établit les garanties annoncées : une autre technologie peut satisfaire le même contrat si elle en respecte le sens, au-delà de la compatibilité TypeScript.