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

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 (853) hide show
  1. package/README.md +73 -2
  2. package/dist/bin/index.d.ts +2 -0
  3. package/dist/bin/index.mjs +7 -0
  4. package/dist/bin/installSkill/index.d.ts +2 -0
  5. package/dist/bin/installSkill/index.mjs +25 -0
  6. package/dist/bin/installSkill/skill.d.ts +28 -0
  7. package/dist/bin/installSkill/skill.mjs +58 -0
  8. package/dist/bin/packagePath.d.ts +2 -0
  9. package/dist/bin/packagePath.mjs +12 -0
  10. package/dist/bin/setup/index.d.ts +12 -0
  11. package/dist/bin/setup/index.mjs +33 -0
  12. package/dist/bin/setup/instructions.d.ts +8 -0
  13. package/dist/bin/setup/instructions.mjs +27 -0
  14. package/dist/index.cjs +1 -0
  15. package/dist/index.d.ts +1 -0
  16. package/dist/index.mjs +0 -0
  17. package/docs/API/10-lang/10-array/10-at.ts +65 -0
  18. package/docs/API/10-lang/10-array/10-chunk.ts +42 -0
  19. package/docs/API/10-lang/10-array/10-coalescing.ts +20 -0
  20. package/docs/API/10-lang/10-array/10-concat.ts +34 -0
  21. package/docs/API/10-lang/10-array/10-copyWithin.ts +34 -0
  22. package/docs/API/10-lang/10-array/10-every.ts +25 -0
  23. package/docs/API/10-lang/10-array/10-fill.ts +34 -0
  24. package/docs/API/10-lang/10-array/10-fillAll.ts +34 -0
  25. package/docs/API/10-lang/10-array/10-filter.ts +43 -0
  26. package/docs/API/10-lang/10-array/10-find.ts +33 -0
  27. package/docs/API/10-lang/10-array/10-findAndReplace.ts +35 -0
  28. package/docs/API/10-lang/10-array/10-findAndSpliceDelete.ts +35 -0
  29. package/docs/API/10-lang/10-array/10-findAndSpliceInsert.ts +35 -0
  30. package/docs/API/10-lang/10-array/10-findAndSpliceReplace.ts +24 -0
  31. package/docs/API/10-lang/10-array/10-findDuplicates.ts +19 -0
  32. package/docs/API/10-lang/10-array/10-findIndex.ts +25 -0
  33. package/docs/API/10-lang/10-array/10-findLast.ts +33 -0
  34. package/docs/API/10-lang/10-array/10-findLastIndex.ts +25 -0
  35. package/docs/API/10-lang/10-array/10-first.ts +21 -0
  36. package/docs/API/10-lang/10-array/10-flat.ts +22 -0
  37. package/docs/API/10-lang/10-array/10-flatMap.ts +24 -0
  38. package/docs/API/10-lang/10-array/10-from.ts +25 -0
  39. package/docs/API/10-lang/10-array/10-group.ts +27 -0
  40. package/docs/API/10-lang/10-array/10-groupOutput.ts +30 -0
  41. package/docs/API/10-lang/10-array/10-includes.ts +24 -0
  42. package/docs/API/10-lang/10-array/10-indexOf.ts +24 -0
  43. package/docs/API/10-lang/10-array/10-insert.ts +34 -0
  44. package/docs/API/10-lang/10-array/10-is.ts +29 -0
  45. package/docs/API/10-lang/10-array/10-isLastIndex.ts +24 -0
  46. package/docs/API/10-lang/10-array/10-last.ts +21 -0
  47. package/docs/API/10-lang/10-array/10-lastIndexOf.ts +24 -0
  48. package/docs/API/10-lang/10-array/10-length.ts +28 -0
  49. package/docs/API/10-lang/10-array/10-lengthEqual.ts +39 -0
  50. package/docs/API/10-lang/10-array/10-map.ts +34 -0
  51. package/docs/API/10-lang/10-array/10-maxElements.ts +44 -0
  52. package/docs/API/10-lang/10-array/10-minElements.ts +44 -0
  53. package/docs/API/10-lang/10-array/10-notIncludes.ts +24 -0
  54. package/docs/API/10-lang/10-array/10-pop.ts +23 -0
  55. package/docs/API/10-lang/10-array/10-prepend.ts +34 -0
  56. package/docs/API/10-lang/10-array/10-push.ts +34 -0
  57. package/docs/API/10-lang/10-array/10-reduce.ts +28 -0
  58. package/docs/API/10-lang/10-array/10-reduceFrom.ts +16 -0
  59. package/docs/API/10-lang/10-array/10-reduceRight.ts +28 -0
  60. package/docs/API/10-lang/10-array/10-reverse.ts +25 -0
  61. package/docs/API/10-lang/10-array/10-select.ts +26 -0
  62. package/docs/API/10-lang/10-array/10-set.ts +24 -0
  63. package/docs/API/10-lang/10-array/10-shift.ts +23 -0
  64. package/docs/API/10-lang/10-array/10-slice.ts +24 -0
  65. package/docs/API/10-lang/10-array/10-some.ts +25 -0
  66. package/docs/API/10-lang/10-array/10-sort.ts +34 -0
  67. package/docs/API/10-lang/10-array/10-spliceDelete.ts +34 -0
  68. package/docs/API/10-lang/10-array/10-spliceInsert.ts +34 -0
  69. package/docs/API/10-lang/10-array/10-spliceReplace.ts +24 -0
  70. package/docs/API/10-lang/10-array/10-unshift.ts +34 -0
  71. package/docs/API/10-lang/10-array/index.llms.md +220 -0
  72. package/docs/API/10-lang/10-array/index.md +3 -0
  73. package/docs/API/10-lang/10-chrono/10-addDays.ts +25 -0
  74. package/docs/API/10-lang/10-chrono/10-addHours.ts +25 -0
  75. package/docs/API/10-lang/10-chrono/10-addMilliseconds.ts +25 -0
  76. package/docs/API/10-lang/10-chrono/10-addMinutes.ts +25 -0
  77. package/docs/API/10-lang/10-chrono/10-addMonths.ts +25 -0
  78. package/docs/API/10-lang/10-chrono/10-addSeconds.ts +25 -0
  79. package/docs/API/10-lang/10-chrono/10-addTime.ts +38 -0
  80. package/docs/API/10-lang/10-chrono/10-addWeeks.ts +25 -0
  81. package/docs/API/10-lang/10-chrono/10-addYears.ts +25 -0
  82. package/docs/API/10-lang/10-chrono/10-applyTimezone.ts +29 -0
  83. package/docs/API/10-lang/10-chrono/10-betweenThanDate.ts +27 -0
  84. package/docs/API/10-lang/10-chrono/10-betweenThanOrEqualDate.ts +27 -0
  85. package/docs/API/10-lang/10-chrono/10-betweenThanOrEqualTime.ts +27 -0
  86. package/docs/API/10-lang/10-chrono/10-betweenThanTime.ts +27 -0
  87. package/docs/API/10-lang/10-chrono/10-closestTo.ts +45 -0
  88. package/docs/API/10-lang/10-chrono/10-computeTime.ts +35 -0
  89. package/docs/API/10-lang/10-chrono/10-createDate.ts +122 -0
  90. package/docs/API/10-lang/10-chrono/10-createDateOrThrow.ts +39 -0
  91. package/docs/API/10-lang/10-chrono/10-createTime.ts +86 -0
  92. package/docs/API/10-lang/10-chrono/10-createTimeOrThrow.ts +28 -0
  93. package/docs/API/10-lang/10-chrono/10-eachDate.ts +67 -0
  94. package/docs/API/10-lang/10-chrono/10-equalDate.ts +26 -0
  95. package/docs/API/10-lang/10-chrono/10-equalTime.ts +26 -0
  96. package/docs/API/10-lang/10-chrono/10-formatDate.ts +43 -0
  97. package/docs/API/10-lang/10-chrono/10-formatTime.ts +37 -0
  98. package/docs/API/10-lang/10-chrono/10-getDayOfMonth.ts +37 -0
  99. package/docs/API/10-lang/10-chrono/10-getDayOfWeek.ts +30 -0
  100. package/docs/API/10-lang/10-chrono/10-getDayOfYear.ts +28 -0
  101. package/docs/API/10-lang/10-chrono/10-getDifference.ts +29 -0
  102. package/docs/API/10-lang/10-chrono/10-getFirstDayOfMonth.ts +24 -0
  103. package/docs/API/10-lang/10-chrono/10-getFirstDayOfWeek.ts +24 -0
  104. package/docs/API/10-lang/10-chrono/10-getHour.ts +28 -0
  105. package/docs/API/10-lang/10-chrono/10-getLastDayOfMonth.ts +24 -0
  106. package/docs/API/10-lang/10-chrono/10-getLastDayOfWeek.ts +24 -0
  107. package/docs/API/10-lang/10-chrono/10-getMilliseconds.ts +24 -0
  108. package/docs/API/10-lang/10-chrono/10-getMinute.ts +27 -0
  109. package/docs/API/10-lang/10-chrono/10-getMonth.ts +27 -0
  110. package/docs/API/10-lang/10-chrono/10-getSecond.ts +27 -0
  111. package/docs/API/10-lang/10-chrono/10-getTimezoneOffset.ts +28 -0
  112. package/docs/API/10-lang/10-chrono/10-getWeekOfYear.ts +27 -0
  113. package/docs/API/10-lang/10-chrono/10-getYear.ts +27 -0
  114. package/docs/API/10-lang/10-chrono/10-greaterThanDate.ts +26 -0
  115. package/docs/API/10-lang/10-chrono/10-greaterThanOrEqualDate.ts +26 -0
  116. package/docs/API/10-lang/10-chrono/10-greaterThanOrEqualTime.ts +26 -0
  117. package/docs/API/10-lang/10-chrono/10-greaterThanTime.ts +26 -0
  118. package/docs/API/10-lang/10-chrono/10-isDate.ts +36 -0
  119. package/docs/API/10-lang/10-chrono/10-isSafeTimeValue.ts +19 -0
  120. package/docs/API/10-lang/10-chrono/10-isSafeTimestamp.ts +19 -0
  121. package/docs/API/10-lang/10-chrono/10-isSerializedTheDate.ts +41 -0
  122. package/docs/API/10-lang/10-chrono/10-isSerializedTheTime.ts +41 -0
  123. package/docs/API/10-lang/10-chrono/10-isTime.ts +36 -0
  124. package/docs/API/10-lang/10-chrono/10-lessThanDate.ts +26 -0
  125. package/docs/API/10-lang/10-chrono/10-lessThanOrEqualDate.ts +26 -0
  126. package/docs/API/10-lang/10-chrono/10-lessThanOrEqualTime.ts +26 -0
  127. package/docs/API/10-lang/10-chrono/10-lessThanTime.ts +26 -0
  128. package/docs/API/10-lang/10-chrono/10-makeSafeTimeValue.ts +19 -0
  129. package/docs/API/10-lang/10-chrono/10-makeSafeTimestamp.ts +19 -0
  130. package/docs/API/10-lang/10-chrono/10-maxDate.ts +19 -0
  131. package/docs/API/10-lang/10-chrono/10-maxTime.ts +19 -0
  132. package/docs/API/10-lang/10-chrono/10-minDate.ts +19 -0
  133. package/docs/API/10-lang/10-chrono/10-minTime.ts +19 -0
  134. package/docs/API/10-lang/10-chrono/10-now.ts +13 -0
  135. package/docs/API/10-lang/10-chrono/10-round.ts +41 -0
  136. package/docs/API/10-lang/10-chrono/10-serialize.ts +23 -0
  137. package/docs/API/10-lang/10-chrono/10-sortDates.ts +30 -0
  138. package/docs/API/10-lang/10-chrono/10-sortTimes.ts +29 -0
  139. package/docs/API/10-lang/10-chrono/10-subtractDays.ts +25 -0
  140. package/docs/API/10-lang/10-chrono/10-subtractHours.ts +25 -0
  141. package/docs/API/10-lang/10-chrono/10-subtractMilliseconds.ts +25 -0
  142. package/docs/API/10-lang/10-chrono/10-subtractMinutes.ts +25 -0
  143. package/docs/API/10-lang/10-chrono/10-subtractMonths.ts +25 -0
  144. package/docs/API/10-lang/10-chrono/10-subtractSeconds.ts +25 -0
  145. package/docs/API/10-lang/10-chrono/10-subtractTime.ts +38 -0
  146. package/docs/API/10-lang/10-chrono/10-subtractWeeks.ts +25 -0
  147. package/docs/API/10-lang/10-chrono/10-subtractYears.ts +25 -0
  148. package/docs/API/10-lang/10-chrono/10-toDateISOString.ts +17 -0
  149. package/docs/API/10-lang/10-chrono/10-toNative.ts +25 -0
  150. package/docs/API/10-lang/10-chrono/10-toTimeValue.ts +17 -0
  151. package/docs/API/10-lang/10-chrono/10-toTimestamp.ts +17 -0
  152. package/docs/API/10-lang/10-chrono/10-today.ts +13 -0
  153. package/docs/API/10-lang/10-chrono/10-tomorrow.ts +13 -0
  154. package/docs/API/10-lang/10-chrono/10-yesterday.ts +13 -0
  155. package/docs/API/10-lang/10-chrono/index.llms.md +332 -0
  156. package/docs/API/10-lang/10-chrono/index.md +3 -0
  157. package/docs/API/10-lang/10-common/10-and.ts +51 -0
  158. package/docs/API/10-lang/10-common/10-asserts.ts +13 -0
  159. package/docs/API/10-lang/10-common/10-asyncInnerPipe.ts +23 -0
  160. package/docs/API/10-lang/10-common/10-asyncLoop.ts +25 -0
  161. package/docs/API/10-lang/10-common/10-asyncPipe.ts +21 -0
  162. package/docs/API/10-lang/10-common/10-callThen.ts +22 -0
  163. package/docs/API/10-lang/10-common/10-cast.ts +16 -0
  164. package/docs/API/10-lang/10-common/10-clone.ts +12 -0
  165. package/docs/API/10-lang/10-common/10-createAsyncRetry.ts +34 -0
  166. package/docs/API/10-lang/10-common/10-createBuilder.ts +19 -0
  167. package/docs/API/10-lang/10-common/10-createEnum.ts +25 -0
  168. package/docs/API/10-lang/10-common/10-createExternalPromise.ts +13 -0
  169. package/docs/API/10-lang/10-common/10-createFormData.ts +16 -0
  170. package/docs/API/10-lang/10-common/10-createInterpolation.ts +12 -0
  171. package/docs/API/10-lang/10-common/10-createQueue.ts +17 -0
  172. package/docs/API/10-lang/10-common/10-createTransformer.ts +16 -0
  173. package/docs/API/10-lang/10-common/10-detachObjectMethod.ts +20 -0
  174. package/docs/API/10-lang/10-common/10-equal.ts +37 -0
  175. package/docs/API/10-lang/10-common/10-escapeRegExp.ts +11 -0
  176. package/docs/API/10-lang/10-common/10-falsy.ts +31 -0
  177. package/docs/API/10-lang/10-common/10-forward.ts +11 -0
  178. package/docs/API/10-lang/10-common/10-forwardAsserts.ts +17 -0
  179. package/docs/API/10-lang/10-common/10-forwardLog.ts +11 -0
  180. package/docs/API/10-lang/10-common/10-infer.ts +16 -0
  181. package/docs/API/10-lang/10-common/10-innerPipe.ts +23 -0
  182. package/docs/API/10-lang/10-common/10-instanceOf.ts +34 -0
  183. package/docs/API/10-lang/10-common/10-isType.ts +35 -0
  184. package/docs/API/10-lang/10-common/10-justExec.ts +28 -0
  185. package/docs/API/10-lang/10-common/10-justReturn.ts +19 -0
  186. package/docs/API/10-lang/10-common/10-loop.ts +20 -0
  187. package/docs/API/10-lang/10-common/10-memo.ts +12 -0
  188. package/docs/API/10-lang/10-common/10-memoObject.ts +11 -0
  189. package/docs/API/10-lang/10-common/10-memoPromise.ts +16 -0
  190. package/docs/API/10-lang/10-common/10-or.ts +43 -0
  191. package/docs/API/10-lang/10-common/10-pipe.ts +21 -0
  192. package/docs/API/10-lang/10-common/10-pipeCall.ts +20 -0
  193. package/docs/API/10-lang/10-common/10-prepareAsyncPipe.ts +20 -0
  194. package/docs/API/10-lang/10-common/10-preparePipe.ts +20 -0
  195. package/docs/API/10-lang/10-common/10-promiseAll.ts +16 -0
  196. package/docs/API/10-lang/10-common/10-promiseObject.ts +22 -0
  197. package/docs/API/10-lang/10-common/10-removeConstraint.ts +13 -0
  198. package/docs/API/10-lang/10-common/10-shameOnYou.ts +20 -0
  199. package/docs/API/10-lang/10-common/10-simpleClone.ts +12 -0
  200. package/docs/API/10-lang/10-common/10-stringToBytes.ts +16 -0
  201. package/docs/API/10-lang/10-common/10-stringToMillisecond.ts +17 -0
  202. package/docs/API/10-lang/10-common/10-tap.ts +28 -0
  203. package/docs/API/10-lang/10-common/10-timeout.ts +11 -0
  204. package/docs/API/10-lang/10-common/10-toCurriedPredicate.ts +28 -0
  205. package/docs/API/10-lang/10-common/10-toJSON.ts +15 -0
  206. package/docs/API/10-lang/10-common/10-toNative.ts +15 -0
  207. package/docs/API/10-lang/10-common/10-toRegExp.ts +17 -0
  208. package/docs/API/10-lang/10-common/10-transformer.ts +21 -0
  209. package/docs/API/10-lang/10-common/10-truthy.ts +31 -0
  210. package/docs/API/10-lang/10-common/10-useAsyncRetry.ts +31 -0
  211. package/docs/API/10-lang/10-common/10-when.ts +27 -0
  212. package/docs/API/10-lang/10-common/10-whenElse.ts +28 -0
  213. package/docs/API/10-lang/10-common/10-whenNot.ts +57 -0
  214. package/docs/API/10-lang/10-common/index.llms.md +232 -0
  215. package/docs/API/10-lang/10-common/index.md +3 -0
  216. package/docs/API/10-lang/10-dataStructure/10-absolutePath.ts +25 -0
  217. package/docs/API/10-lang/10-dataStructure/10-allowedCharacters.ts +25 -0
  218. package/docs/API/10-lang/10-dataStructure/10-array.ts +23 -0
  219. package/docs/API/10-lang/10-dataStructure/10-arrayLengthEqual.ts +25 -0
  220. package/docs/API/10-lang/10-dataStructure/10-betweenThan.ts +25 -0
  221. package/docs/API/10-lang/10-dataStructure/10-betweenThanOrEqual.ts +25 -0
  222. package/docs/API/10-lang/10-dataStructure/10-bigint.ts +22 -0
  223. package/docs/API/10-lang/10-dataStructure/10-boolean.ts +22 -0
  224. package/docs/API/10-lang/10-dataStructure/10-createCodec.ts +45 -0
  225. package/docs/API/10-lang/10-dataStructure/10-createCodecs.ts +134 -0
  226. package/docs/API/10-lang/10-dataStructure/10-createErrorInterpreter.ts +74 -0
  227. package/docs/API/10-lang/10-dataStructure/10-date.ts +23 -0
  228. package/docs/API/10-lang/10-dataStructure/10-email.ts +25 -0
  229. package/docs/API/10-lang/10-dataStructure/10-endsWith.ts +24 -0
  230. package/docs/API/10-lang/10-dataStructure/10-even.ts +25 -0
  231. package/docs/API/10-lang/10-dataStructure/10-extend.ts +27 -0
  232. package/docs/API/10-lang/10-dataStructure/10-greaterThan.ts +25 -0
  233. package/docs/API/10-lang/10-dataStructure/10-greaterThanOrEqual.ts +25 -0
  234. package/docs/API/10-lang/10-dataStructure/10-include.ts +24 -0
  235. package/docs/API/10-lang/10-dataStructure/10-integer.ts +25 -0
  236. package/docs/API/10-lang/10-dataStructure/10-isNullStructure.ts +12 -0
  237. package/docs/API/10-lang/10-dataStructure/10-isNullable.ts +12 -0
  238. package/docs/API/10-lang/10-dataStructure/10-isOptional.ts +12 -0
  239. package/docs/API/10-lang/10-dataStructure/10-isUndefinedStructure.ts +12 -0
  240. package/docs/API/10-lang/10-dataStructure/10-lazy.ts +23 -0
  241. package/docs/API/10-lang/10-dataStructure/10-lessThan.ts +25 -0
  242. package/docs/API/10-lang/10-dataStructure/10-lessThanOrEqual.ts +25 -0
  243. package/docs/API/10-lang/10-dataStructure/10-literal.ts +19 -0
  244. package/docs/API/10-lang/10-dataStructure/10-maxCharacters.ts +25 -0
  245. package/docs/API/10-lang/10-dataStructure/10-maxElements.ts +25 -0
  246. package/docs/API/10-lang/10-dataStructure/10-minCharacters.ts +25 -0
  247. package/docs/API/10-lang/10-dataStructure/10-minElements.ts +25 -0
  248. package/docs/API/10-lang/10-dataStructure/10-multipleOf.ts +25 -0
  249. package/docs/API/10-lang/10-dataStructure/10-negative.ts +25 -0
  250. package/docs/API/10-lang/10-dataStructure/10-notEmpty.ts +25 -0
  251. package/docs/API/10-lang/10-dataStructure/10-notZero.ts +25 -0
  252. package/docs/API/10-lang/10-dataStructure/10-null.ts +22 -0
  253. package/docs/API/10-lang/10-dataStructure/10-nullable.ts +19 -0
  254. package/docs/API/10-lang/10-dataStructure/10-number.ts +22 -0
  255. package/docs/API/10-lang/10-dataStructure/10-numberInString.ts +25 -0
  256. package/docs/API/10-lang/10-dataStructure/10-object.ts +25 -0
  257. package/docs/API/10-lang/10-dataStructure/10-odd.ts +25 -0
  258. package/docs/API/10-lang/10-dataStructure/10-optional.ts +19 -0
  259. package/docs/API/10-lang/10-dataStructure/10-partial.ts +23 -0
  260. package/docs/API/10-lang/10-dataStructure/10-path.ts +25 -0
  261. package/docs/API/10-lang/10-dataStructure/10-positive.ts +25 -0
  262. package/docs/API/10-lang/10-dataStructure/10-record.ts +22 -0
  263. package/docs/API/10-lang/10-dataStructure/10-refine.ts +27 -0
  264. package/docs/API/10-lang/10-dataStructure/10-regex.ts +24 -0
  265. package/docs/API/10-lang/10-dataStructure/10-required.ts +21 -0
  266. package/docs/API/10-lang/10-dataStructure/10-safe.ts +25 -0
  267. package/docs/API/10-lang/10-dataStructure/10-segmentPath.ts +25 -0
  268. package/docs/API/10-lang/10-dataStructure/10-startsWith.ts +24 -0
  269. package/docs/API/10-lang/10-dataStructure/10-strictNegative.ts +25 -0
  270. package/docs/API/10-lang/10-dataStructure/10-strictPositive.ts +25 -0
  271. package/docs/API/10-lang/10-dataStructure/10-string.ts +22 -0
  272. package/docs/API/10-lang/10-dataStructure/10-stringLengthEqual.ts +25 -0
  273. package/docs/API/10-lang/10-dataStructure/10-time.ts +23 -0
  274. package/docs/API/10-lang/10-dataStructure/10-trimmed.ts +25 -0
  275. package/docs/API/10-lang/10-dataStructure/10-typeStructureIdentifier.ts +33 -0
  276. package/docs/API/10-lang/10-dataStructure/10-undefined.ts +22 -0
  277. package/docs/API/10-lang/10-dataStructure/10-union.ts +24 -0
  278. package/docs/API/10-lang/10-dataStructure/10-unwrapLazy.ts +17 -0
  279. package/docs/API/10-lang/10-dataStructure/10-url.ts +25 -0
  280. package/docs/API/10-lang/10-dataStructure/10-uuid.ts +25 -0
  281. package/docs/API/10-lang/10-dataStructure/index.llms.md +264 -0
  282. package/docs/API/10-lang/10-dataStructure/index.md +3 -0
  283. package/docs/API/10-lang/10-either/10-asyncGroup.ts +44 -0
  284. package/docs/API/10-lang/10-either/10-asyncSafeCallback.ts +25 -0
  285. package/docs/API/10-lang/10-either/10-error.ts +12 -0
  286. package/docs/API/10-lang/10-either/10-expect.ts +13 -0
  287. package/docs/API/10-lang/10-either/10-extractErrorInLeft.ts +45 -0
  288. package/docs/API/10-lang/10-either/10-fail.ts +12 -0
  289. package/docs/API/10-lang/10-either/10-forwardAssertsSelection.ts +28 -0
  290. package/docs/API/10-lang/10-either/10-group.ts +58 -0
  291. package/docs/API/10-lang/10-either/10-hasInformation.ts +30 -0
  292. package/docs/API/10-lang/10-either/10-isLeft.ts +25 -0
  293. package/docs/API/10-lang/10-either/10-isRight.ts +25 -0
  294. package/docs/API/10-lang/10-either/10-isSelected.ts +41 -0
  295. package/docs/API/10-lang/10-either/10-keepAsRightByInformation.ts +29 -0
  296. package/docs/API/10-lang/10-either/10-keepAsRightSelection.ts +23 -0
  297. package/docs/API/10-lang/10-either/10-left.ts +13 -0
  298. package/docs/API/10-lang/10-either/10-matchInformation.ts +28 -0
  299. package/docs/API/10-lang/10-either/10-matchInformationCombination.ts +61 -0
  300. package/docs/API/10-lang/10-either/10-matchInformationCombinationOtherwise.ts +62 -0
  301. package/docs/API/10-lang/10-either/10-matchInformationOtherwise.ts +29 -0
  302. package/docs/API/10-lang/10-either/10-none.ts +12 -0
  303. package/docs/API/10-lang/10-either/10-ok.ts +12 -0
  304. package/docs/API/10-lang/10-either/10-result.ts +18 -0
  305. package/docs/API/10-lang/10-either/10-rewriteInformation.ts +24 -0
  306. package/docs/API/10-lang/10-either/10-right.ts +13 -0
  307. package/docs/API/10-lang/10-either/10-rightAsyncPipe.ts +70 -0
  308. package/docs/API/10-lang/10-either/10-rightPipe.ts +72 -0
  309. package/docs/API/10-lang/10-either/10-safeCallback.ts +29 -0
  310. package/docs/API/10-lang/10-either/10-some.ts +12 -0
  311. package/docs/API/10-lang/10-either/10-success.ts +12 -0
  312. package/docs/API/10-lang/10-either/10-toMaybe.ts +53 -0
  313. package/docs/API/10-lang/10-either/10-unwrapByInformation.ts +20 -0
  314. package/docs/API/10-lang/10-either/10-unwrapByInformationOrThrow.ts +19 -0
  315. package/docs/API/10-lang/10-either/10-unwrapLeft.ts +14 -0
  316. package/docs/API/10-lang/10-either/10-unwrapLeftOrThrow.ts +17 -0
  317. package/docs/API/10-lang/10-either/10-unwrapOr.ts +17 -0
  318. package/docs/API/10-lang/10-either/10-unwrapOtherwise.ts +20 -0
  319. package/docs/API/10-lang/10-either/10-unwrapRight.ts +14 -0
  320. package/docs/API/10-lang/10-either/10-unwrapRightOrThrow.ts +17 -0
  321. package/docs/API/10-lang/10-either/10-unwrapSelection.ts +26 -0
  322. package/docs/API/10-lang/10-either/10-unwrapSelectionOrThrow.ts +19 -0
  323. package/docs/API/10-lang/10-either/10-whenHasInformation.ts +36 -0
  324. package/docs/API/10-lang/10-either/10-whenHasInformationOtherwise.ts +29 -0
  325. package/docs/API/10-lang/10-either/10-whenIsLeft.ts +20 -0
  326. package/docs/API/10-lang/10-either/10-whenIsLeftOtherwise.ts +27 -0
  327. package/docs/API/10-lang/10-either/10-whenIsRight.ts +20 -0
  328. package/docs/API/10-lang/10-either/10-whenIsRightOtherwise.ts +26 -0
  329. package/docs/API/10-lang/10-either/10-whenIsSelected.ts +33 -0
  330. package/docs/API/10-lang/10-either/10-whenIsSelectedOtherwise.ts +35 -0
  331. package/docs/API/10-lang/10-either/index.llms.md +196 -0
  332. package/docs/API/10-lang/10-either/index.md +3 -0
  333. package/docs/API/10-lang/10-generator/10-asyncChunk.ts +55 -0
  334. package/docs/API/10-lang/10-generator/10-asyncConcat.ts +43 -0
  335. package/docs/API/10-lang/10-generator/10-asyncFilter.ts +41 -0
  336. package/docs/API/10-lang/10-generator/10-asyncFlat.ts +37 -0
  337. package/docs/API/10-lang/10-generator/10-asyncGroup.ts +65 -0
  338. package/docs/API/10-lang/10-generator/10-asyncLoop.ts +59 -0
  339. package/docs/API/10-lang/10-generator/10-asyncMap.ts +48 -0
  340. package/docs/API/10-lang/10-generator/10-asyncReduce.ts +63 -0
  341. package/docs/API/10-lang/10-generator/10-chunk.ts +44 -0
  342. package/docs/API/10-lang/10-generator/10-concat.ts +37 -0
  343. package/docs/API/10-lang/10-generator/10-createExternalAsyncGenerator.ts +29 -0
  344. package/docs/API/10-lang/10-generator/10-execute.ts +44 -0
  345. package/docs/API/10-lang/10-generator/10-filter.ts +35 -0
  346. package/docs/API/10-lang/10-generator/10-flat.ts +25 -0
  347. package/docs/API/10-lang/10-generator/10-group.ts +44 -0
  348. package/docs/API/10-lang/10-generator/10-groupOutput.ts +48 -0
  349. package/docs/API/10-lang/10-generator/10-loop.ts +55 -0
  350. package/docs/API/10-lang/10-generator/10-map.ts +35 -0
  351. package/docs/API/10-lang/10-generator/10-reduce.ts +51 -0
  352. package/docs/API/10-lang/10-generator/10-reduceFrom.ts +30 -0
  353. package/docs/API/10-lang/10-generator/index.llms.md +84 -0
  354. package/docs/API/10-lang/10-generator/index.md +3 -0
  355. package/docs/API/10-lang/10-number/10-betweenThan.ts +43 -0
  356. package/docs/API/10-lang/10-number/10-betweenThanOrEqual.ts +43 -0
  357. package/docs/API/10-lang/10-number/10-greaterThan.ts +35 -0
  358. package/docs/API/10-lang/10-number/10-greaterThanOrEqual.ts +35 -0
  359. package/docs/API/10-lang/10-number/10-isEven.ts +33 -0
  360. package/docs/API/10-lang/10-number/10-isInteger.ts +33 -0
  361. package/docs/API/10-lang/10-number/10-isMultipleOf.ts +35 -0
  362. package/docs/API/10-lang/10-number/10-isNegative.ts +33 -0
  363. package/docs/API/10-lang/10-number/10-isNotZero.ts +33 -0
  364. package/docs/API/10-lang/10-number/10-isOdd.ts +33 -0
  365. package/docs/API/10-lang/10-number/10-isPositive.ts +33 -0
  366. package/docs/API/10-lang/10-number/10-isSafe.ts +33 -0
  367. package/docs/API/10-lang/10-number/10-isStrictNegative.ts +34 -0
  368. package/docs/API/10-lang/10-number/10-isStrictPositive.ts +33 -0
  369. package/docs/API/10-lang/10-number/10-lessThan.ts +35 -0
  370. package/docs/API/10-lang/10-number/10-lessThanOrEqual.ts +35 -0
  371. package/docs/API/10-lang/10-number/10-max.ts +19 -0
  372. package/docs/API/10-lang/10-number/10-maxOf.ts +19 -0
  373. package/docs/API/10-lang/10-number/10-min.ts +19 -0
  374. package/docs/API/10-lang/10-number/10-minOf.ts +19 -0
  375. package/docs/API/10-lang/10-number/10-sort.ts +19 -0
  376. package/docs/API/10-lang/10-number/10-sum.ts +19 -0
  377. package/docs/API/10-lang/10-number/index.llms.md +92 -0
  378. package/docs/API/10-lang/10-number/index.md +3 -0
  379. package/docs/API/10-lang/10-object/10-assign.ts +41 -0
  380. package/docs/API/10-lang/10-object/10-countKeys.ts +15 -0
  381. package/docs/API/10-lang/10-object/10-deepDiscriminate.ts +63 -0
  382. package/docs/API/10-lang/10-object/10-deepOverride.ts +35 -0
  383. package/docs/API/10-lang/10-object/10-discriminate.ts +55 -0
  384. package/docs/API/10-lang/10-object/10-discriminateEntryKey.ts +43 -0
  385. package/docs/API/10-lang/10-object/10-discriminateEntryValue.ts +44 -0
  386. package/docs/API/10-lang/10-object/10-entries.ts +19 -0
  387. package/docs/API/10-lang/10-object/10-entry.ts +17 -0
  388. package/docs/API/10-lang/10-object/10-fromEntries.ts +23 -0
  389. package/docs/API/10-lang/10-object/10-getDeepProperty.ts +26 -0
  390. package/docs/API/10-lang/10-object/10-getProperty.ts +24 -0
  391. package/docs/API/10-lang/10-object/10-hasKeys.ts +43 -0
  392. package/docs/API/10-lang/10-object/10-isSimple.ts +38 -0
  393. package/docs/API/10-lang/10-object/10-keys.ts +19 -0
  394. package/docs/API/10-lang/10-object/10-omit.ts +39 -0
  395. package/docs/API/10-lang/10-object/10-override.ts +24 -0
  396. package/docs/API/10-lang/10-object/10-pick.ts +41 -0
  397. package/docs/API/10-lang/10-object/10-to.ts +40 -0
  398. package/docs/API/10-lang/10-object/10-transformProperties.ts +43 -0
  399. package/docs/API/10-lang/10-object/10-transformProperty.ts +39 -0
  400. package/docs/API/10-lang/10-object/10-values.ts +19 -0
  401. package/docs/API/10-lang/10-object/index.llms.md +92 -0
  402. package/docs/API/10-lang/10-object/index.md +3 -0
  403. package/docs/API/10-lang/10-path/10-computeRelative.ts +19 -0
  404. package/docs/API/10-lang/10-path/10-concatSegment.ts +28 -0
  405. package/docs/API/10-lang/10-path/10-create.ts +21 -0
  406. package/docs/API/10-lang/10-path/10-createAbsolute.ts +21 -0
  407. package/docs/API/10-lang/10-path/10-createAbsoluteOrThrow.ts +16 -0
  408. package/docs/API/10-lang/10-path/10-createMatcher.ts +50 -0
  409. package/docs/API/10-lang/10-path/10-createOrThrow.ts +16 -0
  410. package/docs/API/10-lang/10-path/10-createSegment.ts +26 -0
  411. package/docs/API/10-lang/10-path/10-createSegmentOrThrow.ts +16 -0
  412. package/docs/API/10-lang/10-path/10-declareAbsolutePath.ts +15 -0
  413. package/docs/API/10-lang/10-path/10-declarePath.ts +15 -0
  414. package/docs/API/10-lang/10-path/10-declareSegment.ts +15 -0
  415. package/docs/API/10-lang/10-path/10-getBaseName.ts +22 -0
  416. package/docs/API/10-lang/10-path/10-getExtensionName.ts +22 -0
  417. package/docs/API/10-lang/10-path/10-getParentFolderPath.ts +25 -0
  418. package/docs/API/10-lang/10-path/10-is.ts +46 -0
  419. package/docs/API/10-lang/10-path/10-isAbsolute.ts +46 -0
  420. package/docs/API/10-lang/10-path/10-isSegment.ts +42 -0
  421. package/docs/API/10-lang/10-path/10-normalize.ts +26 -0
  422. package/docs/API/10-lang/10-path/10-resolveFrom.ts +37 -0
  423. package/docs/API/10-lang/10-path/10-resolveRelative.ts +23 -0
  424. package/docs/API/10-lang/10-path/index.llms.md +88 -0
  425. package/docs/API/10-lang/10-path/index.md +3 -0
  426. package/docs/API/10-lang/10-pattern/10-exhaustive.ts +26 -0
  427. package/docs/API/10-lang/10-pattern/10-isMatch.ts +72 -0
  428. package/docs/API/10-lang/10-pattern/10-match.ts +133 -0
  429. package/docs/API/10-lang/10-pattern/10-matchWithEntity.ts +49 -0
  430. package/docs/API/10-lang/10-pattern/10-matchWithEntityOtherwise.ts +55 -0
  431. package/docs/API/10-lang/10-pattern/10-matchWithError.ts +45 -0
  432. package/docs/API/10-lang/10-pattern/10-matchWithErrorOtherwise.ts +48 -0
  433. package/docs/API/10-lang/10-pattern/10-matchWithFact.ts +49 -0
  434. package/docs/API/10-lang/10-pattern/10-matchWithFactOtherwise.ts +49 -0
  435. package/docs/API/10-lang/10-pattern/10-matchWithNumber.ts +33 -0
  436. package/docs/API/10-lang/10-pattern/10-matchWithNumberOtherwise.ts +37 -0
  437. package/docs/API/10-lang/10-pattern/10-matchWithString.ts +34 -0
  438. package/docs/API/10-lang/10-pattern/10-matchWithStringOtherwise.ts +35 -0
  439. package/docs/API/10-lang/10-pattern/10-matchWithTaggedObject.ts +43 -0
  440. package/docs/API/10-lang/10-pattern/10-matchWithTaggedObjectOtherwise.ts +49 -0
  441. package/docs/API/10-lang/10-pattern/10-otherwise.ts +28 -0
  442. package/docs/API/10-lang/10-pattern/10-union.ts +47 -0
  443. package/docs/API/10-lang/10-pattern/10-when.ts +46 -0
  444. package/docs/API/10-lang/10-pattern/10-whenNot.ts +123 -0
  445. package/docs/API/10-lang/10-pattern/index.llms.md +80 -0
  446. package/docs/API/10-lang/10-pattern/index.md +3 -0
  447. package/docs/API/10-lang/10-printer/10-bold.ts +12 -0
  448. package/docs/API/10-lang/10-printer/10-colorized.ts +18 -0
  449. package/docs/API/10-lang/10-printer/10-colorizedBold.ts +18 -0
  450. package/docs/API/10-lang/10-printer/10-indent.ts +20 -0
  451. package/docs/API/10-lang/10-printer/10-primitives.md +11 -0
  452. package/docs/API/10-lang/10-printer/10-render.ts +29 -0
  453. package/docs/API/10-lang/10-printer/10-renderLine.ts +12 -0
  454. package/docs/API/10-lang/10-printer/10-renderParagraph.ts +16 -0
  455. package/docs/API/10-lang/10-printer/index.llms.md +37 -0
  456. package/docs/API/10-lang/10-printer/index.md +3 -0
  457. package/docs/API/10-lang/10-string/10-at.ts +18 -0
  458. package/docs/API/10-lang/10-string/10-capitalize.ts +18 -0
  459. package/docs/API/10-lang/10-string/10-charAt.ts +18 -0
  460. package/docs/API/10-lang/10-string/10-concat.ts +18 -0
  461. package/docs/API/10-lang/10-string/10-endsWith.ts +33 -0
  462. package/docs/API/10-lang/10-string/10-extract.ts +18 -0
  463. package/docs/API/10-lang/10-string/10-extractAll.ts +18 -0
  464. package/docs/API/10-lang/10-string/10-first.ts +17 -0
  465. package/docs/API/10-lang/10-string/10-includes.ts +33 -0
  466. package/docs/API/10-lang/10-string/10-indexOf.ts +17 -0
  467. package/docs/API/10-lang/10-string/10-isComposedOf.ts +33 -0
  468. package/docs/API/10-lang/10-string/10-isEmail.ts +56 -0
  469. package/docs/API/10-lang/10-string/10-isIn.ts +34 -0
  470. package/docs/API/10-lang/10-string/10-isKeyof.ts +37 -0
  471. package/docs/API/10-lang/10-string/10-isNotEmpty.ts +32 -0
  472. package/docs/API/10-lang/10-string/10-isNumber.ts +32 -0
  473. package/docs/API/10-lang/10-string/10-isTrimmed.ts +33 -0
  474. package/docs/API/10-lang/10-string/10-isUrl.ts +31 -0
  475. package/docs/API/10-lang/10-string/10-isUuid.ts +31 -0
  476. package/docs/API/10-lang/10-string/10-join.ts +18 -0
  477. package/docs/API/10-lang/10-string/10-last.ts +17 -0
  478. package/docs/API/10-lang/10-string/10-lastIndexOf.ts +17 -0
  479. package/docs/API/10-lang/10-string/10-length.ts +18 -0
  480. package/docs/API/10-lang/10-string/10-lengthEqual.ts +33 -0
  481. package/docs/API/10-lang/10-string/10-maxCharacters.ts +33 -0
  482. package/docs/API/10-lang/10-string/10-minCharacters.ts +33 -0
  483. package/docs/API/10-lang/10-string/10-normalize.ts +17 -0
  484. package/docs/API/10-lang/10-string/10-padEnd.ts +17 -0
  485. package/docs/API/10-lang/10-string/10-padStart.ts +17 -0
  486. package/docs/API/10-lang/10-string/10-pop.ts +17 -0
  487. package/docs/API/10-lang/10-string/10-prepend.ts +17 -0
  488. package/docs/API/10-lang/10-string/10-repeat.ts +17 -0
  489. package/docs/API/10-lang/10-string/10-replace.ts +18 -0
  490. package/docs/API/10-lang/10-string/10-replaceAll.ts +17 -0
  491. package/docs/API/10-lang/10-string/10-search.ts +17 -0
  492. package/docs/API/10-lang/10-string/10-shift.ts +17 -0
  493. package/docs/API/10-lang/10-string/10-slice.ts +17 -0
  494. package/docs/API/10-lang/10-string/10-sort.ts +19 -0
  495. package/docs/API/10-lang/10-string/10-sortCompare.ts +17 -0
  496. package/docs/API/10-lang/10-string/10-split.ts +34 -0
  497. package/docs/API/10-lang/10-string/10-startsWith.ts +33 -0
  498. package/docs/API/10-lang/10-string/10-stringify.ts +11 -0
  499. package/docs/API/10-lang/10-string/10-substring.ts +17 -0
  500. package/docs/API/10-lang/10-string/10-test.ts +17 -0
  501. package/docs/API/10-lang/10-string/10-to.ts +11 -0
  502. package/docs/API/10-lang/10-string/10-toLowerCase.ts +17 -0
  503. package/docs/API/10-lang/10-string/10-toUpperCase.ts +17 -0
  504. package/docs/API/10-lang/10-string/10-trim.ts +17 -0
  505. package/docs/API/10-lang/10-string/10-trimEnd.ts +17 -0
  506. package/docs/API/10-lang/10-string/10-trimStart.ts +17 -0
  507. package/docs/API/10-lang/10-string/10-uncapitalize.ts +17 -0
  508. package/docs/API/10-lang/10-string/index.llms.md +208 -0
  509. package/docs/API/10-lang/10-string/index.md +3 -0
  510. package/docs/API/10-lang/10-tuple/10-from.ts +50 -0
  511. package/docs/API/10-lang/10-tuple/10-map.ts +37 -0
  512. package/docs/API/10-lang/10-tuple/index.llms.md +12 -0
  513. package/docs/API/10-lang/10-tuple/index.md +3 -0
  514. package/docs/API/10-lang/index.md +3 -0
  515. package/docs/API/40-json-web-token/10-tokenHandler/10-createTokenHandler.ts +160 -0
  516. package/docs/API/40-json-web-token/10-tokenHandler/index.llms.md +8 -0
  517. package/docs/API/40-json-web-token/10-tokenHandler/index.md +3 -0
  518. package/docs/API/40-json-web-token/20-signer/10-createHS256.ts +24 -0
  519. package/docs/API/40-json-web-token/20-signer/10-createHS512.ts +24 -0
  520. package/docs/API/40-json-web-token/20-signer/10-createRS256.ts +28 -0
  521. package/docs/API/40-json-web-token/20-signer/10-createRS512.ts +28 -0
  522. package/docs/API/40-json-web-token/20-signer/10-factory.ts +29 -0
  523. package/docs/API/40-json-web-token/20-signer/index.llms.md +24 -0
  524. package/docs/API/40-json-web-token/20-signer/index.md +3 -0
  525. package/docs/API/40-json-web-token/30-cipher/10-createRSAOAEP.ts +26 -0
  526. package/docs/API/40-json-web-token/30-cipher/10-createRSAOAEP256.ts +26 -0
  527. package/docs/API/40-json-web-token/30-cipher/10-factory.ts +29 -0
  528. package/docs/API/40-json-web-token/30-cipher/index.llms.md +16 -0
  529. package/docs/API/40-json-web-token/30-cipher/index.md +3 -0
  530. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.decrypt.ts +17 -0
  531. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.encrypt.ts +11 -0
  532. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.generateInitializationVector.ts +9 -0
  533. package/docs/API/40-json-web-token/40-utils/10-HMAC.sign.ts +13 -0
  534. package/docs/API/40-json-web-token/40-utils/10-HMAC.verify.ts +11 -0
  535. package/docs/API/40-json-web-token/40-utils/10-RSA.sign.ts +14 -0
  536. package/docs/API/40-json-web-token/40-utils/10-RSA.verify.ts +13 -0
  537. package/docs/API/40-json-web-token/40-utils/10-RSA_OAEP.decrypt.ts +13 -0
  538. package/docs/API/40-json-web-token/40-utils/10-RSA_OAEP.encrypt.ts +10 -0
  539. package/docs/API/40-json-web-token/40-utils/10-decodeBase64.ts +9 -0
  540. package/docs/API/40-json-web-token/40-utils/10-decodeBase64Url.ts +9 -0
  541. package/docs/API/40-json-web-token/40-utils/10-decodeText.ts +9 -0
  542. package/docs/API/40-json-web-token/40-utils/10-encodeBase64.ts +9 -0
  543. package/docs/API/40-json-web-token/40-utils/10-encodeBase64Url.ts +9 -0
  544. package/docs/API/40-json-web-token/40-utils/10-encodeText.ts +9 -0
  545. package/docs/API/40-json-web-token/40-utils/10-isBase64Url.ts +11 -0
  546. package/docs/API/40-json-web-token/40-utils/10-jsonParse.ts +11 -0
  547. package/docs/API/40-json-web-token/40-utils/10-pemToBinary.ts +11 -0
  548. package/docs/API/40-json-web-token/40-utils/index.llms.md +76 -0
  549. package/docs/API/40-json-web-token/40-utils/index.md +3 -0
  550. package/docs/API/40-json-web-token/index.md +3 -0
  551. package/docs/API/50-form/10-vue/10-construction/10-createForm.ts +48 -0
  552. package/docs/API/50-form/10-vue/10-construction/10-createFormField.ts +66 -0
  553. package/docs/API/50-form/10-vue/10-construction/10-createGridTemplates.ts +39 -0
  554. package/docs/API/50-form/10-vue/10-construction/10-createInput.ts +46 -0
  555. package/docs/API/50-form/10-vue/10-construction/10-createTemplate.ts +36 -0
  556. package/docs/API/50-form/10-vue/10-construction/fixtures/AddressInput.vue +19 -0
  557. package/docs/API/50-form/10-vue/10-construction/index.llms.md +24 -0
  558. package/docs/API/50-form/10-vue/10-construction/index.md +3 -0
  559. package/docs/API/50-form/10-vue/20-layouts/10-useCheckLayout.ts +40 -0
  560. package/docs/API/50-form/10-vue/20-layouts/10-useDisabledLayout.ts +34 -0
  561. package/docs/API/50-form/10-vue/20-layouts/10-useMultiLayout.ts +32 -0
  562. package/docs/API/50-form/10-vue/20-layouts/10-useRepeatLayout.ts +34 -0
  563. package/docs/API/50-form/10-vue/20-layouts/10-useSectionLayout.ts +20 -0
  564. package/docs/API/50-form/10-vue/20-layouts/10-useSlotLayout.ts +37 -0
  565. package/docs/API/50-form/10-vue/20-layouts/10-useStepLayout.ts +31 -0
  566. package/docs/API/50-form/10-vue/20-layouts/10-useUnionLayout.ts +48 -0
  567. package/docs/API/50-form/10-vue/20-layouts/index.llms.md +36 -0
  568. package/docs/API/50-form/10-vue/20-layouts/index.md +3 -0
  569. package/docs/API/50-form/10-vue/30-designSystem/10-useCheckbox.ts +13 -0
  570. package/docs/API/50-form/10-vue/30-designSystem/10-useCheckboxPolicy.ts +18 -0
  571. package/docs/API/50-form/10-vue/30-designSystem/10-useDateInput.ts +20 -0
  572. package/docs/API/50-form/10-vue/30-designSystem/10-useDualRangeInput.ts +27 -0
  573. package/docs/API/50-form/10-vue/30-designSystem/10-useFileInput.ts +23 -0
  574. package/docs/API/50-form/10-vue/30-designSystem/10-useNumberInput.ts +18 -0
  575. package/docs/API/50-form/10-vue/30-designSystem/10-useRadioGroup.ts +31 -0
  576. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeDateInput.ts +23 -0
  577. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeInput.ts +18 -0
  578. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeTimeInput.ts +23 -0
  579. package/docs/API/50-form/10-vue/30-designSystem/10-useSelectInput.ts +31 -0
  580. package/docs/API/50-form/10-vue/30-designSystem/10-useTextInput.ts +14 -0
  581. package/docs/API/50-form/10-vue/30-designSystem/10-useTextareaInput.ts +14 -0
  582. package/docs/API/50-form/10-vue/30-designSystem/10-useTimeInput.ts +20 -0
  583. package/docs/API/50-form/10-vue/30-designSystem/20-components.md +11 -0
  584. package/docs/API/50-form/10-vue/30-designSystem/index.llms.md +65 -0
  585. package/docs/API/50-form/10-vue/30-designSystem/index.md +3 -0
  586. package/docs/API/50-form/10-vue/fixtures/templates.ts +20 -0
  587. package/docs/API/50-form/10-vue/index.md +3 -0
  588. package/docs/API/50-form/index.md +3 -0
  589. package/docs/API/60-playwright/10-construction/10-createComponent.ts +47 -0
  590. package/docs/API/60-playwright/10-construction/10-createComponentInteraction.ts +28 -0
  591. package/docs/API/60-playwright/10-construction/10-createPage.ts +34 -0
  592. package/docs/API/60-playwright/10-construction/10-createStepWrapper.ts +23 -0
  593. package/docs/API/60-playwright/10-construction/10-createWebsite.ts +57 -0
  594. package/docs/API/60-playwright/10-construction/10-initClient.ts +38 -0
  595. package/docs/API/60-playwright/10-construction/index.llms.md +28 -0
  596. package/docs/API/60-playwright/10-construction/index.md +3 -0
  597. package/docs/API/60-playwright/20-actions/10-check.ts +9 -0
  598. package/docs/API/60-playwright/20-actions/10-clear.ts +9 -0
  599. package/docs/API/60-playwright/20-actions/10-click.ts +9 -0
  600. package/docs/API/60-playwright/20-actions/10-dragTo.ts +10 -0
  601. package/docs/API/60-playwright/20-actions/10-extractContent.ts +10 -0
  602. package/docs/API/60-playwright/20-actions/10-fill.ts +9 -0
  603. package/docs/API/60-playwright/20-actions/10-focus.ts +9 -0
  604. package/docs/API/60-playwright/20-actions/10-forceClick.ts +10 -0
  605. package/docs/API/60-playwright/20-actions/10-hover.ts +9 -0
  606. package/docs/API/60-playwright/20-actions/10-press.ts +9 -0
  607. package/docs/API/60-playwright/20-actions/10-selectOption.ts +10 -0
  608. package/docs/API/60-playwright/20-actions/10-type.ts +10 -0
  609. package/docs/API/60-playwright/20-actions/10-uncheck.ts +9 -0
  610. package/docs/API/60-playwright/20-actions/10-withStep.ts +10 -0
  611. package/docs/API/60-playwright/20-actions/index.llms.md +60 -0
  612. package/docs/API/60-playwright/20-actions/index.md +3 -0
  613. package/docs/API/60-playwright/30-assertions/10-toBeBusy.ts +10 -0
  614. package/docs/API/60-playwright/30-assertions/10-toBeChecked.ts +9 -0
  615. package/docs/API/60-playwright/30-assertions/10-toBeDisabled.ts +9 -0
  616. package/docs/API/60-playwright/30-assertions/10-toBeEnabled.ts +9 -0
  617. package/docs/API/60-playwright/30-assertions/10-toBeHidden.ts +9 -0
  618. package/docs/API/60-playwright/30-assertions/10-toBeNotBusy.ts +10 -0
  619. package/docs/API/60-playwright/30-assertions/10-toBeVisible.ts +10 -0
  620. package/docs/API/60-playwright/30-assertions/10-toContainText.ts +9 -0
  621. package/docs/API/60-playwright/30-assertions/10-toHaveAttribute.ts +12 -0
  622. package/docs/API/60-playwright/30-assertions/10-toHaveClass.ts +9 -0
  623. package/docs/API/60-playwright/30-assertions/10-toHaveNoText.ts +10 -0
  624. package/docs/API/60-playwright/30-assertions/10-toHaveQuantity.ts +20 -0
  625. package/docs/API/60-playwright/30-assertions/10-toHaveText.ts +9 -0
  626. package/docs/API/60-playwright/30-assertions/10-toHaveValue.ts +9 -0
  627. package/docs/API/60-playwright/30-assertions/10-withStep.ts +10 -0
  628. package/docs/API/60-playwright/30-assertions/index.llms.md +64 -0
  629. package/docs/API/60-playwright/30-assertions/index.md +3 -0
  630. package/docs/API/60-playwright/fixtures/component.ts +44 -0
  631. package/docs/API/60-playwright/index.md +3 -0
  632. package/docs/API/index.md +3 -0
  633. package/docs/API.llms.md +115 -0
  634. package/docs/concepts/01-fundamental/01-constraint/01-use.ts +22 -0
  635. package/docs/concepts/01-fundamental/01-constraint/10-built-in-constraint.ts +37 -0
  636. package/docs/concepts/01-fundamental/01-constraint/20-manipulation.ts +41 -0
  637. package/docs/concepts/01-fundamental/01-constraint/30-cast.ts +66 -0
  638. package/docs/concepts/01-fundamental/01-constraint/40-custom-constraint.ts +45 -0
  639. package/docs/concepts/01-fundamental/01-constraint/index.md +3 -0
  640. package/docs/concepts/01-fundamental/02-currying/01-use.ts +38 -0
  641. package/docs/concepts/01-fundamental/02-currying/10-built-in-function.ts +190 -0
  642. package/docs/concepts/01-fundamental/02-currying/20-inner-pipe.ts +48 -0
  643. package/docs/concepts/01-fundamental/02-currying/30-async-pipe.ts +51 -0
  644. package/docs/concepts/01-fundamental/02-currying/index.md +3 -0
  645. package/docs/concepts/01-fundamental/03-either/01-use.ts +21 -0
  646. package/docs/concepts/01-fundamental/03-either/10-discrimination.ts +90 -0
  647. package/docs/concepts/01-fundamental/03-either/20-exhaustive-handling.ts +90 -0
  648. package/docs/concepts/01-fundamental/03-either/30-composition.ts +80 -0
  649. package/docs/concepts/01-fundamental/03-either/40-result-adaptation.ts +46 -0
  650. package/docs/concepts/01-fundamental/03-either/50-external-results.ts +72 -0
  651. package/docs/concepts/01-fundamental/03-either/60-contextual-state.ts +40 -0
  652. package/docs/concepts/01-fundamental/03-either/index.md +3 -0
  653. package/docs/concepts/01-fundamental/04-data-structure/01-use.ts +22 -0
  654. package/docs/concepts/01-fundamental/04-data-structure/10-structure.ts +244 -0
  655. package/docs/concepts/01-fundamental/04-data-structure/20-constraint.ts +86 -0
  656. package/docs/concepts/01-fundamental/04-data-structure/30-validation.ts +104 -0
  657. package/docs/concepts/01-fundamental/04-data-structure/40-codecs.ts +162 -0
  658. package/docs/concepts/01-fundamental/04-data-structure/50-recursive.ts +57 -0
  659. package/docs/concepts/01-fundamental/04-data-structure/60-interpret-error.ts +123 -0
  660. package/docs/concepts/01-fundamental/04-data-structure/index.md +3 -0
  661. package/docs/concepts/01-fundamental/05-chrono/01-use.ts +14 -0
  662. package/docs/concepts/01-fundamental/05-chrono/10-creation.ts +85 -0
  663. package/docs/concepts/01-fundamental/05-chrono/20-manipulation.ts +110 -0
  664. package/docs/concepts/01-fundamental/05-chrono/30-serialized.ts +89 -0
  665. package/docs/concepts/01-fundamental/05-chrono/40-timezone.ts +85 -0
  666. package/docs/concepts/01-fundamental/05-chrono/index.md +3 -0
  667. package/docs/concepts/01-fundamental/06-modeling/10-new-type.ts +42 -0
  668. package/docs/concepts/01-fundamental/06-modeling/20-entity.ts +191 -0
  669. package/docs/concepts/01-fundamental/06-modeling/30-tagged-object.ts +204 -0
  670. package/docs/concepts/01-fundamental/06-modeling/40-entity-lifecycle.ts +272 -0
  671. package/docs/concepts/01-fundamental/06-modeling/50-evidence.ts +94 -0
  672. package/docs/concepts/01-fundamental/06-modeling/60-signed-function.ts +26 -0
  673. package/docs/concepts/01-fundamental/06-modeling/index.md +3 -0
  674. package/docs/concepts/01-fundamental/07-discrimination/10-entity.ts +136 -0
  675. package/docs/concepts/01-fundamental/07-discrimination/20-fact.ts +158 -0
  676. package/docs/concepts/01-fundamental/07-discrimination/30-tagged-object.ts +137 -0
  677. package/docs/concepts/01-fundamental/07-discrimination/40-error.ts +73 -0
  678. package/docs/concepts/01-fundamental/07-discrimination/50-literal.ts +106 -0
  679. package/docs/concepts/01-fundamental/07-discrimination/60-shape.ts +160 -0
  680. package/docs/concepts/01-fundamental/07-discrimination/70-predicate.ts +101 -0
  681. package/docs/concepts/01-fundamental/07-discrimination/index.md +3 -0
  682. package/docs/concepts/01-fundamental/08-kind/01-identity.md +7 -0
  683. package/docs/concepts/01-fundamental/08-kind/20-metadata.md +11 -0
  684. package/docs/concepts/01-fundamental/08-kind/30-transport.md +11 -0
  685. package/docs/concepts/01-fundamental/08-kind/index.md +3 -0
  686. package/docs/concepts/01-fundamental/index.md +1 -0
  687. package/docs/concepts/02-server/10-file/10-manipulation.ts +52 -0
  688. package/docs/concepts/02-server/10-file/20-path.ts +72 -0
  689. package/docs/concepts/02-server/10-file/index.md +3 -0
  690. package/docs/concepts/02-server/20-http/10-init.ts +23 -0
  691. package/docs/concepts/02-server/20-http/20-route.ts +182 -0
  692. package/docs/concepts/02-server/20-http/30-routine.ts +188 -0
  693. package/docs/concepts/02-server/20-http/40-jwt.ts +149 -0
  694. package/docs/concepts/02-server/20-http/50-open-api.ts +44 -0
  695. package/docs/concepts/02-server/20-http/index.md +3 -0
  696. package/docs/concepts/02-server/30-environment/10-platform.ts +47 -0
  697. package/docs/concepts/02-server/30-environment/20-variable.ts +47 -0
  698. package/docs/concepts/02-server/30-environment/index.md +3 -0
  699. package/docs/concepts/02-server/40-command/10-use.ts +112 -0
  700. package/docs/concepts/02-server/40-command/20-sub-command.ts +48 -0
  701. package/docs/concepts/02-server/40-command/index.md +3 -0
  702. package/docs/concepts/02-server/index.md +1 -0
  703. package/docs/concepts/03-client/10-http/10-init.ts +52 -0
  704. package/docs/concepts/03-client/10-http/20-request.ts +254 -0
  705. package/docs/concepts/03-client/10-http/30-hook.ts +139 -0
  706. package/docs/concepts/03-client/10-http/index.md +3 -0
  707. package/docs/concepts/03-client/20-form/10-init.ts +98 -0
  708. package/docs/concepts/03-client/20-form/20-input.ts +103 -0
  709. package/docs/concepts/03-client/20-form/30-layout.ts +155 -0
  710. package/docs/concepts/03-client/20-form/40-template.ts +94 -0
  711. package/docs/concepts/03-client/20-form/50-integration.md +11 -0
  712. package/docs/concepts/03-client/20-form/examples/postModeration/ThePage.vue +32 -0
  713. package/docs/concepts/03-client/20-form/examples/postModeration/usePostModeration.ts +80 -0
  714. package/docs/concepts/03-client/20-form/index.md +3 -0
  715. package/docs/concepts/03-client/index.md +1 -0
  716. package/docs/concepts/04-tests/01-unit/10-either.ts +136 -0
  717. package/docs/concepts/04-tests/01-unit/20-server-mocking.ts +53 -0
  718. package/docs/concepts/04-tests/01-unit/index.md +3 -0
  719. package/docs/concepts/04-tests/02-e2e/10-init.ts +80 -0
  720. package/docs/concepts/04-tests/02-e2e/20-architecture.ts +76 -0
  721. package/docs/concepts/04-tests/02-e2e/30-testing.ts +90 -0
  722. package/docs/concepts/04-tests/02-e2e/index.md +3 -0
  723. package/docs/concepts/04-tests/index.md +1 -0
  724. package/docs/concepts/05-type-driven-design/01-architecture/10-boundaries.md +44 -0
  725. package/docs/concepts/05-type-driven-design/01-architecture/index.md +3 -0
  726. package/docs/concepts/05-type-driven-design/02-domains/10-entities.md +50 -0
  727. package/docs/concepts/05-type-driven-design/02-domains/20-aggregates.md +65 -0
  728. package/docs/concepts/05-type-driven-design/02-domains/30-repositories.md +35 -0
  729. package/docs/concepts/05-type-driven-design/02-domains/40-refinements.md +30 -0
  730. package/docs/concepts/05-type-driven-design/02-domains/index.md +3 -0
  731. package/docs/concepts/05-type-driven-design/03-applications/10-use-case.md +62 -0
  732. package/docs/concepts/05-type-driven-design/03-applications/20-ports.md +49 -0
  733. package/docs/concepts/05-type-driven-design/03-applications/index.md +3 -0
  734. package/docs/concepts/05-type-driven-design/04-infrastructure/10-implementation.md +47 -0
  735. package/docs/concepts/05-type-driven-design/04-infrastructure/index.md +3 -0
  736. package/docs/concepts/05-type-driven-design/fixtures/business/applications/index.ts +2 -0
  737. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/book.ts +10 -0
  738. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/client.ts +10 -0
  739. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/email.ts +7 -0
  740. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/index.ts +4 -0
  741. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/waitingListEntry.ts +17 -0
  742. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientGiveBackBook.ts +45 -0
  743. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientRentBook.ts +31 -0
  744. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/createBook.ts +32 -0
  745. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/index.ts +4 -0
  746. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/withdrawBook.ts +32 -0
  747. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientGiveBackBook.ts +74 -0
  748. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientRentBook.ts +42 -0
  749. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/createBook.ts +33 -0
  750. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/index.ts +4 -0
  751. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/withdrawBook.ts +37 -0
  752. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/create.ts +33 -0
  753. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/index.ts +5 -0
  754. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/rental.ts +31 -0
  755. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/reserve.ts +37 -0
  756. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/returnBook.ts +32 -0
  757. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/withdraw.ts +21 -0
  758. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/index.ts +118 -0
  759. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/giveBackBook.ts +35 -0
  760. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/index.ts +2 -0
  761. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/rentBook.ts +32 -0
  762. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/index.ts +59 -0
  763. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/index.ts +3 -0
  764. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/cancel.ts +26 -0
  765. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/create.ts +33 -0
  766. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/index.ts +3 -0
  767. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/prepare.ts +23 -0
  768. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/index.ts +79 -0
  769. package/docs/concepts/05-type-driven-design/fixtures/business/domains/index.ts +4 -0
  770. package/docs/concepts/05-type-driven-design/fixtures/business/domains/refinements/index.ts +1 -0
  771. package/docs/concepts/05-type-driven-design/fixtures/business/domains/refinements/refineLinkBetweenClientAndBorrowedBook.ts +34 -0
  772. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/book.ts +16 -0
  773. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/client.ts +7 -0
  774. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/email.ts +12 -0
  775. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/index.ts +4 -0
  776. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/waitingListEntry.ts +19 -0
  777. package/docs/concepts/05-type-driven-design/fixtures/business/index.ts +2 -0
  778. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/command/clientRentBook.ts +62 -0
  779. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/command/index.ts +11 -0
  780. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/bookExist.ts +19 -0
  781. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/clientExist.ts +19 -0
  782. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/index.ts +2 -0
  783. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/main.ts +19 -0
  784. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientGiveBackBook.ts +46 -0
  785. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientRentBook.ts +45 -0
  786. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/index.ts +2 -0
  787. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/book.ts +25 -0
  788. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/client.ts +7 -0
  789. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/email.ts +10 -0
  790. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/index.ts +4 -0
  791. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/waitingListEntry.ts +17 -0
  792. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/useCases/index.ts +13 -0
  793. package/docs/concepts/05-type-driven-design/index.md +3 -0
  794. package/docs/concepts.llms.md +521 -0
  795. package/instructions/coding-conventions.md +8 -0
  796. package/package.json +99 -3
  797. package/skills/command/SKILL.md +63 -0
  798. package/skills/command/references/examples/cli.ts +22 -0
  799. package/skills/command/references/examples/options-only.ts +27 -0
  800. package/skills/command/references/examples/preview-command.ts +57 -0
  801. package/skills/command/references/execution.md +31 -0
  802. package/skills/command/references/inputs.md +27 -0
  803. package/skills/fundamental/SKILL.md +80 -0
  804. package/skills/fundamental/references/composition.md +35 -0
  805. package/skills/fundamental/references/constraints-and-validation.md +61 -0
  806. package/skills/fundamental/references/examples/async-composition.ts +15 -0
  807. package/skills/fundamental/references/examples/cast.ts +18 -0
  808. package/skills/fundamental/references/examples/composition.ts +40 -0
  809. package/skills/fundamental/references/examples/environment-initialization.ts +19 -0
  810. package/skills/fundamental/references/examples/error-propagation.ts +24 -0
  811. package/skills/fundamental/references/examples/generic-inference.ts +31 -0
  812. package/skills/fundamental/references/examples/guaranteed-array-access.ts +31 -0
  813. package/skills/fundamental/references/examples/independent-inputs.ts +18 -0
  814. package/skills/fundamental/references/examples/infer.ts +21 -0
  815. package/skills/fundamental/references/examples/input-validation.ts +37 -0
  816. package/skills/fundamental/references/examples/safe-declarations.ts +25 -0
  817. package/skills/fundamental/references/results-and-errors.md +59 -0
  818. package/skills/http-client/SKILL.md +50 -0
  819. package/skills/http-client/references/configuration.md +11 -0
  820. package/skills/http-client/references/examples/client-expectations.ts +85 -0
  821. package/skills/http-client/references/examples/client-streams.ts +74 -0
  822. package/skills/http-client/references/examples/external-client.ts +78 -0
  823. package/skills/http-client/references/hooks.md +7 -0
  824. package/skills/http-client/references/responses.md +39 -0
  825. package/skills/http-client/references/streams.md +10 -0
  826. package/skills/http-server/SKILL.md +61 -0
  827. package/skills/http-server/references/examples/authentication.ts +42 -0
  828. package/skills/http-server/references/examples/contracts.ts +19 -0
  829. package/skills/http-server/references/examples/inferred-client.ts +54 -0
  830. package/skills/http-server/references/examples/initialize.ts +29 -0
  831. package/skills/http-server/references/examples/minimal-route.ts +17 -0
  832. package/skills/http-server/references/examples/protected-route.ts +29 -0
  833. package/skills/http-server/references/examples/rename-user-route.ts +52 -0
  834. package/skills/http-server/references/examples/user-checker.ts +26 -0
  835. package/skills/http-server/references/examples/user-route.ts +45 -0
  836. package/skills/http-server/references/initialization.md +33 -0
  837. package/skills/http-server/references/reusable-flows.md +40 -0
  838. package/skills/http-server/references/routes-and-floor.md +46 -0
  839. package/skills/modeling/SKILL.md +76 -0
  840. package/skills/modeling/references/domain.md +33 -0
  841. package/skills/modeling/references/orchestration.md +36 -0
  842. package/skills/server/SKILL.md +55 -0
  843. package/skills/server/references/environment.md +30 -0
  844. package/skills/server/references/examples/environment.ts +41 -0
  845. package/skills/server/references/examples/file-structure.ts +26 -0
  846. package/skills/server/references/examples/files.ts +52 -0
  847. package/skills/server/references/files.md +38 -0
  848. package/skills/server/references/structures.md +15 -0
  849. package/skills/test/SKILL.md +70 -0
  850. package/skills/test/references/examples/results.ts +95 -0
  851. package/skills/test/references/examples/server.ts +59 -0
  852. package/skills/test/references/results.md +21 -0
  853. package/skills/test/references/server.md +17 -0
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @title Manipulation des valeurs contraintes.
3
+ *
4
+ * Exploitation des contraintes par les fonctions DuploJS pour simplifier la manipulation des valeurs.
5
+ */
6
+ import type * as DCommon from "@duplojs/lang/common";
7
+ import * as DTuple from "@duplojs/lang/tuple";
8
+ import * as DString from "@duplojs/lang/string";
9
+ import * as DArray from "@duplojs/lang/array";
10
+
11
+ // Les primitives exploitent les garanties d’entrée pour préciser leur sortie.
12
+ // Une transformation conserve, adapte ou supprime les contraintes selon ce qui reste vrai.
13
+ declare const userEmail: string & DString.Email;
14
+
15
+ // Un email dans son format contenant obligatoirement un "@"
16
+ // donne forcément un tableau avec minimum 2 éléments.
17
+ const splitEmail = DString.split(userEmail, "@");
18
+ type _CheckSplitEmail = DCommon.ExpectType<typeof splitEmail, readonly string[] & DArray.MinElements<2>, "strict">;
19
+
20
+ // Le passage du tableau en tuple est fait en interprétant la contrainte
21
+ // DArray.MinElements<2>, ce qui garantit au moins deux éléments, sans imposer une longueur exacte.
22
+ const [first, second, ...maybeRest] = DTuple.from(splitEmail);
23
+ type _CheckFirst = DCommon.ExpectType<typeof first, string, "strict">;
24
+ type _CheckSecond = DCommon.ExpectType<typeof second, string, "strict">;
25
+ type _CheckMaybeRest = DCommon.ExpectType<typeof maybeRest, string[], "strict">;
26
+
27
+ // Les accès garantis par la cardinalité évitent le type string | undefined.
28
+ const firstElement = DArray.first(splitEmail);
29
+ type _CheckFirstElement = DCommon.ExpectType<typeof firstElement, string, "strict">;
30
+
31
+ const lastElement = DArray.last(splitEmail);
32
+ type _CheckLastElement = DCommon.ExpectType<typeof lastElement, string, "strict">;
33
+
34
+ const secondElement = DArray.at(splitEmail, 1);
35
+ type _CheckSecondElement = DCommon.ExpectType<typeof secondElement, string, "strict">;
36
+
37
+ const otherElement = DArray.at(splitEmail, 10);
38
+ type _CheckOtherElement = DCommon.ExpectType<typeof otherElement, string | undefined, "strict">;
39
+
40
+ // Le résultat porte une garantie de cardinalité ; les fragments ne sont plus typés Email.
41
+ // Privilégier les transformations immuables : une mutation pourrait invalider une garantie.
@@ -0,0 +1,66 @@
1
+ /**
2
+ * @title Compatibilité statique des contraintes.
3
+ *
4
+ * Cast par implication, valeurs littérales et inférence en contexte générique.
5
+ */
6
+ import * as DCommon from "@duplojs/lang/common";
7
+ import type * as DNumber from "@duplojs/lang/number";
8
+ import type * as DString from "@duplojs/lang/string";
9
+
10
+ // cast restitue la valeur sans validation runtime : TypeScript doit prouver la compatibilité.
11
+ // Il convertit une garantie existante, ou exploite une valeur connue statiquement.
12
+ // Une donnée runtime sans preuve doit d’abord être vérifiée par un predicate.
13
+ declare function myFunction(name: string & DString.MinCharacters<10>): void;
14
+
15
+ declare const validName: string & DString.MinCharacters<15>;
16
+ // Au moins 15 caractères implique au moins 10 caractères.
17
+ myFunction(DCommon.cast(validName));
18
+
19
+ declare const invalidName: string & DString.MinCharacters<5>;
20
+ // Erreur de type car la contrainte `DString.MinCharacters<5>`
21
+ // n'induit pas `string & DString.MinCharacters<10>`
22
+ // @ts-expect-error constraint error
23
+ myFunction(DCommon.cast(invalidName));
24
+
25
+ // De même, une borne strictement inférieure à 10 implique une borne inférieure à 20.
26
+ declare const belowTen: number & DNumber.LessThan<10>;
27
+ const belowTwenty: number & DNumber.LessThan<20> = DCommon.cast(belowTen);
28
+
29
+ // Les valeurs littérales permettent aussi de calculer la compatibilité sans validation.
30
+ const declaredName: string & DString.MinCharacters<10> = DCommon.cast("thisIsASuperName");
31
+ const declaredAge: number & DNumber.GreaterThanOrEqual<18> = DCommon.cast(20);
32
+
33
+ declare function myFunctionWithGeneric<
34
+ GenericName extends string & DString.MinCharacters<10>,
35
+ >(name: GenericName): void;
36
+
37
+ // Ici, le paramètre générique ne fournit pas à cast un type de retour assez précis.
38
+ // satisfies explicite la cible pour permettre le calcul de compatibilité.
39
+ myFunctionWithGeneric(
40
+ DCommon.cast("thisIsASuperName") satisfies string & DString.MinCharacters<10>,
41
+ );
42
+
43
+ // @ts-expect-error cast ne peut pas inférer ici le type de retour attendu.
44
+ myFunctionWithGeneric(DCommon.cast("thisIsASuperName"));
45
+
46
+ declare function createUser<
47
+ GenericUser extends {
48
+ name: string & DString.MinCharacters<10>;
49
+ age: number & DNumber.GreaterThanOrEqual<18>;
50
+ },
51
+ >(name: GenericUser): GenericUser;
52
+
53
+ // infer calcule les contraintes attendues tout en conservant la valeur littérale.
54
+ // Il est adapté aux constantes connues statiquement et ne valide rien au runtime.
55
+ const inferredUser = createUser({
56
+ name: DCommon.infer("thisIsASuperName"),
57
+ age: DCommon.infer(18),
58
+ });
59
+ type _CheckInferredUser = DCommon.ExpectType<
60
+ typeof inferredUser,
61
+ {
62
+ name: "thisIsASuperName" & DString.MinCharacters<10>;
63
+ age: 18 & DNumber.GreaterThanOrEqual<18>;
64
+ },
65
+ "strict"
66
+ >;
@@ -0,0 +1,45 @@
1
+ /**
2
+ * @title Contraintes personnalisées.
3
+ *
4
+ * Déclaration, predicate de validation et extension des règles de cast.
5
+ */
6
+ import * as DCommon from "@duplojs/lang/common";
7
+ import * as DNumber from "@duplojs/lang/number";
8
+
9
+ // Étendre Constraint avec un identifiant propre à la propriété modélisée.
10
+ // Cette interface n’ajoute aucun marqueur à la valeur runtime.
11
+ interface Adult extends DCommon.Constraint<"example-adult"> {}
12
+
13
+ // La signature du predicate doit correspondre à une vérification réelle.
14
+ function isAdult(input: number): input is number & Adult {
15
+ return DNumber.greaterThanOrEqual(input, 18);
16
+ }
17
+
18
+ declare const candidate: number;
19
+ if (isAdult(candidate)) {
20
+ const adult: number & Adult = candidate;
21
+ }
22
+
23
+ // Les règles de cast peuvent être étendues par augmentation du module common.
24
+ // Cette règle reconnaît la preuve GreaterThanOrEqual<18> comme suffisante pour Adult.
25
+ // Elle ne couvre volontairement pas toutes les autres bornes compatibles.
26
+ declare module "@duplojs/lang/common" {
27
+ interface ComputeCastConstraintNumberRule<
28
+ GenericValue extends number,
29
+ GenericExpectedConstraint extends DCommon.BaseConstraint,
30
+ > {
31
+ exampleAdult: GenericExpectedConstraint extends Adult
32
+ ? GenericValue extends DNumber.GreaterThanOrEqual<18>
33
+ ? unknown
34
+ : DCommon.CastError<"La preuve de majorité est absente.", GenericValue, GenericExpectedConstraint>
35
+ : never;
36
+ }
37
+ }
38
+
39
+ // unknown accepte la compatibilité, CastError la refuse, never ignore les autres cibles.
40
+ // Consulter les interfaces de règles existantes pour étendre les autres domaines.
41
+ declare const verifiedAge: number & DNumber.GreaterThanOrEqual<18>;
42
+ const adultFromProof: number & Adult = DCommon.cast(verifiedAge);
43
+
44
+ // @ts-expect-error Un nombre sans preuve ne peut pas être converti en Adult.
45
+ const adultWithoutProof: number & Adult = DCommon.cast(candidate);
@@ -0,0 +1,3 @@
1
+ ## Contraintes de typage
2
+
3
+ Garanties sur les valeurs : acquisition, composition, propagation, compatibilité statique et contraintes personnalisées.
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @title Currification et composition avec pipe.
3
+ *
4
+ * Configurer les opérations avant de recevoir la donnée et enchaîner ses transformations.
5
+ */
6
+ import * as DCommon from "@duplojs/lang/common";
7
+ import * as DArray from "@duplojs/lang/array";
8
+ import * as DString from "@duplojs/lang/string";
9
+
10
+ // La forme curifiée reçoit les paramètres, puis la donnée transmise par pipe.
11
+ // Si la fonction retournée ne déclare pas ses propres génériques, ses types sont
12
+ // fixés dès l'appel de configuration, même si la surcharge extérieure est générique.
13
+ // Écrire alors l'appel curifié directement comme étape de pipe ou asyncPipe pour
14
+ // fournir le contexte d'inférence attendu. Passer à un pipe une variable contenant
15
+ // une fonction déjà préparée ne déplace pas sa configuration dans ce contexte.
16
+ // Ne pas forcer cette préparation avec des génériques explicites, annotations ou casts.
17
+ // Formater chaque pipe sur plusieurs lignes, un argument par ligne et la fermeture
18
+ // sur sa propre ligne, même avec seulement une donnée et une étape.
19
+ // Privilégier pipe dès qu’une donnée subit plusieurs transformations,
20
+ // ou si le traitement est susceptible d’en accueillir d’autres.
21
+ // Utiliser en priorité les fonctions fournies par l’écosystème.
22
+ const normalizedTags = DCommon.pipe(
23
+ " TypeScript, DuploJS, Functional " as const,
24
+ // Configure le séparateur ; pipe fournit ensuite la chaîne.
25
+ DString.split(","),
26
+ // Configure la transformation ; pipe fournit le tableau.
27
+ DArray.map(DString.trim),
28
+ DArray.filter(DString.isNotEmpty),
29
+ DArray.map(DString.toLowerCase),
30
+ );
31
+ type _CheckNormalizedTags = DCommon.ExpectType<
32
+ typeof normalizedTags,
33
+ readonly (Lowercase<string> & DString.MinCharacters<1>)[] & DArray.MaxElements<3>,
34
+ "strict"
35
+ >;
36
+ // Résultat : ["typescript", "duplojs", "functional"].
37
+ // Chaque étape reçoit la sortie précédente ; les types suivent ces transformations.
38
+ // On peut ajouter, retirer ou réordonner les étapes sans restructurer le traitement.
@@ -0,0 +1,190 @@
1
+ /**
2
+ * @title Réutilisation des fonctions de l’écosystème dans les pipes.
3
+ *
4
+ * Composer les opérations fournies, sous forme curifiée ou directement compatible avec pipe.
5
+ */
6
+ import * as DCommon from "@duplojs/lang/common";
7
+ import * as DArray from "@duplojs/lang/array";
8
+ import * as DString from "@duplojs/lang/string";
9
+ import * as DObject from "@duplojs/lang/object";
10
+ import * as DNumber from "@duplojs/lang/number";
11
+ import * as DEither from "@duplojs/lang/either";
12
+ import * as DTuple from "@duplojs/lang/tuple";
13
+ import * as DChrono from "@duplojs/lang/chrono";
14
+ import * as DGenerator from "@duplojs/lang/generator";
15
+ import * as DPattern from "@duplojs/lang/pattern";
16
+ import type * as DPath from "@duplojs/lang/path";
17
+ import * as DSFile from "@duplojs/server/file";
18
+
19
+ // Avant d’écrire une callback ou de recourir à une API native, rechercher une opération
20
+ // fournie par l’écosystème : sa forme curifiée ou son unique argument peut convenir au pipe.
21
+ // Cette démarche s’applique à tous les packages ; les domaines ci-dessous sont des exemples.
22
+
23
+ // Les fonctions de `string` et `array` sont faites pour être composées.
24
+ const normalizedNames = DCommon.pipe(
25
+ [" John ", "", " JANE ", " Alice "],
26
+ DArray.map(DString.trim),
27
+ DArray.filter(DString.isNotEmpty),
28
+ DArray.map(DString.toLowerCase),
29
+ DArray.sort(DString.sortCompare),
30
+ );
31
+ type _CheckNormalizedNames = DCommon.ExpectType<
32
+ typeof normalizedNames,
33
+ readonly (Lowercase<string> & DString.MinCharacters<1>)[] & DArray.MaxElements<4>,
34
+ "strict"
35
+ >;
36
+
37
+ // Les prédicats de `number` peuvent directement être utilisés
38
+ // dans les fonctions de manipulation de tableaux.
39
+ const adultAges = DCommon.pipe(
40
+ [12, 18, 42, 8, 21],
41
+ DArray.filter(DNumber.greaterThanOrEqual(18)),
42
+ DNumber.sum,
43
+ );
44
+ type _CheckAdultAges = DCommon.ExpectType<typeof adultAges, number, "strict">;
45
+
46
+ // Les fonctions de `object` sont également prévues pour le pipe.
47
+ const publicUser = DCommon.pipe(
48
+ {
49
+ name: " John ",
50
+ password: "secret",
51
+ age: 24,
52
+ },
53
+ DObject.transformProperty("name", DString.trim),
54
+ DObject.omit(["password"]),
55
+ );
56
+ type _CheckPublicUser = DCommon.ExpectType<
57
+ typeof publicUser,
58
+ {
59
+ name: string & DString.Trimmed & DString.MaxCharacters<6>;
60
+ readonly age: 24;
61
+ },
62
+ "strict"
63
+ >;
64
+
65
+ // `innerPipe` permet de composer plusieurs fonctions intégrées
66
+ // directement à l'endroit où une callback est attendue.
67
+ const users = DCommon.pipe(
68
+ [
69
+ {
70
+ name: " John ",
71
+ age: 24,
72
+ },
73
+ {
74
+ name: " JANE ",
75
+ age: 32,
76
+ },
77
+ ],
78
+ DArray.map(
79
+ DCommon.innerPipe(
80
+ DObject.transformProperty(
81
+ "name",
82
+ DCommon.innerPipe(
83
+ DString.trim,
84
+ DString.toLowerCase,
85
+ ),
86
+ ),
87
+ DObject.pick(["name"]),
88
+ ),
89
+ ),
90
+ );
91
+ type _CheckUsers = DCommon.ExpectType<
92
+ typeof users,
93
+ readonly { name: Lowercase<string> }[] & DArray.LengthEqual<2>,
94
+ "strict"
95
+ >;
96
+
97
+ // Les fonctions `Either` sont elles aussi composables avec les pipes.
98
+ declare const maybeName:
99
+ | DEither.Right<"user-found", string>
100
+ | DEither.Left<"user-not-found">;
101
+
102
+ const name = DCommon.pipe(
103
+ maybeName,
104
+ DEither.unwrapOr("anonymous"),
105
+ DString.trim,
106
+ DString.toLowerCase,
107
+ );
108
+ type _CheckName = DCommon.ExpectType<typeof name, Lowercase<string>, "strict">;
109
+
110
+ // `Either` possède également ses propres pipes lorsque le traitement
111
+ // doit continuer uniquement sur une valeur `Right`.
112
+ const normalizedEitherName = DEither.rightPipe(
113
+ maybeName,
114
+ DString.trim,
115
+ DString.toLowerCase,
116
+ );
117
+ type _CheckNormalizedEitherName = DCommon.ExpectType<typeof normalizedEitherName, DEither.Left<"user-not-found", unknown> | DEither.Success<Lowercase<string>>, "strict">;
118
+
119
+ // Les tuples disposent eux aussi de fonctions curifiées.
120
+ const normalizedTuple = DCommon.pipe(
121
+ [" John ", " Jane "] as const,
122
+ DTuple.map(DString.trim),
123
+ );
124
+ type _CheckNormalizedTuple = DCommon.ExpectType<typeof normalizedTuple, readonly [string & DString.Trimmed & DString.MaxCharacters<6>, string & DString.Trimmed & DString.MaxCharacters<6>], "strict">;
125
+
126
+ // Les generators permettent de construire des transformations lazy
127
+ // avec exactement le même modèle de composition.
128
+ const generatedNames = DCommon.pipe(
129
+ [" John ", "", " JANE ", " Alice "],
130
+ DGenerator.map(DString.trim),
131
+ DGenerator.filter(DString.isNotEmpty),
132
+ DGenerator.map(DString.toLowerCase),
133
+ DArray.from,
134
+ );
135
+ type _CheckGeneratedNames = DCommon.ExpectType<typeof generatedNames, readonly (Lowercase<string> & DString.MinCharacters<1>)[], "strict">;
136
+
137
+ // Les fonctions de date peuvent être utilisées directement dans les pipes.
138
+ declare const creationDate: DChrono.TheDate;
139
+
140
+ const serializedCreationDate = DCommon.pipe(
141
+ creationDate,
142
+ DChrono.formatDate(
143
+ "YYYY-MM-DD HH:mm:ss",
144
+ "Europe/Paris",
145
+ ),
146
+ );
147
+ type _CheckSerializedCreationDate = DCommon.ExpectType<typeof serializedCreationDate, string, "strict">;
148
+
149
+ // Le pattern matching fournit également des fonctions curifiées.
150
+ declare const status: "draft" | "published" | "archived";
151
+
152
+ const statusLabel = DCommon.pipe(
153
+ status,
154
+ DPattern.matchWithStringOtherwise(
155
+ {
156
+ draft: () => "Draft" as const,
157
+ published: () => "Published" as const,
158
+ },
159
+ () => "Archived" as const,
160
+ ),
161
+ );
162
+ type _CheckStatusLabel = DCommon.ExpectType<typeof statusLabel, "Draft" | "Published" | "Archived", "strict">;
163
+
164
+ // Les fonctions n'ont pas besoin d'être curifiées lorsqu'elles reçoivent
165
+ // déjà la donnée comme unique argument : elles peuvent être utilisées
166
+ // directement comme étape du pipe.
167
+ declare const filePath: string & DPath.Path;
168
+
169
+ const fileContent = await DCommon.asyncPipe(
170
+ filePath,
171
+ DSFile.readTextFile,
172
+ DEither.unwrapOr(""),
173
+ DString.trim,
174
+ );
175
+ type _CheckFileContent = DCommon.ExpectType<typeof fileContent, string & DString.Trimmed, "strict">;
176
+
177
+ // Les fonctions curifiées existent également dans `@duplojs/server`.
178
+ const writeResult = await DCommon.asyncPipe(
179
+ filePath,
180
+ DSFile.writeTextFile("Hello world"),
181
+ );
182
+ type _CheckWriteResult = DCommon.ExpectType<typeof writeResult, DSFile.WriteTextFileResult, "strict">;
183
+
184
+ // Cela permet de composer des traitements provenant de plusieurs packages.
185
+ const jsonContent = await DCommon.asyncPipe(
186
+ filePath,
187
+ DSFile.readJsonFile,
188
+ DEither.unwrapOr({}),
189
+ );
190
+ type _CheckJsonContent = DCommon.ExpectType<typeof jsonContent, DCommon.Json | {}, "strict">;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @title Composition dans une callback.
3
+ *
4
+ * Enchaîner des transformations lorsque la fonction appelante attend une fonction.
5
+ */
6
+ import * as DCommon from "@duplojs/lang/common";
7
+ import * as DArray from "@duplojs/lang/array";
8
+ import * as DString from "@duplojs/lang/string";
9
+ import type * as DNumber from "@duplojs/lang/number";
10
+
11
+ // `innerPipe` permet d'enchaîner plusieurs transformations lorsqu'une
12
+ // fonction de transformation est elle-même attendue.
13
+ //
14
+ const normalizedTagsWithInnerPipe = DCommon.pipe(
15
+ " TypeScript, DuploJS, Functional " as const,
16
+ DString.split(","),
17
+ DArray.map(
18
+ DCommon.innerPipe(
19
+ DString.trim,
20
+ DString.toLowerCase,
21
+ ),
22
+ ),
23
+ DArray.filter(DString.isNotEmpty),
24
+ );
25
+ type _CheckNormalizedTagsWithInnerPipe = DCommon.ExpectType<
26
+ typeof normalizedTagsWithInnerPipe,
27
+ readonly (Lowercase<string> & DString.NotEmpty)[] & DArray.MaxElements<3>,
28
+ "strict"
29
+ >;
30
+
31
+ // `innerPipe` évite de créer une callback intermédiaire uniquement
32
+ // pour enchaîner plusieurs transformations.
33
+ //
34
+ const tagLengths = DCommon.pipe(
35
+ " TypeScript, DuploJS, Functional " as const,
36
+ DString.split(","),
37
+ DArray.map(
38
+ DCommon.innerPipe(
39
+ DString.trim,
40
+ DString.length,
41
+ ),
42
+ ),
43
+ );
44
+ type _CheckTagLengths = DCommon.ExpectType<
45
+ typeof tagLengths,
46
+ readonly (number & DNumber.Positive)[] & DArray.LengthEqual<3> & DArray.MinElements<3> & DArray.MaxElements<3>,
47
+ "strict"
48
+ >;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @title Composition de traitements asynchrones.
3
+ *
4
+ * Enchaîner des étapes synchrones et asynchrones dans un pipe ou une callback.
5
+ */
6
+ import * as DCommon from "@duplojs/lang/common";
7
+ import * as DArray from "@duplojs/lang/array";
8
+ import * as DString from "@duplojs/lang/string";
9
+
10
+ // `asyncPipe` applique le même principe lorsqu'une ou plusieurs étapes
11
+ // du traitement sont asynchrones.
12
+ //
13
+ const asyncTags = DCommon.asyncPipe(
14
+ Promise.resolve(" TypeScript, DuploJS " as const),
15
+ DString.split(","),
16
+ DArray.map(DString.trim),
17
+ (tags) => Promise.resolve(tags),
18
+ DArray.map(DString.toLowerCase),
19
+ );
20
+ type _CheckAsyncTags = DCommon.ExpectType<
21
+ typeof asyncTags,
22
+ Promise<readonly Lowercase<string>[] & DArray.LengthEqual<2> & DArray.MinElements<2> & DArray.MaxElements<2>>,
23
+ "strict"
24
+ >;
25
+
26
+ // `asyncInnerPipe` permet de composer plusieurs transformations synchrones
27
+ // ou asynchrones lorsqu'une callback asynchrone est attendue.
28
+ //
29
+ // map produit ici un tableau de promesses ; asyncPipe attend chaque étape, pas chaque élément.
30
+ const values = DCommon.asyncPipe(
31
+ [" TypeScript ", " DuploJS "] as const,
32
+ DArray.map(
33
+ DCommon.asyncInnerPipe(
34
+ (value) => Promise.resolve(value),
35
+ DString.trim,
36
+ DString.toLowerCase,
37
+ ),
38
+ ),
39
+ );
40
+ type _CheckValues = DCommon.ExpectType<
41
+ typeof values,
42
+ Promise<readonly Promise<Lowercase<string>>[] & DArray.LengthEqual<2>>,
43
+ "strict"
44
+ >;
45
+
46
+ // Pour récupérer les valeurs résolues, ajouter une étape qui attend toutes les promesses.
47
+ const resolvedValues = DCommon.asyncPipe(
48
+ values,
49
+ DCommon.promiseAll,
50
+ );
51
+ type _CheckResolvedValues = DCommon.ExpectType<typeof resolvedValues, Promise<Lowercase<string>[]>, "strict">;
@@ -0,0 +1,3 @@
1
+ ## Currification
2
+
3
+ Composition des transformations de données avec les fonctions DuploJS : pipes, callbacks et traitements asynchrones.
@@ -0,0 +1,21 @@
1
+ /**
2
+ * @title Représentation des résultats avec Either.
3
+ *
4
+ * Statuts Right et Left, information contextuelle et valeur associée.
5
+ */
6
+ import * as DEither from "@duplojs/lang/either";
7
+
8
+ // Un résultat porte un statut, une information qui identifie le cas et une valeur.
9
+ const result = DEither.right("user-found", { name: "Alice" });
10
+ const missing = DEither.left("user-not-found");
11
+
12
+ // Les variantes fournies reposent sur Right (Success, Some, Result, Ok) ou Left
13
+ // (Fail, Error, None).
14
+ // Result décrit un état contextualisé sans décider s’il constitue un succès ou un échec.
15
+ // Un contrat exprime les résultats possibles par une union, avec des informations
16
+ // personnalisées ou des variantes fournies.
17
+ // Dès qu'une branche d'une fonction renvoie un Right ou un Left, toutes ses
18
+ // branches renvoient un Either. Envelopper les valeurs de réussite dans un Right,
19
+ // y compris avec ok() pour une réussite sans valeur ; ne pas mélanger des Either
20
+ // et des valeurs brutes dans le contrat de retour.
21
+ type FindUserResult = DEither.Right<"user-found", { name: "Alice" }> | DEither.Left<"user-not-found", undefined>;
@@ -0,0 +1,90 @@
1
+ /**
2
+ * @title Discrimination et extraction des résultats.
3
+ *
4
+ * Choisir une branche par statut ou information, extraire sa valeur et traiter les autres cas.
5
+ */
6
+ import * as DEither from "@duplojs/lang/either";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ declare const myResult: (
10
+ | DEither.Success<"result">
11
+ | DEither.Left<"fail-task", Error>
12
+ | DEither.Fail
13
+ | DEither.Error<Error>
14
+ );
15
+
16
+ // Choisir Right ou Left lorsque seul le statut du résultat compte.
17
+ // whenIsRight transforme la valeur contenue dans un Right et transmet les Left tels quels.
18
+ const resultWhenIsRight = DCommon.pipe(
19
+ myResult,
20
+ DEither.whenIsRight(
21
+ (rightValue) => rightValue,
22
+ ),
23
+ );
24
+ type _CheckResultWhenIsRight = DCommon.ExpectType<
25
+ typeof resultWhenIsRight,
26
+ "result" | DEither.Left<"fail-task", Error> | DEither.Fail | DEither.Error<Error>,
27
+ "strict"
28
+ >;
29
+ const resultUnwrapLeft = DEither.unwrapLeft(myResult);
30
+ // unwrapLeft extrait la valeur des Left et conserve les autres résultats enveloppés.
31
+
32
+ // Choisir une information lorsque le cas précis compte, quel que soit son statut.
33
+ // La callback reçoit ici l’Error contenue dans le Left "fail-task".
34
+ const resultWhenHasInformation = DCommon.pipe(
35
+ myResult,
36
+ DEither.whenHasInformation(
37
+ "fail-task",
38
+ (error) => "test" as const,
39
+ ),
40
+ );
41
+ type _CheckResultWhenHasInformation = DCommon.ExpectType<
42
+ typeof resultWhenHasInformation,
43
+ DEither.Success<"result"> | DEither.Fail | DEither.Error<Error> | "test",
44
+ "strict"
45
+ >;
46
+ const resultUnwrapByInformation = DCommon.pipe(
47
+ myResult,
48
+ DEither.unwrapByInformation(
49
+ ["success", "fail-task"],
50
+ ),
51
+ );
52
+ type _CheckResultUnwrapByInformation = DCommon.ExpectType<typeof resultUnwrapByInformation, "result" | Error | DEither.Fail | DEither.Error<Error>, "strict">;
53
+ // Les variantes non ciblées sont conservées dans le résultat et dans son type.
54
+
55
+ // Les variantes Otherwise traitent aussi les cas non ciblés, au lieu de les transmettre.
56
+ const resultWhenIsRightOtherwise = DCommon.pipe(
57
+ myResult,
58
+ DEither.whenIsRightOtherwise(
59
+ (rightValue) => {
60
+ type _CheckRightValue = DCommon.ExpectType<typeof rightValue, "result", "strict">;
61
+ return "right" as const;
62
+ },
63
+ (leftResult) => {
64
+ type _CheckLeftResult = DCommon.ExpectType<typeof leftResult, DEither.Left<"fail-task", Error> | DEither.Fail | DEither.Error<Error>, "strict">;
65
+ return "left" as const;
66
+ },
67
+ ),
68
+ );
69
+ type _CheckResultWhenIsRightOtherwise = DCommon.ExpectType<typeof resultWhenIsRightOtherwise, "right" | "left", "strict">;
70
+
71
+ // Les variantes OrThrow extraient les cas ciblés et lèvent une exception pour les autres.
72
+ const resultUnwrapByInformationOrThrow = DCommon.pipe(
73
+ myResult,
74
+ DEither.unwrapByInformationOrThrow(
75
+ ["success", "fail-task"],
76
+ ),
77
+ );
78
+ type _CheckResultUnwrapByInformationOrThrow = DCommon.ExpectType<typeof resultUnwrapByInformationOrThrow, "result" | Error, "strict">;
79
+ // Utile notamment pour affirmer le résultat attendu dans un test unitaire.
80
+
81
+ // Les predicates réduisent le type dans une branche conditionnelle.
82
+ if (DEither.hasInformation(myResult, "success")) {
83
+ type _CheckSuccessResult = DCommon.ExpectType<typeof myResult, DEither.Success<"result">, "strict">;
84
+ void myResult;
85
+ }
86
+ // isRight et isLeft réduisent aussi le type selon le statut du résultat.
87
+ if (DEither.isLeft(myResult)) {
88
+ const leftValue = DEither.unwrapLeft(myResult);
89
+ void leftValue;
90
+ }