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

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 (551) 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/install/index.d.ts +2 -0
  5. package/dist/bin/install/index.mjs +25 -0
  6. package/dist/bin/install/skill.d.ts +28 -0
  7. package/dist/bin/install/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 +19 -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 +15 -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 +48 -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 +23 -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 +26 -0
  122. package/docs/API/10-lang/10-chrono/10-isSerializedTheTime.ts +26 -0
  123. package/docs/API/10-lang/10-chrono/10-isTime.ts +23 -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 +23 -0
  131. package/docs/API/10-lang/10-chrono/10-maxTime.ts +23 -0
  132. package/docs/API/10-lang/10-chrono/10-minDate.ts +23 -0
  133. package/docs/API/10-lang/10-chrono/10-minTime.ts +23 -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 +32 -0
  138. package/docs/API/10-lang/10-chrono/10-sortTimes.ts +31 -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 +45 -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 +16 -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 +31 -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 +12 -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 +23 -0
  183. package/docs/API/10-lang/10-common/10-isType.ts +29 -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 +29 -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-timeout.ts +11 -0
  203. package/docs/API/10-lang/10-common/10-toCurriedPredicate.ts +28 -0
  204. package/docs/API/10-lang/10-common/10-toJSON.ts +15 -0
  205. package/docs/API/10-lang/10-common/10-toNative.ts +15 -0
  206. package/docs/API/10-lang/10-common/10-toRegExp.ts +17 -0
  207. package/docs/API/10-lang/10-common/10-transformer.ts +21 -0
  208. package/docs/API/10-lang/10-common/10-truthy.ts +12 -0
  209. package/docs/API/10-lang/10-common/10-useAsyncRetry.ts +31 -0
  210. package/docs/API/10-lang/10-common/10-when.ts +27 -0
  211. package/docs/API/10-lang/10-common/10-whenElse.ts +28 -0
  212. package/docs/API/10-lang/10-common/10-whenNot.ts +26 -0
  213. package/docs/API/10-lang/10-common/index.llms.md +228 -0
  214. package/docs/API/10-lang/10-common/index.md +3 -0
  215. package/docs/API/10-lang/10-dataStructure/10-absolutePath.ts +25 -0
  216. package/docs/API/10-lang/10-dataStructure/10-allowedCharacters.ts +25 -0
  217. package/docs/API/10-lang/10-dataStructure/10-array.ts +23 -0
  218. package/docs/API/10-lang/10-dataStructure/10-arrayLengthEqual.ts +25 -0
  219. package/docs/API/10-lang/10-dataStructure/10-betweenThan.ts +25 -0
  220. package/docs/API/10-lang/10-dataStructure/10-betweenThanOrEqual.ts +25 -0
  221. package/docs/API/10-lang/10-dataStructure/10-bigint.ts +22 -0
  222. package/docs/API/10-lang/10-dataStructure/10-boolean.ts +22 -0
  223. package/docs/API/10-lang/10-dataStructure/10-createCodec.ts +45 -0
  224. package/docs/API/10-lang/10-dataStructure/10-createCodecs.ts +134 -0
  225. package/docs/API/10-lang/10-dataStructure/10-createErrorInterpreter.ts +74 -0
  226. package/docs/API/10-lang/10-dataStructure/10-date.ts +23 -0
  227. package/docs/API/10-lang/10-dataStructure/10-email.ts +25 -0
  228. package/docs/API/10-lang/10-dataStructure/10-endsWith.ts +24 -0
  229. package/docs/API/10-lang/10-dataStructure/10-even.ts +25 -0
  230. package/docs/API/10-lang/10-dataStructure/10-extend.ts +27 -0
  231. package/docs/API/10-lang/10-dataStructure/10-greaterThan.ts +25 -0
  232. package/docs/API/10-lang/10-dataStructure/10-greaterThanOrEqual.ts +25 -0
  233. package/docs/API/10-lang/10-dataStructure/10-include.ts +24 -0
  234. package/docs/API/10-lang/10-dataStructure/10-integer.ts +25 -0
  235. package/docs/API/10-lang/10-dataStructure/10-isNullStructure.ts +12 -0
  236. package/docs/API/10-lang/10-dataStructure/10-isNullable.ts +12 -0
  237. package/docs/API/10-lang/10-dataStructure/10-isOptional.ts +12 -0
  238. package/docs/API/10-lang/10-dataStructure/10-isUndefinedStructure.ts +12 -0
  239. package/docs/API/10-lang/10-dataStructure/10-lazy.ts +23 -0
  240. package/docs/API/10-lang/10-dataStructure/10-lessThan.ts +25 -0
  241. package/docs/API/10-lang/10-dataStructure/10-lessThanOrEqual.ts +25 -0
  242. package/docs/API/10-lang/10-dataStructure/10-literal.ts +19 -0
  243. package/docs/API/10-lang/10-dataStructure/10-maxCharacters.ts +25 -0
  244. package/docs/API/10-lang/10-dataStructure/10-maxElements.ts +25 -0
  245. package/docs/API/10-lang/10-dataStructure/10-minCharacters.ts +25 -0
  246. package/docs/API/10-lang/10-dataStructure/10-minElements.ts +25 -0
  247. package/docs/API/10-lang/10-dataStructure/10-multipleOf.ts +25 -0
  248. package/docs/API/10-lang/10-dataStructure/10-negative.ts +25 -0
  249. package/docs/API/10-lang/10-dataStructure/10-notEmpty.ts +25 -0
  250. package/docs/API/10-lang/10-dataStructure/10-notZero.ts +25 -0
  251. package/docs/API/10-lang/10-dataStructure/10-null.ts +22 -0
  252. package/docs/API/10-lang/10-dataStructure/10-nullable.ts +19 -0
  253. package/docs/API/10-lang/10-dataStructure/10-number.ts +22 -0
  254. package/docs/API/10-lang/10-dataStructure/10-numberInString.ts +25 -0
  255. package/docs/API/10-lang/10-dataStructure/10-object.ts +25 -0
  256. package/docs/API/10-lang/10-dataStructure/10-odd.ts +25 -0
  257. package/docs/API/10-lang/10-dataStructure/10-optional.ts +19 -0
  258. package/docs/API/10-lang/10-dataStructure/10-partial.ts +23 -0
  259. package/docs/API/10-lang/10-dataStructure/10-path.ts +25 -0
  260. package/docs/API/10-lang/10-dataStructure/10-positive.ts +25 -0
  261. package/docs/API/10-lang/10-dataStructure/10-record.ts +22 -0
  262. package/docs/API/10-lang/10-dataStructure/10-refine.ts +27 -0
  263. package/docs/API/10-lang/10-dataStructure/10-regex.ts +24 -0
  264. package/docs/API/10-lang/10-dataStructure/10-required.ts +21 -0
  265. package/docs/API/10-lang/10-dataStructure/10-safe.ts +25 -0
  266. package/docs/API/10-lang/10-dataStructure/10-segmentPath.ts +25 -0
  267. package/docs/API/10-lang/10-dataStructure/10-startsWith.ts +24 -0
  268. package/docs/API/10-lang/10-dataStructure/10-strictNegative.ts +25 -0
  269. package/docs/API/10-lang/10-dataStructure/10-strictPositive.ts +25 -0
  270. package/docs/API/10-lang/10-dataStructure/10-string.ts +22 -0
  271. package/docs/API/10-lang/10-dataStructure/10-stringLengthEqual.ts +25 -0
  272. package/docs/API/10-lang/10-dataStructure/10-time.ts +23 -0
  273. package/docs/API/10-lang/10-dataStructure/10-trimmed.ts +25 -0
  274. package/docs/API/10-lang/10-dataStructure/10-typeStructureIdentifier.ts +33 -0
  275. package/docs/API/10-lang/10-dataStructure/10-undefined.ts +22 -0
  276. package/docs/API/10-lang/10-dataStructure/10-union.ts +24 -0
  277. package/docs/API/10-lang/10-dataStructure/10-unwrapLazy.ts +17 -0
  278. package/docs/API/10-lang/10-dataStructure/10-url.ts +25 -0
  279. package/docs/API/10-lang/10-dataStructure/10-uuid.ts +25 -0
  280. package/docs/API/10-lang/10-dataStructure/index.llms.md +264 -0
  281. package/docs/API/10-lang/10-dataStructure/index.md +3 -0
  282. package/docs/API/10-lang/10-either/10-asyncGroup.ts +44 -0
  283. package/docs/API/10-lang/10-either/10-asyncSafeCallback.ts +23 -0
  284. package/docs/API/10-lang/10-either/10-error.ts +12 -0
  285. package/docs/API/10-lang/10-either/10-expect.ts +13 -0
  286. package/docs/API/10-lang/10-either/10-fail.ts +12 -0
  287. package/docs/API/10-lang/10-either/10-forwardAssertsSelection.ts +28 -0
  288. package/docs/API/10-lang/10-either/10-group.ts +58 -0
  289. package/docs/API/10-lang/10-either/10-hasInformation.ts +24 -0
  290. package/docs/API/10-lang/10-either/10-isLeft.ts +16 -0
  291. package/docs/API/10-lang/10-either/10-isRight.ts +16 -0
  292. package/docs/API/10-lang/10-either/10-isSelected.ts +29 -0
  293. package/docs/API/10-lang/10-either/10-keepAsRightByInformation.ts +29 -0
  294. package/docs/API/10-lang/10-either/10-keepAsRightSelection.ts +23 -0
  295. package/docs/API/10-lang/10-either/10-left.ts +13 -0
  296. package/docs/API/10-lang/10-either/10-matchInformation.ts +26 -0
  297. package/docs/API/10-lang/10-either/10-matchInformationOtherwise.ts +27 -0
  298. package/docs/API/10-lang/10-either/10-none.ts +12 -0
  299. package/docs/API/10-lang/10-either/10-ok.ts +12 -0
  300. package/docs/API/10-lang/10-either/10-result.ts +18 -0
  301. package/docs/API/10-lang/10-either/10-rewriteInformation.ts +24 -0
  302. package/docs/API/10-lang/10-either/10-right.ts +13 -0
  303. package/docs/API/10-lang/10-either/10-rightAsyncPipe.ts +69 -0
  304. package/docs/API/10-lang/10-either/10-rightPipe.ts +72 -0
  305. package/docs/API/10-lang/10-either/10-safeCallback.ts +29 -0
  306. package/docs/API/10-lang/10-either/10-some.ts +12 -0
  307. package/docs/API/10-lang/10-either/10-success.ts +12 -0
  308. package/docs/API/10-lang/10-either/10-toMaybe.ts +53 -0
  309. package/docs/API/10-lang/10-either/10-unwrapByInformation.ts +20 -0
  310. package/docs/API/10-lang/10-either/10-unwrapByInformationOrThrow.ts +19 -0
  311. package/docs/API/10-lang/10-either/10-unwrapLeft.ts +14 -0
  312. package/docs/API/10-lang/10-either/10-unwrapLeftOrThrow.ts +17 -0
  313. package/docs/API/10-lang/10-either/10-unwrapOr.ts +17 -0
  314. package/docs/API/10-lang/10-either/10-unwrapOtherwise.ts +20 -0
  315. package/docs/API/10-lang/10-either/10-unwrapRight.ts +14 -0
  316. package/docs/API/10-lang/10-either/10-unwrapRightOrThrow.ts +17 -0
  317. package/docs/API/10-lang/10-either/10-unwrapSelection.ts +26 -0
  318. package/docs/API/10-lang/10-either/10-unwrapSelectionOrThrow.ts +19 -0
  319. package/docs/API/10-lang/10-either/10-whenHasInformation.ts +35 -0
  320. package/docs/API/10-lang/10-either/10-whenHasInformationOtherwise.ts +29 -0
  321. package/docs/API/10-lang/10-either/10-whenIsLeft.ts +20 -0
  322. package/docs/API/10-lang/10-either/10-whenIsLeftOtherwise.ts +27 -0
  323. package/docs/API/10-lang/10-either/10-whenIsRight.ts +20 -0
  324. package/docs/API/10-lang/10-either/10-whenIsRightOtherwise.ts +26 -0
  325. package/docs/API/10-lang/10-either/10-whenIsSelected.ts +33 -0
  326. package/docs/API/10-lang/10-either/10-whenIsSelectedOtherwise.ts +35 -0
  327. package/docs/API/10-lang/10-either/index.llms.md +184 -0
  328. package/docs/API/10-lang/10-either/index.md +3 -0
  329. package/docs/API/10-lang/10-generator/10-asyncChunk.ts +55 -0
  330. package/docs/API/10-lang/10-generator/10-asyncConcat.ts +46 -0
  331. package/docs/API/10-lang/10-generator/10-asyncFilter.ts +41 -0
  332. package/docs/API/10-lang/10-generator/10-asyncFlat.ts +37 -0
  333. package/docs/API/10-lang/10-generator/10-asyncGroup.ts +65 -0
  334. package/docs/API/10-lang/10-generator/10-asyncLoop.ts +59 -0
  335. package/docs/API/10-lang/10-generator/10-asyncMap.ts +48 -0
  336. package/docs/API/10-lang/10-generator/10-asyncReduce.ts +63 -0
  337. package/docs/API/10-lang/10-generator/10-chunk.ts +44 -0
  338. package/docs/API/10-lang/10-generator/10-concat.ts +37 -0
  339. package/docs/API/10-lang/10-generator/10-createExternalAsyncGenerator.ts +29 -0
  340. package/docs/API/10-lang/10-generator/10-execute.ts +44 -0
  341. package/docs/API/10-lang/10-generator/10-filter.ts +35 -0
  342. package/docs/API/10-lang/10-generator/10-flat.ts +25 -0
  343. package/docs/API/10-lang/10-generator/10-group.ts +44 -0
  344. package/docs/API/10-lang/10-generator/10-groupOutput.ts +48 -0
  345. package/docs/API/10-lang/10-generator/10-loop.ts +55 -0
  346. package/docs/API/10-lang/10-generator/10-map.ts +35 -0
  347. package/docs/API/10-lang/10-generator/10-reduce.ts +51 -0
  348. package/docs/API/10-lang/10-generator/10-reduceFrom.ts +30 -0
  349. package/docs/API/10-lang/10-generator/index.llms.md +84 -0
  350. package/docs/API/10-lang/10-generator/index.md +3 -0
  351. package/docs/API/10-lang/index.md +3 -0
  352. package/docs/API/index.md +3 -0
  353. package/docs/API.llms.md +31 -0
  354. package/docs/concepts/01-fundamental/01-constraint/01-use.ts +22 -0
  355. package/docs/concepts/01-fundamental/01-constraint/10-built-in-constraint.ts +37 -0
  356. package/docs/concepts/01-fundamental/01-constraint/20-manipulation.ts +38 -0
  357. package/docs/concepts/01-fundamental/01-constraint/30-cast.ts +62 -0
  358. package/docs/concepts/01-fundamental/01-constraint/40-custom-constraint.ts +45 -0
  359. package/docs/concepts/01-fundamental/01-constraint/index.md +3 -0
  360. package/docs/concepts/01-fundamental/02-currying/01-use.ts +33 -0
  361. package/docs/concepts/01-fundamental/02-currying/10-built-in-function.ts +178 -0
  362. package/docs/concepts/01-fundamental/02-currying/20-inner-pipe.ts +39 -0
  363. package/docs/concepts/01-fundamental/02-currying/30-async-pipe.ts +42 -0
  364. package/docs/concepts/01-fundamental/02-currying/index.md +3 -0
  365. package/docs/concepts/01-fundamental/03-either/01-use.ts +21 -0
  366. package/docs/concepts/01-fundamental/03-either/10-discrimination.ts +79 -0
  367. package/docs/concepts/01-fundamental/03-either/20-exhaustive-handling.ts +73 -0
  368. package/docs/concepts/01-fundamental/03-either/30-composition.ts +72 -0
  369. package/docs/concepts/01-fundamental/03-either/40-result-adaptation.ts +40 -0
  370. package/docs/concepts/01-fundamental/03-either/50-external-results.ts +59 -0
  371. package/docs/concepts/01-fundamental/03-either/60-contextual-state.ts +40 -0
  372. package/docs/concepts/01-fundamental/03-either/index.md +3 -0
  373. package/docs/concepts/01-fundamental/04-data-structure/01-use.ts +22 -0
  374. package/docs/concepts/01-fundamental/04-data-structure/10-structure.ts +193 -0
  375. package/docs/concepts/01-fundamental/04-data-structure/20-constraint.ts +78 -0
  376. package/docs/concepts/01-fundamental/04-data-structure/30-validation.ts +100 -0
  377. package/docs/concepts/01-fundamental/04-data-structure/40-codecs.ts +151 -0
  378. package/docs/concepts/01-fundamental/04-data-structure/50-recursive.ts +48 -0
  379. package/docs/concepts/01-fundamental/04-data-structure/60-interpret-error.ts +123 -0
  380. package/docs/concepts/01-fundamental/04-data-structure/index.md +3 -0
  381. package/docs/concepts/01-fundamental/05-chrono/01-use.ts +14 -0
  382. package/docs/concepts/01-fundamental/05-chrono/10-creation.ts +59 -0
  383. package/docs/concepts/01-fundamental/05-chrono/20-manipulation.ts +94 -0
  384. package/docs/concepts/01-fundamental/05-chrono/30-serialized.ts +73 -0
  385. package/docs/concepts/01-fundamental/05-chrono/40-timezone.ts +81 -0
  386. package/docs/concepts/01-fundamental/05-chrono/index.md +3 -0
  387. package/docs/concepts/01-fundamental/06-modeling/10-new-type.ts +42 -0
  388. package/docs/concepts/01-fundamental/06-modeling/20-entity.ts +204 -0
  389. package/docs/concepts/01-fundamental/06-modeling/30-tagged-object.ts +181 -0
  390. package/docs/concepts/01-fundamental/06-modeling/40-entity-lifecycle.ts +275 -0
  391. package/docs/concepts/01-fundamental/06-modeling/50-evidence.ts +94 -0
  392. package/docs/concepts/01-fundamental/06-modeling/60-signed-function.ts +26 -0
  393. package/docs/concepts/01-fundamental/06-modeling/index.md +3 -0
  394. package/docs/concepts/01-fundamental/07-discrimination/10-entity.ts +104 -0
  395. package/docs/concepts/01-fundamental/07-discrimination/20-fact.ts +142 -0
  396. package/docs/concepts/01-fundamental/07-discrimination/30-tagged-object.ts +105 -0
  397. package/docs/concepts/01-fundamental/07-discrimination/40-error.ts +57 -0
  398. package/docs/concepts/01-fundamental/07-discrimination/50-literal.ts +87 -0
  399. package/docs/concepts/01-fundamental/07-discrimination/60-shape.ts +152 -0
  400. package/docs/concepts/01-fundamental/07-discrimination/70-predicate.ts +89 -0
  401. package/docs/concepts/01-fundamental/07-discrimination/index.md +3 -0
  402. package/docs/concepts/01-fundamental/index.md +1 -0
  403. package/docs/concepts/02-server/10-file/10-manipulation.ts +40 -0
  404. package/docs/concepts/02-server/10-file/20-path.ts +56 -0
  405. package/docs/concepts/02-server/10-file/index.md +3 -0
  406. package/docs/concepts/02-server/20-http/10-init.ts +31 -0
  407. package/docs/concepts/02-server/20-http/20-route.ts +174 -0
  408. package/docs/concepts/02-server/20-http/30-routine.ts +195 -0
  409. package/docs/concepts/02-server/20-http/40-jwt.ts +137 -0
  410. package/docs/concepts/02-server/20-http/50-codegen.ts +29 -0
  411. package/docs/concepts/02-server/20-http/index.md +3 -0
  412. package/docs/concepts/02-server/30-environment/10-platform.ts +38 -0
  413. package/docs/concepts/02-server/30-environment/20-variable.ts +41 -0
  414. package/docs/concepts/02-server/30-environment/index.md +3 -0
  415. package/docs/concepts/02-server/40-command/10-use.ts +112 -0
  416. package/docs/concepts/02-server/40-command/20-sub-command.ts +48 -0
  417. package/docs/concepts/02-server/40-command/index.md +3 -0
  418. package/docs/concepts/02-server/index.md +1 -0
  419. package/docs/concepts/03-client/10-http/10-init.ts +64 -0
  420. package/docs/concepts/03-client/10-http/20-request.ts +244 -0
  421. package/docs/concepts/03-client/10-http/30-hook.ts +139 -0
  422. package/docs/concepts/03-client/10-http/index.md +3 -0
  423. package/docs/concepts/03-client/20-form/10-init.ts +95 -0
  424. package/docs/concepts/03-client/20-form/20-input.ts +96 -0
  425. package/docs/concepts/03-client/20-form/30-layout.ts +160 -0
  426. package/docs/concepts/03-client/20-form/40-template.ts +89 -0
  427. package/docs/concepts/03-client/20-form/index.md +3 -0
  428. package/docs/concepts/03-client/index.md +1 -0
  429. package/docs/concepts/04-tests/01-unit/10-either.ts +136 -0
  430. package/docs/concepts/04-tests/01-unit/20-server-mocking.ts +53 -0
  431. package/docs/concepts/04-tests/01-unit/index.md +3 -0
  432. package/docs/concepts/04-tests/02-e2e/10-init.ts +80 -0
  433. package/docs/concepts/04-tests/02-e2e/20-architecture.ts +76 -0
  434. package/docs/concepts/04-tests/02-e2e/30-testing.ts +90 -0
  435. package/docs/concepts/04-tests/02-e2e/index.md +3 -0
  436. package/docs/concepts/04-tests/index.md +1 -0
  437. package/docs/concepts/05-type-driven-design/01-architecture/10-boundaries.md +41 -0
  438. package/docs/concepts/05-type-driven-design/01-architecture/index.md +3 -0
  439. package/docs/concepts/05-type-driven-design/02-domains/10-entities.md +58 -0
  440. package/docs/concepts/05-type-driven-design/02-domains/20-aggregates.md +49 -0
  441. package/docs/concepts/05-type-driven-design/02-domains/30-repositories.md +41 -0
  442. package/docs/concepts/05-type-driven-design/02-domains/index.md +3 -0
  443. package/docs/concepts/05-type-driven-design/03-applications/10-use-case.md +69 -0
  444. package/docs/concepts/05-type-driven-design/03-applications/index.md +3 -0
  445. package/docs/concepts/05-type-driven-design/04-infrastructure/10-implementation.md +56 -0
  446. package/docs/concepts/05-type-driven-design/04-infrastructure/index.md +3 -0
  447. package/docs/concepts/05-type-driven-design/fixtures/business/applications/index.ts +2 -0
  448. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/book.ts +10 -0
  449. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/client.ts +10 -0
  450. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/email.ts +7 -0
  451. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/index.ts +3 -0
  452. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientGiveBackBook.ts +27 -0
  453. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientRentBook.ts +30 -0
  454. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/createBook.ts +32 -0
  455. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/index.ts +2 -0
  456. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientGiveBackBook.ts +15 -0
  457. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientRentBook.ts +16 -0
  458. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/createBook.ts +21 -0
  459. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/index.ts +3 -0
  460. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/create.ts +34 -0
  461. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/index.ts +3 -0
  462. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/rental.ts +31 -0
  463. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/returnBook.ts +30 -0
  464. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/index.ts +87 -0
  465. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/giveBackBook.ts +33 -0
  466. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/index.ts +2 -0
  467. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/rentBook.ts +32 -0
  468. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/index.ts +82 -0
  469. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/index.ts +2 -0
  470. package/docs/concepts/05-type-driven-design/fixtures/business/domains/index.ts +3 -0
  471. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/book.ts +16 -0
  472. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/client.ts +7 -0
  473. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/email.ts +12 -0
  474. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/index.ts +3 -0
  475. package/docs/concepts/05-type-driven-design/fixtures/business/index.ts +2 -0
  476. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/command/clientRentBook.ts +62 -0
  477. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/command/index.ts +11 -0
  478. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/bookExist.ts +19 -0
  479. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/clientExist.ts +19 -0
  480. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/index.ts +2 -0
  481. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/main.ts +19 -0
  482. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientGiveBackBook.ts +37 -0
  483. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientRentBook.ts +50 -0
  484. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/index.ts +2 -0
  485. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/book.ts +25 -0
  486. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/client.ts +7 -0
  487. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/email.ts +10 -0
  488. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/index.ts +3 -0
  489. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/useCases/index.ts +12 -0
  490. package/docs/concepts/05-type-driven-design/index.md +3 -0
  491. package/docs/concepts.llms.md +475 -0
  492. package/instructions/coding-conventions.md +8 -0
  493. package/package.json +96 -3
  494. package/skills/command/SKILL.md +63 -0
  495. package/skills/command/references/examples/cli.ts +22 -0
  496. package/skills/command/references/examples/options-only.ts +27 -0
  497. package/skills/command/references/examples/preview-command.ts +57 -0
  498. package/skills/command/references/execution.md +31 -0
  499. package/skills/command/references/inputs.md +27 -0
  500. package/skills/fundamental/SKILL.md +80 -0
  501. package/skills/fundamental/references/composition.md +35 -0
  502. package/skills/fundamental/references/constraints-and-validation.md +61 -0
  503. package/skills/fundamental/references/examples/async-composition.ts +15 -0
  504. package/skills/fundamental/references/examples/cast.ts +18 -0
  505. package/skills/fundamental/references/examples/composition.ts +40 -0
  506. package/skills/fundamental/references/examples/environment-initialization.ts +19 -0
  507. package/skills/fundamental/references/examples/error-propagation.ts +24 -0
  508. package/skills/fundamental/references/examples/generic-inference.ts +31 -0
  509. package/skills/fundamental/references/examples/guaranteed-array-access.ts +31 -0
  510. package/skills/fundamental/references/examples/independent-inputs.ts +18 -0
  511. package/skills/fundamental/references/examples/infer.ts +21 -0
  512. package/skills/fundamental/references/examples/input-validation.ts +37 -0
  513. package/skills/fundamental/references/examples/safe-declarations.ts +25 -0
  514. package/skills/fundamental/references/results-and-errors.md +59 -0
  515. package/skills/http-client/SKILL.md +50 -0
  516. package/skills/http-client/references/configuration.md +9 -0
  517. package/skills/http-client/references/examples/client-expectations.ts +84 -0
  518. package/skills/http-client/references/examples/client-streams.ts +74 -0
  519. package/skills/http-client/references/examples/external-client.ts +78 -0
  520. package/skills/http-client/references/hooks.md +7 -0
  521. package/skills/http-client/references/responses.md +39 -0
  522. package/skills/http-client/references/streams.md +10 -0
  523. package/skills/http-server/SKILL.md +66 -0
  524. package/skills/http-server/references/code-generation.md +31 -0
  525. package/skills/http-server/references/examples/authentication.ts +42 -0
  526. package/skills/http-server/references/examples/contracts.ts +19 -0
  527. package/skills/http-server/references/examples/generate-sdk.ts +36 -0
  528. package/skills/http-server/references/examples/initialize.ts +29 -0
  529. package/skills/http-server/references/examples/minimal-route.ts +18 -0
  530. package/skills/http-server/references/examples/protected-route.ts +31 -0
  531. package/skills/http-server/references/examples/rename-user-route.ts +54 -0
  532. package/skills/http-server/references/examples/user-checker.ts +26 -0
  533. package/skills/http-server/references/examples/user-route.ts +38 -0
  534. package/skills/http-server/references/initialization.md +33 -0
  535. package/skills/http-server/references/reusable-flows.md +40 -0
  536. package/skills/http-server/references/routes-and-floor.md +38 -0
  537. package/skills/modeling/SKILL.md +76 -0
  538. package/skills/modeling/references/domain.md +33 -0
  539. package/skills/modeling/references/orchestration.md +36 -0
  540. package/skills/server/SKILL.md +55 -0
  541. package/skills/server/references/environment.md +30 -0
  542. package/skills/server/references/examples/environment.ts +41 -0
  543. package/skills/server/references/examples/file-structure.ts +26 -0
  544. package/skills/server/references/examples/files.ts +52 -0
  545. package/skills/server/references/files.md +38 -0
  546. package/skills/server/references/structures.md +15 -0
  547. package/skills/test/SKILL.md +70 -0
  548. package/skills/test/references/examples/results.ts +95 -0
  549. package/skills/test/references/examples/server.ts +59 -0
  550. package/skills/test/references/results.md +21 -0
  551. package/skills/test/references/server.md +17 -0
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @title DGenerator.loop
3
+ *
4
+ * Produire une séquence dans un pipe en distinguant l’arrêt avec ou sans dernière valeur émise.
5
+ */
6
+ import * as DArray from "@duplojs/lang/array";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+ import * as DGenerator from "@duplojs/lang/generator";
9
+ import * as DNumber from "@duplojs/lang/number";
10
+
11
+ // Arrêt sans dernière valeur : `exit()` termine la boucle sans émettre d’élément supplémentaire.
12
+ const withoutExitValue = DCommon.pipe(
13
+ DGenerator.loop(({ previousOutput, next, exit }: DGenerator.LoopParams<number>) => {
14
+ if (previousOutput === 3) {
15
+ return exit();
16
+ }
17
+
18
+ return next(
19
+ previousOutput === undefined
20
+ ? 1
21
+ : DNumber.sum([previousOutput, 1]),
22
+ );
23
+ }),
24
+ DArray.from,
25
+ );
26
+
27
+ // La sortie vaut [1, 2, 3] : `next` émet les valeurs intermédiaires, mais `exit()` n’en émet aucune.
28
+ type _CheckWithoutExitValue = DCommon.ExpectType<
29
+ typeof withoutExitValue,
30
+ readonly number[],
31
+ "strict"
32
+ >;
33
+
34
+ // Arrêt avec dernière valeur : `exit(value)` termine la boucle en émettant cette valeur.
35
+ const withExitValue = DCommon.pipe(
36
+ DGenerator.loop(({ previousOutput, next, exit }: DGenerator.LoopParams<number>) => {
37
+ if (previousOutput === 3) {
38
+ return exit(4);
39
+ }
40
+
41
+ return next(
42
+ previousOutput === undefined
43
+ ? 1
44
+ : DNumber.sum([previousOutput, 1]),
45
+ );
46
+ }),
47
+ DArray.from,
48
+ );
49
+
50
+ // La sortie vaut [1, 2, 3, 4] : `exit(4)` ajoute la dernière valeur à la séquence.
51
+ type _CheckWithExitValue = DCommon.ExpectType<
52
+ typeof withExitValue,
53
+ readonly number[],
54
+ "strict"
55
+ >;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @title DGenerator.map
3
+ *
4
+ * Transformer chaque valeur d’un itérable dans un générateur.
5
+ */
6
+ import * as DCommon from "@duplojs/lang/common";
7
+ import * as DArray from "@duplojs/lang/array";
8
+ import * as DGenerator from "@duplojs/lang/generator";
9
+ import * as DNumber from "@duplojs/lang/number";
10
+
11
+ const input = [1, 2, 3] as const;
12
+
13
+ // Appel classique : chaque nombre est doublé.
14
+ const result = DGenerator.map(input, (item) => DNumber.sum([item, item]));
15
+
16
+ // La sortie est un générateur qui produit [2, 4, 6].
17
+ type _CheckResult = DCommon.ExpectType<
18
+ typeof result,
19
+ Generator<number, unknown, unknown>,
20
+ "strict"
21
+ >;
22
+
23
+ // Appel curifié : la transformation est configurée dans l’étape du pipe.
24
+ const piped = DCommon.pipe(
25
+ input,
26
+ DGenerator.map((item) => DNumber.sum([item, item, item])),
27
+ DArray.from,
28
+ );
29
+
30
+ // La sortie vaut [3, 6, 9].
31
+ type _CheckPiped = DCommon.ExpectType<
32
+ typeof piped,
33
+ readonly number[],
34
+ "strict"
35
+ >;
@@ -0,0 +1,51 @@
1
+ /**
2
+ * @title DGenerator.reduce
3
+ *
4
+ * Réduire un itérable avec un accumulateur et des sorties next ou exit.
5
+ */
6
+ import * as DCommon from "@duplojs/lang/common";
7
+ import * as DGenerator from "@duplojs/lang/generator";
8
+ import * as DNumber from "@duplojs/lang/number";
9
+
10
+ const input = [1, 2, 3] as const;
11
+
12
+ // Appel classique : le nombre initial est directement inféré comme accumulateur numérique.
13
+ const result = DGenerator.reduce(
14
+ input,
15
+ 0,
16
+ ({ lastValue, item, next }) => next(DNumber.sum([lastValue, item])),
17
+ );
18
+
19
+ // La sortie vaut 6 et le type de l’accumulateur est inféré comme number.
20
+ type _CheckResult = DCommon.ExpectType<typeof result, number, "strict">;
21
+
22
+ type Accumulator =
23
+ | { total: number }
24
+ | { values: readonly number[] };
25
+
26
+ // Appel curifié : le générique porté par reduceFrom décrit une union sans utiliser `as`.
27
+ const piped = DCommon.pipe(
28
+ input,
29
+ DGenerator.reduce(
30
+ DGenerator.reduceFrom<Accumulator>({ total: 0 }),
31
+ ({ lastValue, next }) => next(lastValue),
32
+ ),
33
+ );
34
+
35
+ // La sortie conserve l’union { total: number } | { values: readonly number[] }.
36
+ type _CheckPiped = DCommon.ExpectType<typeof piped, Accumulator, "strict">;
37
+
38
+ // Une sortie exit interrompt la réduction : son type string est indépendant de l’accumulateur number.
39
+ const stopped = DGenerator.reduce(
40
+ input,
41
+ 0,
42
+ ({ item, lastValue, next, exit }) => item === 2
43
+ ? exit("stop")
44
+ : next(DNumber.sum([lastValue, item])),
45
+ );
46
+
47
+ type _CheckStopped = DCommon.ExpectType<
48
+ typeof stopped,
49
+ number | string,
50
+ "strict"
51
+ >;
@@ -0,0 +1,30 @@
1
+ /**
2
+ * @title DGenerator.reduceFrom
3
+ *
4
+ * Marquer une valeur initiale, éventuellement élargie par un générique, pour une réduction.
5
+ */
6
+ import type * as DCommon from "@duplojs/lang/common";
7
+ import * as DGenerator from "@duplojs/lang/generator";
8
+
9
+ // Pour une valeur primitive, son type est inféré directement.
10
+ const numberInitial = DGenerator.reduceFrom(0);
11
+
12
+ type _CheckNumberInitial = DCommon.ExpectType<
13
+ typeof numberInitial,
14
+ DGenerator.ReduceFromResult<number>,
15
+ "strict"
16
+ >;
17
+
18
+ type Accumulator =
19
+ | { total: number }
20
+ | { values: readonly number[] };
21
+
22
+ // Pour une structure plus large, le générique de reduceFrom fixe la shape ou l’union sans utiliser `as`.
23
+ const result = DGenerator.reduce(
24
+ [1, 2, 3],
25
+ DGenerator.reduceFrom<Accumulator>({ total: 0 }),
26
+ ({ lastValue, next }) => next(lastValue),
27
+ );
28
+
29
+ // La réduction désempaquette l’accumulateur et conserve l’union définie par reduceFrom.
30
+ type _CheckResult = DCommon.ExpectType<typeof result, Accumulator, "strict">;
@@ -0,0 +1,84 @@
1
+ ## DGenerator
2
+
3
+ Création et composition de génératrices synchrones ou asynchrones pour produire, transformer, filtrer, réduire et consommer des séquences de valeurs.
4
+
5
+ ### [DGenerator.asyncChunk](10-asyncChunk.ts)
6
+
7
+ Regrouper les valeurs d’un itérable asynchrone en sous-itérables de taille bornée.
8
+
9
+ ### [DGenerator.asyncConcat](10-asyncConcat.ts)
10
+
11
+ Enchaîner plusieurs itérables synchrones ou asynchrones dans un générateur asynchrone.
12
+
13
+ ### [DGenerator.asyncFilter](10-asyncFilter.ts)
14
+
15
+ Conserver dans un générateur asynchrone les valeurs acceptées par un prédicat.
16
+
17
+ ### [DGenerator.asyncFlat](10-asyncFlat.ts)
18
+
19
+ Aplatir récursivement les valeurs itérables d’un générateur asynchrone jusqu’à une profondeur donnée.
20
+
21
+ ### [DGenerator.asyncGroup](10-asyncGroup.ts)
22
+
23
+ Regrouper les valeurs d’un itérable asynchrone selon les sorties nommées d’une callback.
24
+
25
+ ### [DGenerator.asyncLoop](10-asyncLoop.ts)
26
+
27
+ Produire une séquence asynchrone dans un pipe en distinguant l’arrêt avec ou sans dernière valeur émise.
28
+
29
+ ### [DGenerator.asyncMap](10-asyncMap.ts)
30
+
31
+ Transformer chaque valeur dans un générateur asynchrone, en autorisant une callback synchrone ou asynchrone.
32
+
33
+ ### [DGenerator.asyncReduce](10-asyncReduce.ts)
34
+
35
+ Réduire un itérable avec un accumulateur et des sorties next ou exit dans une promesse.
36
+
37
+ ### [DGenerator.chunk](10-chunk.ts)
38
+
39
+ Regrouper les valeurs d’un itérable en sous-itérables de taille bornée.
40
+
41
+ ### [DGenerator.concat](10-concat.ts)
42
+
43
+ Enchaîner plusieurs itérables dans un générateur synchrone.
44
+
45
+ ### [DGenerator.createExternalAsyncGenerator](10-createExternalAsyncGenerator.ts)
46
+
47
+ Créer un générateur asynchrone dont la prochaine valeur ou la fin sont déclenchées de l’extérieur.
48
+
49
+ ### [DGenerator.execute](10-execute.ts)
50
+
51
+ Consommer une génératrice jusqu’à sa fin, en retournant une promesse pour les génératrices asynchrones.
52
+
53
+ ### [DGenerator.filter](10-filter.ts)
54
+
55
+ Conserver dans un générateur les valeurs acceptées par un prédicat.
56
+
57
+ ### [DGenerator.flat](10-flat.ts)
58
+
59
+ Aplatir récursivement les valeurs itérables jusqu’à une profondeur donnée.
60
+
61
+ ### [DGenerator.group](10-group.ts)
62
+
63
+ Regrouper les valeurs d’un itérable selon les sorties nommées d’une callback.
64
+
65
+ ### [DGenerator.groupOutput](10-groupOutput.ts)
66
+
67
+ Construire une sortie nommée destinée à la fonction de regroupement.
68
+
69
+ ### [DGenerator.loop](10-loop.ts)
70
+
71
+ Produire une séquence dans un pipe en distinguant l’arrêt avec ou sans dernière valeur émise.
72
+
73
+ ### [DGenerator.map](10-map.ts)
74
+
75
+ Transformer chaque valeur d’un itérable dans un générateur.
76
+
77
+ ### [DGenerator.reduce](10-reduce.ts)
78
+
79
+ Réduire un itérable avec un accumulateur et des sorties next ou exit.
80
+
81
+ ### [DGenerator.reduceFrom](10-reduceFrom.ts)
82
+
83
+ Marquer une valeur initiale, éventuellement élargie par un générique, pour une réduction.
84
+
@@ -0,0 +1,3 @@
1
+ ## DGenerator
2
+
3
+ Création et composition de génératrices synchrones ou asynchrones pour produire, transformer, filtrer, réduire et consommer des séquences de valeurs.
@@ -0,0 +1,3 @@
1
+ # @duplojs/lang
2
+
3
+ Primitives fonctionnelles indépendantes de la plateforme pour composer des transformations, manipuler les données et préserver leurs garanties de typage.
@@ -0,0 +1,3 @@
1
+ # Référence API
2
+
3
+ Références des fonctions publiques de l’écosystème DuploJS, organisées par package, namespace et domaine.
@@ -0,0 +1,31 @@
1
+ # Référence API
2
+
3
+ Références des fonctions publiques de l’écosystème DuploJS, organisées par package, namespace et domaine.
4
+
5
+ # @duplojs/lang
6
+
7
+ Primitives fonctionnelles indépendantes de la plateforme pour composer des transformations, manipuler les données et préserver leurs garanties de typage.
8
+
9
+ ## [DArray](API/10-lang/10-array/index.llms.md)
10
+
11
+ Opérations immuables de lecture, transformation, sélection, réduction et modification de tableaux, avec prise en compte de leurs contraintes de typage.
12
+
13
+ ## [DChrono](API/10-lang/10-chrono/index.llms.md)
14
+
15
+ Création, calcul, comparaison, sérialisation et formatage des dates, heures, durées et fuseaux horaires dans les représentations Chrono de DuploJS.
16
+
17
+ ## [DCommon](API/10-lang/10-common/index.llms.md)
18
+
19
+ Fonctions générales de composition, de transformation, de contrôle de flux et de manipulation des valeurs partagées par les autres domaines DuploJS.
20
+
21
+ ## [DDataStructure](API/10-lang/10-dataStructure/index.llms.md)
22
+
23
+ Construction de contrats de données validables au runtime, composables et reflétés dans les types TypeScript.
24
+
25
+ ## [DEither](API/10-lang/10-either/index.llms.md)
26
+
27
+ Création, discrimination, transformation et propagation des réussites ou des échecs représentés par `Either`.
28
+
29
+ ## [DGenerator](API/10-lang/10-generator/index.llms.md)
30
+
31
+ Création et composition de génératrices synchrones ou asynchrones pour produire, transformer, filtrer, réduire et consommer des séquences de valeurs.
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @title Acquisition des contraintes.
3
+ *
4
+ * Vérification runtime et narrowing vers un type contraint.
5
+ */
6
+ import * as DNumber from "@duplojs/lang/number";
7
+
8
+ // Une contrainte existe uniquement dans le typage : elle ne modifie ni ne valide la valeur.
9
+ // L’intersection compose ici deux garanties établies par les predicates.
10
+ type Age = number & DNumber.Integer & DNumber.Positive;
11
+
12
+ // @ts-expect-error Le littéral seul ne porte pas les contraintes attendues.
13
+ const age: Age = 12;
14
+
15
+ // Chaque vérification réussie enrichit le type sans changer la valeur runtime.
16
+ const maybeAge = 12;
17
+ if (
18
+ DNumber.isInteger(maybeAge)
19
+ && DNumber.isPositive(maybeAge)
20
+ ) {
21
+ const age: Age = maybeAge;
22
+ }
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @title Composition des contraintes fournies.
3
+ *
4
+ * Réutilisation et composition des contraintes disponibles dans les domaines.
5
+ */
6
+ import type * as DArray from "@duplojs/lang/array";
7
+ import type * as DNumber from "@duplojs/lang/number";
8
+ import type * as DString from "@duplojs/lang/string";
9
+
10
+ // Avant de créer une contrainte, vérifier celles du domaine concerné.
11
+ // Une intersection cumule les garanties ; déclarer ce type ne valide aucune donnée.
12
+ // Nom sans espaces aux extrémités, contenant entre 5 et 35 caractères.
13
+ type Name = (
14
+ & string
15
+ & DString.MaxCharacters<35>
16
+ & DString.MinCharacters<5>
17
+ & DString.Trimmed
18
+ );
19
+
20
+ // Entier strictement positif, supérieur ou égal à 18 et strictement inférieur à 100.
21
+ type Age = (
22
+ & number
23
+ & DNumber.Integer
24
+ & DNumber.StrictPositive
25
+ & DNumber.GreaterThanOrEqual<18>
26
+ & DNumber.LessThan<100>
27
+ );
28
+
29
+ // Tableau de 1 à 15 éléments, dont chaque élément respecte aussi son contrat.
30
+ type Friends = (
31
+ & {
32
+ name: Name;
33
+ age: Age;
34
+ }[]
35
+ & DArray.MinElements<1>
36
+ & DArray.MaxElements<15>
37
+ );
@@ -0,0 +1,38 @@
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 * as DTuple from "@duplojs/lang/tuple";
7
+ import * as DString from "@duplojs/lang/string";
8
+ import * as DArray from "@duplojs/lang/array";
9
+
10
+ // Les primitives exploitent les garanties d’entrée pour préciser leur sortie.
11
+ // Une transformation conserve, adapte ou supprime les contraintes selon ce qui reste vrai.
12
+ declare const userEmail: string & DString.Email;
13
+
14
+ // Un email dans son format contenant obligatoirement un "@"
15
+ // donne forcément un tableau avec minimum 2 éléments.
16
+ // readonly string[] & DArray.MinElements<2>
17
+ const splitEmail = DString.split(userEmail, "@");
18
+
19
+ // Le passage du tableau en tuple est fait en interprétant la contrainte
20
+ // DArray.MinElements<2>, ce qui garantit au moins deux éléments, sans imposer une longueur exacte.
21
+ // readonly [string, string, ...string[]]
22
+ const [first, second, ...maybeRest] = DTuple.from(splitEmail);
23
+
24
+ // Les accès garantis par la cardinalité évitent le type string | undefined.
25
+ // string
26
+ const firstElement = DArray.first(splitEmail);
27
+
28
+ // string
29
+ const lastElement = DArray.last(splitEmail);
30
+
31
+ // string
32
+ const secondElement = DArray.at(splitEmail, 1);
33
+
34
+ // string | undefined
35
+ const otherElement = DArray.at(splitEmail, 10);
36
+
37
+ // Le résultat porte une garantie de cardinalité ; les fragments ne sont plus typés Email.
38
+ // Privilégier les transformations immuables : une mutation pourrait invalider une garantie.
@@ -0,0 +1,62 @@
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
+ createUser({
56
+ name: DCommon.infer("thisIsASuperName"),
57
+ age: DCommon.infer(18),
58
+ });
59
+ // {
60
+ // name: "thisIsASuperName" & DString.MinCharacters<10>;
61
+ // age: 18 & DNumber.GreaterThanOrEqual<18>;
62
+ // }
@@ -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,33 @@
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
+ // Résultat : ["typescript", "duplojs", "functional"].
32
+ // Chaque étape reçoit la sortie précédente ; les types suivent ces transformations.
33
+ // On peut ajouter, retirer ou réordonner les étapes sans restructurer le traitement.