@duplojs/agents-kit 0.1.0-beta.3 → 0.1.0-beta.7

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 (485) hide show
  1. package/README.md +11 -11
  2. package/dist/bin/index.mjs +2 -2
  3. package/dist/bin/installSkill/index.d.ts +2 -0
  4. package/dist/bin/{install → installSkill}/index.mjs +3 -3
  5. package/dist/bin/{install → installSkill}/skill.mjs +1 -1
  6. package/dist/bin/setup/instructions.d.ts +1 -1
  7. package/docs/API/10-lang/10-array/10-at.ts +4 -4
  8. package/docs/API/10-lang/10-array/10-coalescing.ts +3 -2
  9. package/docs/API/10-lang/10-array/10-indexOf.ts +1 -1
  10. package/docs/API/10-lang/10-array/10-is.ts +17 -3
  11. package/docs/API/10-lang/10-array/10-lastIndexOf.ts +1 -1
  12. package/docs/API/10-lang/10-chrono/10-addTime.ts +1 -1
  13. package/docs/API/10-lang/10-chrono/10-closestTo.ts +5 -8
  14. package/docs/API/10-lang/10-chrono/10-isDate.ts +15 -2
  15. package/docs/API/10-lang/10-chrono/10-isSerializedTheDate.ts +16 -1
  16. package/docs/API/10-lang/10-chrono/10-isSerializedTheTime.ts +16 -1
  17. package/docs/API/10-lang/10-chrono/10-isTime.ts +15 -2
  18. package/docs/API/10-lang/10-chrono/10-maxDate.ts +4 -8
  19. package/docs/API/10-lang/10-chrono/10-maxTime.ts +4 -8
  20. package/docs/API/10-lang/10-chrono/10-minDate.ts +4 -8
  21. package/docs/API/10-lang/10-chrono/10-minTime.ts +4 -8
  22. package/docs/API/10-lang/10-chrono/10-sortDates.ts +6 -8
  23. package/docs/API/10-lang/10-chrono/10-sortTimes.ts +6 -8
  24. package/docs/API/10-lang/10-chrono/10-subtractTime.ts +1 -1
  25. package/docs/API/10-lang/10-common/10-and.ts +6 -0
  26. package/docs/API/10-lang/10-common/10-createQueue.ts +4 -3
  27. package/docs/API/10-lang/10-common/10-createTransformer.ts +1 -1
  28. package/docs/API/10-lang/10-common/10-equal.ts +6 -0
  29. package/docs/API/10-lang/10-common/10-falsy.ts +19 -0
  30. package/docs/API/10-lang/10-common/10-instanceOf.ts +14 -3
  31. package/docs/API/10-lang/10-common/10-isType.ts +6 -0
  32. package/docs/API/10-lang/10-common/10-justExec.ts +3 -3
  33. package/docs/API/10-lang/10-common/10-or.ts +17 -3
  34. package/docs/API/10-lang/10-common/10-tap.ts +28 -0
  35. package/docs/API/10-lang/10-common/10-toJSON.ts +1 -1
  36. package/docs/API/10-lang/10-common/10-toNative.ts +1 -1
  37. package/docs/API/10-lang/10-common/10-toRegExp.ts +1 -1
  38. package/docs/API/10-lang/10-common/10-truthy.ts +19 -0
  39. package/docs/API/10-lang/10-common/10-whenNot.ts +44 -13
  40. package/docs/API/10-lang/10-common/index.llms.md +4 -0
  41. package/docs/API/10-lang/10-dataStructure/10-typeStructureIdentifier.ts +2 -2
  42. package/docs/API/10-lang/10-either/10-asyncGroup.ts +1 -1
  43. package/docs/API/10-lang/10-either/10-asyncSafeCallback.ts +4 -2
  44. package/docs/API/10-lang/10-either/10-extractErrorInLeft.ts +45 -0
  45. package/docs/API/10-lang/10-either/10-forwardAssertsSelection.ts +1 -1
  46. package/docs/API/10-lang/10-either/10-group.ts +1 -1
  47. package/docs/API/10-lang/10-either/10-hasInformation.ts +6 -0
  48. package/docs/API/10-lang/10-either/10-isLeft.ts +10 -1
  49. package/docs/API/10-lang/10-either/10-isRight.ts +10 -1
  50. package/docs/API/10-lang/10-either/10-isSelected.ts +13 -1
  51. package/docs/API/10-lang/10-either/10-keepAsRightSelection.ts +1 -1
  52. package/docs/API/10-lang/10-either/10-matchInformation.ts +7 -5
  53. package/docs/API/10-lang/10-either/10-matchInformationCombination.ts +61 -0
  54. package/docs/API/10-lang/10-either/10-matchInformationCombinationOtherwise.ts +62 -0
  55. package/docs/API/10-lang/10-either/10-matchInformationOtherwise.ts +7 -5
  56. package/docs/API/10-lang/10-either/10-rightAsyncPipe.ts +2 -1
  57. package/docs/API/10-lang/10-either/10-rightPipe.ts +1 -1
  58. package/docs/API/10-lang/10-either/10-safeCallback.ts +1 -1
  59. package/docs/API/10-lang/10-either/10-unwrapOr.ts +2 -2
  60. package/docs/API/10-lang/10-either/10-unwrapOtherwise.ts +2 -2
  61. package/docs/API/10-lang/10-either/10-whenHasInformation.ts +4 -3
  62. package/docs/API/10-lang/10-either/10-whenHasInformationOtherwise.ts +5 -5
  63. package/docs/API/10-lang/10-either/10-whenIsLeft.ts +2 -2
  64. package/docs/API/10-lang/10-either/10-whenIsLeftOtherwise.ts +5 -5
  65. package/docs/API/10-lang/10-either/10-whenIsRight.ts +2 -2
  66. package/docs/API/10-lang/10-either/10-whenIsRightOtherwise.ts +7 -7
  67. package/docs/API/10-lang/10-either/10-whenIsSelected.ts +5 -5
  68. package/docs/API/10-lang/10-either/10-whenIsSelectedOtherwise.ts +5 -5
  69. package/docs/API/10-lang/10-either/index.llms.md +12 -0
  70. package/docs/API/10-lang/10-generator/10-asyncConcat.ts +7 -10
  71. package/docs/API/10-lang/10-generator/10-asyncFlat.ts +6 -6
  72. package/docs/API/10-lang/10-generator/10-concat.ts +3 -3
  73. package/docs/API/10-lang/10-generator/10-flat.ts +2 -2
  74. package/docs/API/10-lang/10-generator/10-map.ts +1 -1
  75. package/docs/API/10-lang/10-generator/10-reduce.ts +1 -1
  76. package/docs/API/10-lang/10-number/10-betweenThan.ts +43 -0
  77. package/docs/API/10-lang/10-number/10-betweenThanOrEqual.ts +43 -0
  78. package/docs/API/10-lang/10-number/10-greaterThan.ts +35 -0
  79. package/docs/API/10-lang/10-number/10-greaterThanOrEqual.ts +35 -0
  80. package/docs/API/10-lang/10-number/10-isEven.ts +33 -0
  81. package/docs/API/10-lang/10-number/10-isInteger.ts +33 -0
  82. package/docs/API/10-lang/10-number/10-isMultipleOf.ts +35 -0
  83. package/docs/API/10-lang/10-number/10-isNegative.ts +33 -0
  84. package/docs/API/10-lang/10-number/10-isNotZero.ts +33 -0
  85. package/docs/API/10-lang/10-number/10-isOdd.ts +33 -0
  86. package/docs/API/10-lang/10-number/10-isPositive.ts +33 -0
  87. package/docs/API/10-lang/10-number/10-isSafe.ts +33 -0
  88. package/docs/API/10-lang/10-number/10-isStrictNegative.ts +34 -0
  89. package/docs/API/10-lang/10-number/10-isStrictPositive.ts +33 -0
  90. package/docs/API/10-lang/10-number/10-lessThan.ts +35 -0
  91. package/docs/API/10-lang/10-number/10-lessThanOrEqual.ts +35 -0
  92. package/docs/API/10-lang/10-number/10-max.ts +19 -0
  93. package/docs/API/10-lang/10-number/10-maxOf.ts +19 -0
  94. package/docs/API/10-lang/10-number/10-min.ts +19 -0
  95. package/docs/API/10-lang/10-number/10-minOf.ts +19 -0
  96. package/docs/API/10-lang/10-number/10-sort.ts +19 -0
  97. package/docs/API/10-lang/10-number/10-sum.ts +19 -0
  98. package/docs/API/10-lang/10-number/index.llms.md +92 -0
  99. package/docs/API/10-lang/10-number/index.md +3 -0
  100. package/docs/API/10-lang/10-object/10-assign.ts +41 -0
  101. package/docs/API/10-lang/10-object/10-countKeys.ts +15 -0
  102. package/docs/API/10-lang/10-object/10-deepDiscriminate.ts +63 -0
  103. package/docs/API/10-lang/10-object/10-deepOverride.ts +35 -0
  104. package/docs/API/10-lang/10-object/10-discriminate.ts +55 -0
  105. package/docs/API/10-lang/10-object/10-discriminateEntryKey.ts +43 -0
  106. package/docs/API/10-lang/10-object/10-discriminateEntryValue.ts +44 -0
  107. package/docs/API/10-lang/10-object/10-entries.ts +19 -0
  108. package/docs/API/10-lang/10-object/10-entry.ts +17 -0
  109. package/docs/API/10-lang/10-object/10-fromEntries.ts +23 -0
  110. package/docs/API/10-lang/10-object/10-getDeepProperty.ts +26 -0
  111. package/docs/API/10-lang/10-object/10-getProperty.ts +24 -0
  112. package/docs/API/10-lang/10-object/10-hasKeys.ts +43 -0
  113. package/docs/API/10-lang/10-object/10-isSimple.ts +38 -0
  114. package/docs/API/10-lang/10-object/10-keys.ts +19 -0
  115. package/docs/API/10-lang/10-object/10-omit.ts +39 -0
  116. package/docs/API/10-lang/10-object/10-override.ts +24 -0
  117. package/docs/API/10-lang/10-object/10-pick.ts +41 -0
  118. package/docs/API/10-lang/10-object/10-to.ts +40 -0
  119. package/docs/API/10-lang/10-object/10-transformProperties.ts +43 -0
  120. package/docs/API/10-lang/10-object/10-transformProperty.ts +39 -0
  121. package/docs/API/10-lang/10-object/10-values.ts +19 -0
  122. package/docs/API/10-lang/10-object/index.llms.md +92 -0
  123. package/docs/API/10-lang/10-object/index.md +3 -0
  124. package/docs/API/10-lang/10-path/10-computeRelative.ts +19 -0
  125. package/docs/API/10-lang/10-path/10-concatSegment.ts +28 -0
  126. package/docs/API/10-lang/10-path/10-create.ts +21 -0
  127. package/docs/API/10-lang/10-path/10-createAbsolute.ts +21 -0
  128. package/docs/API/10-lang/10-path/10-createAbsoluteOrThrow.ts +16 -0
  129. package/docs/API/10-lang/10-path/10-createMatcher.ts +50 -0
  130. package/docs/API/10-lang/10-path/10-createOrThrow.ts +16 -0
  131. package/docs/API/10-lang/10-path/10-createSegment.ts +26 -0
  132. package/docs/API/10-lang/10-path/10-createSegmentOrThrow.ts +16 -0
  133. package/docs/API/10-lang/10-path/10-declareAbsolutePath.ts +15 -0
  134. package/docs/API/10-lang/10-path/10-declarePath.ts +15 -0
  135. package/docs/API/10-lang/10-path/10-declareSegment.ts +15 -0
  136. package/docs/API/10-lang/10-path/10-getBaseName.ts +22 -0
  137. package/docs/API/10-lang/10-path/10-getExtensionName.ts +22 -0
  138. package/docs/API/10-lang/10-path/10-getParentFolderPath.ts +25 -0
  139. package/docs/API/10-lang/10-path/10-is.ts +46 -0
  140. package/docs/API/10-lang/10-path/10-isAbsolute.ts +46 -0
  141. package/docs/API/10-lang/10-path/10-isSegment.ts +42 -0
  142. package/docs/API/10-lang/10-path/10-normalize.ts +26 -0
  143. package/docs/API/10-lang/10-path/10-resolveFrom.ts +37 -0
  144. package/docs/API/10-lang/10-path/10-resolveRelative.ts +23 -0
  145. package/docs/API/10-lang/10-path/index.llms.md +88 -0
  146. package/docs/API/10-lang/10-path/index.md +3 -0
  147. package/docs/API/10-lang/10-pattern/10-exhaustive.ts +26 -0
  148. package/docs/API/10-lang/10-pattern/10-isMatch.ts +72 -0
  149. package/docs/API/10-lang/10-pattern/10-match.ts +133 -0
  150. package/docs/API/10-lang/10-pattern/10-matchWithEntity.ts +49 -0
  151. package/docs/API/10-lang/10-pattern/10-matchWithEntityOtherwise.ts +55 -0
  152. package/docs/API/10-lang/10-pattern/10-matchWithError.ts +45 -0
  153. package/docs/API/10-lang/10-pattern/10-matchWithErrorOtherwise.ts +48 -0
  154. package/docs/API/10-lang/10-pattern/10-matchWithFact.ts +49 -0
  155. package/docs/API/10-lang/10-pattern/10-matchWithFactOtherwise.ts +49 -0
  156. package/docs/API/10-lang/10-pattern/10-matchWithNumber.ts +33 -0
  157. package/docs/API/10-lang/10-pattern/10-matchWithNumberOtherwise.ts +37 -0
  158. package/docs/API/10-lang/10-pattern/10-matchWithString.ts +34 -0
  159. package/docs/API/10-lang/10-pattern/10-matchWithStringOtherwise.ts +35 -0
  160. package/docs/API/10-lang/10-pattern/10-matchWithTaggedObject.ts +43 -0
  161. package/docs/API/10-lang/10-pattern/10-matchWithTaggedObjectOtherwise.ts +49 -0
  162. package/docs/API/10-lang/10-pattern/10-otherwise.ts +28 -0
  163. package/docs/API/10-lang/10-pattern/10-union.ts +47 -0
  164. package/docs/API/10-lang/10-pattern/10-when.ts +46 -0
  165. package/docs/API/10-lang/10-pattern/10-whenNot.ts +123 -0
  166. package/docs/API/10-lang/10-pattern/index.llms.md +80 -0
  167. package/docs/API/10-lang/10-pattern/index.md +3 -0
  168. package/docs/API/10-lang/10-printer/10-bold.ts +12 -0
  169. package/docs/API/10-lang/10-printer/10-colorized.ts +18 -0
  170. package/docs/API/10-lang/10-printer/10-colorizedBold.ts +18 -0
  171. package/docs/API/10-lang/10-printer/10-primitives.md +19 -0
  172. package/docs/API/10-lang/10-printer/10-renderLine.ts +36 -0
  173. package/docs/API/10-lang/10-printer/10-renderParagraph.ts +37 -0
  174. package/docs/API/10-lang/10-printer/index.llms.md +29 -0
  175. package/docs/API/10-lang/10-printer/index.md +3 -0
  176. package/docs/API/10-lang/10-string/10-at.ts +18 -0
  177. package/docs/API/10-lang/10-string/10-capitalize.ts +18 -0
  178. package/docs/API/10-lang/10-string/10-charAt.ts +18 -0
  179. package/docs/API/10-lang/10-string/10-concat.ts +18 -0
  180. package/docs/API/10-lang/10-string/10-endsWith.ts +33 -0
  181. package/docs/API/10-lang/10-string/10-extract.ts +18 -0
  182. package/docs/API/10-lang/10-string/10-extractAll.ts +18 -0
  183. package/docs/API/10-lang/10-string/10-first.ts +17 -0
  184. package/docs/API/10-lang/10-string/10-includes.ts +33 -0
  185. package/docs/API/10-lang/10-string/10-indexOf.ts +17 -0
  186. package/docs/API/10-lang/10-string/10-isComposedOf.ts +33 -0
  187. package/docs/API/10-lang/10-string/10-isEmail.ts +56 -0
  188. package/docs/API/10-lang/10-string/10-isIn.ts +34 -0
  189. package/docs/API/10-lang/10-string/10-isKeyof.ts +37 -0
  190. package/docs/API/10-lang/10-string/10-isNotEmpty.ts +32 -0
  191. package/docs/API/10-lang/10-string/10-isNumber.ts +32 -0
  192. package/docs/API/10-lang/10-string/10-isTrimmed.ts +33 -0
  193. package/docs/API/10-lang/10-string/10-isUrl.ts +31 -0
  194. package/docs/API/10-lang/10-string/10-isUuid.ts +31 -0
  195. package/docs/API/10-lang/10-string/10-join.ts +18 -0
  196. package/docs/API/10-lang/10-string/10-last.ts +17 -0
  197. package/docs/API/10-lang/10-string/10-lastIndexOf.ts +17 -0
  198. package/docs/API/10-lang/10-string/10-length.ts +18 -0
  199. package/docs/API/10-lang/10-string/10-lengthEqual.ts +33 -0
  200. package/docs/API/10-lang/10-string/10-maxCharacters.ts +33 -0
  201. package/docs/API/10-lang/10-string/10-minCharacters.ts +33 -0
  202. package/docs/API/10-lang/10-string/10-normalize.ts +17 -0
  203. package/docs/API/10-lang/10-string/10-padEnd.ts +17 -0
  204. package/docs/API/10-lang/10-string/10-padStart.ts +17 -0
  205. package/docs/API/10-lang/10-string/10-pop.ts +17 -0
  206. package/docs/API/10-lang/10-string/10-prepend.ts +17 -0
  207. package/docs/API/10-lang/10-string/10-repeat.ts +17 -0
  208. package/docs/API/10-lang/10-string/10-replace.ts +18 -0
  209. package/docs/API/10-lang/10-string/10-replaceAll.ts +17 -0
  210. package/docs/API/10-lang/10-string/10-search.ts +17 -0
  211. package/docs/API/10-lang/10-string/10-shift.ts +17 -0
  212. package/docs/API/10-lang/10-string/10-slice.ts +17 -0
  213. package/docs/API/10-lang/10-string/10-sort.ts +19 -0
  214. package/docs/API/10-lang/10-string/10-sortCompare.ts +17 -0
  215. package/docs/API/10-lang/10-string/10-split.ts +34 -0
  216. package/docs/API/10-lang/10-string/10-startsWith.ts +33 -0
  217. package/docs/API/10-lang/10-string/10-stringify.ts +11 -0
  218. package/docs/API/10-lang/10-string/10-substring.ts +17 -0
  219. package/docs/API/10-lang/10-string/10-test.ts +17 -0
  220. package/docs/API/10-lang/10-string/10-to.ts +11 -0
  221. package/docs/API/10-lang/10-string/10-toLowerCase.ts +17 -0
  222. package/docs/API/10-lang/10-string/10-toUpperCase.ts +17 -0
  223. package/docs/API/10-lang/10-string/10-trim.ts +17 -0
  224. package/docs/API/10-lang/10-string/10-trimEnd.ts +17 -0
  225. package/docs/API/10-lang/10-string/10-trimStart.ts +17 -0
  226. package/docs/API/10-lang/10-string/10-uncapitalize.ts +17 -0
  227. package/docs/API/10-lang/10-string/index.llms.md +208 -0
  228. package/docs/API/10-lang/10-string/index.md +3 -0
  229. package/docs/API/10-lang/10-tuple/10-from.ts +50 -0
  230. package/docs/API/10-lang/10-tuple/10-map.ts +37 -0
  231. package/docs/API/10-lang/10-tuple/index.llms.md +12 -0
  232. package/docs/API/10-lang/10-tuple/index.md +3 -0
  233. package/docs/API/40-json-web-token/10-tokenHandler/10-createTokenHandler.ts +160 -0
  234. package/docs/API/40-json-web-token/10-tokenHandler/index.llms.md +8 -0
  235. package/docs/API/40-json-web-token/10-tokenHandler/index.md +3 -0
  236. package/docs/API/40-json-web-token/20-signer/10-createHS256.ts +24 -0
  237. package/docs/API/40-json-web-token/20-signer/10-createHS512.ts +24 -0
  238. package/docs/API/40-json-web-token/20-signer/10-createRS256.ts +28 -0
  239. package/docs/API/40-json-web-token/20-signer/10-createRS512.ts +28 -0
  240. package/docs/API/40-json-web-token/20-signer/10-factory.ts +29 -0
  241. package/docs/API/40-json-web-token/20-signer/index.llms.md +24 -0
  242. package/docs/API/40-json-web-token/20-signer/index.md +3 -0
  243. package/docs/API/40-json-web-token/30-cipher/10-createRSAOAEP.ts +26 -0
  244. package/docs/API/40-json-web-token/30-cipher/10-createRSAOAEP256.ts +26 -0
  245. package/docs/API/40-json-web-token/30-cipher/10-factory.ts +29 -0
  246. package/docs/API/40-json-web-token/30-cipher/index.llms.md +16 -0
  247. package/docs/API/40-json-web-token/30-cipher/index.md +3 -0
  248. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.decrypt.ts +17 -0
  249. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.encrypt.ts +11 -0
  250. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.generateInitializationVector.ts +9 -0
  251. package/docs/API/40-json-web-token/40-utils/10-HMAC.sign.ts +13 -0
  252. package/docs/API/40-json-web-token/40-utils/10-HMAC.verify.ts +11 -0
  253. package/docs/API/40-json-web-token/40-utils/10-RSA.sign.ts +14 -0
  254. package/docs/API/40-json-web-token/40-utils/10-RSA.verify.ts +13 -0
  255. package/docs/API/40-json-web-token/40-utils/10-RSA_OAEP.decrypt.ts +13 -0
  256. package/docs/API/40-json-web-token/40-utils/10-RSA_OAEP.encrypt.ts +10 -0
  257. package/docs/API/40-json-web-token/40-utils/10-decodeBase64.ts +9 -0
  258. package/docs/API/40-json-web-token/40-utils/10-decodeBase64Url.ts +9 -0
  259. package/docs/API/40-json-web-token/40-utils/10-decodeText.ts +9 -0
  260. package/docs/API/40-json-web-token/40-utils/10-encodeBase64.ts +9 -0
  261. package/docs/API/40-json-web-token/40-utils/10-encodeBase64Url.ts +9 -0
  262. package/docs/API/40-json-web-token/40-utils/10-encodeText.ts +9 -0
  263. package/docs/API/40-json-web-token/40-utils/10-isBase64Url.ts +11 -0
  264. package/docs/API/40-json-web-token/40-utils/10-jsonParse.ts +11 -0
  265. package/docs/API/40-json-web-token/40-utils/10-pemToBinary.ts +11 -0
  266. package/docs/API/40-json-web-token/40-utils/index.llms.md +76 -0
  267. package/docs/API/40-json-web-token/40-utils/index.md +3 -0
  268. package/docs/API/40-json-web-token/index.md +3 -0
  269. package/docs/API/50-form/10-vue/10-construction/10-createForm.ts +48 -0
  270. package/docs/API/50-form/10-vue/10-construction/10-createFormField.ts +66 -0
  271. package/docs/API/50-form/10-vue/10-construction/10-createGridTemplates.ts +39 -0
  272. package/docs/API/50-form/10-vue/10-construction/10-createInput.ts +46 -0
  273. package/docs/API/50-form/10-vue/10-construction/10-createTemplate.ts +36 -0
  274. package/docs/API/50-form/10-vue/10-construction/fixtures/AddressInput.vue +19 -0
  275. package/docs/API/50-form/10-vue/10-construction/index.llms.md +24 -0
  276. package/docs/API/50-form/10-vue/10-construction/index.md +3 -0
  277. package/docs/API/50-form/10-vue/20-layouts/10-useCheckLayout.ts +40 -0
  278. package/docs/API/50-form/10-vue/20-layouts/10-useDisabledLayout.ts +34 -0
  279. package/docs/API/50-form/10-vue/20-layouts/10-useMultiLayout.ts +32 -0
  280. package/docs/API/50-form/10-vue/20-layouts/10-useRepeatLayout.ts +34 -0
  281. package/docs/API/50-form/10-vue/20-layouts/10-useSectionLayout.ts +20 -0
  282. package/docs/API/50-form/10-vue/20-layouts/10-useSlotLayout.ts +37 -0
  283. package/docs/API/50-form/10-vue/20-layouts/10-useStepLayout.ts +31 -0
  284. package/docs/API/50-form/10-vue/20-layouts/10-useUnionLayout.ts +48 -0
  285. package/docs/API/50-form/10-vue/20-layouts/index.llms.md +36 -0
  286. package/docs/API/50-form/10-vue/20-layouts/index.md +3 -0
  287. package/docs/API/50-form/10-vue/30-designSystem/10-useCheckbox.ts +13 -0
  288. package/docs/API/50-form/10-vue/30-designSystem/10-useCheckboxPolicy.ts +18 -0
  289. package/docs/API/50-form/10-vue/30-designSystem/10-useDateInput.ts +20 -0
  290. package/docs/API/50-form/10-vue/30-designSystem/10-useDualRangeInput.ts +27 -0
  291. package/docs/API/50-form/10-vue/30-designSystem/10-useFileInput.ts +23 -0
  292. package/docs/API/50-form/10-vue/30-designSystem/10-useNumberInput.ts +18 -0
  293. package/docs/API/50-form/10-vue/30-designSystem/10-useRadioGroup.ts +31 -0
  294. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeDateInput.ts +23 -0
  295. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeInput.ts +18 -0
  296. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeTimeInput.ts +23 -0
  297. package/docs/API/50-form/10-vue/30-designSystem/10-useSelectInput.ts +31 -0
  298. package/docs/API/50-form/10-vue/30-designSystem/10-useTextInput.ts +14 -0
  299. package/docs/API/50-form/10-vue/30-designSystem/10-useTextareaInput.ts +14 -0
  300. package/docs/API/50-form/10-vue/30-designSystem/10-useTimeInput.ts +20 -0
  301. package/docs/API/50-form/10-vue/30-designSystem/20-components.md +11 -0
  302. package/docs/API/50-form/10-vue/30-designSystem/index.llms.md +65 -0
  303. package/docs/API/50-form/10-vue/30-designSystem/index.md +3 -0
  304. package/docs/API/50-form/10-vue/fixtures/templates.ts +20 -0
  305. package/docs/API/50-form/10-vue/index.md +3 -0
  306. package/docs/API/50-form/index.md +3 -0
  307. package/docs/API/60-playwright/10-construction/10-createComponent.ts +47 -0
  308. package/docs/API/60-playwright/10-construction/10-createComponentInteraction.ts +28 -0
  309. package/docs/API/60-playwright/10-construction/10-createPage.ts +34 -0
  310. package/docs/API/60-playwright/10-construction/10-createStepWrapper.ts +23 -0
  311. package/docs/API/60-playwright/10-construction/10-createWebsite.ts +57 -0
  312. package/docs/API/60-playwright/10-construction/10-initClient.ts +38 -0
  313. package/docs/API/60-playwright/10-construction/index.llms.md +28 -0
  314. package/docs/API/60-playwright/10-construction/index.md +3 -0
  315. package/docs/API/60-playwright/20-actions/10-check.ts +9 -0
  316. package/docs/API/60-playwright/20-actions/10-clear.ts +9 -0
  317. package/docs/API/60-playwright/20-actions/10-click.ts +9 -0
  318. package/docs/API/60-playwright/20-actions/10-dragTo.ts +10 -0
  319. package/docs/API/60-playwright/20-actions/10-extractContent.ts +10 -0
  320. package/docs/API/60-playwright/20-actions/10-fill.ts +9 -0
  321. package/docs/API/60-playwright/20-actions/10-focus.ts +9 -0
  322. package/docs/API/60-playwright/20-actions/10-forceClick.ts +10 -0
  323. package/docs/API/60-playwright/20-actions/10-hover.ts +9 -0
  324. package/docs/API/60-playwright/20-actions/10-press.ts +9 -0
  325. package/docs/API/60-playwright/20-actions/10-selectOption.ts +10 -0
  326. package/docs/API/60-playwright/20-actions/10-type.ts +10 -0
  327. package/docs/API/60-playwright/20-actions/10-uncheck.ts +9 -0
  328. package/docs/API/60-playwright/20-actions/10-withStep.ts +10 -0
  329. package/docs/API/60-playwright/20-actions/index.llms.md +60 -0
  330. package/docs/API/60-playwright/20-actions/index.md +3 -0
  331. package/docs/API/60-playwright/30-assertions/10-toBeBusy.ts +10 -0
  332. package/docs/API/60-playwright/30-assertions/10-toBeChecked.ts +9 -0
  333. package/docs/API/60-playwright/30-assertions/10-toBeDisabled.ts +9 -0
  334. package/docs/API/60-playwright/30-assertions/10-toBeEnabled.ts +9 -0
  335. package/docs/API/60-playwright/30-assertions/10-toBeHidden.ts +9 -0
  336. package/docs/API/60-playwright/30-assertions/10-toBeNotBusy.ts +10 -0
  337. package/docs/API/60-playwright/30-assertions/10-toBeVisible.ts +10 -0
  338. package/docs/API/60-playwright/30-assertions/10-toContainText.ts +9 -0
  339. package/docs/API/60-playwright/30-assertions/10-toHaveAttribute.ts +12 -0
  340. package/docs/API/60-playwright/30-assertions/10-toHaveClass.ts +9 -0
  341. package/docs/API/60-playwright/30-assertions/10-toHaveNoText.ts +10 -0
  342. package/docs/API/60-playwright/30-assertions/10-toHaveQuantity.ts +20 -0
  343. package/docs/API/60-playwright/30-assertions/10-toHaveText.ts +9 -0
  344. package/docs/API/60-playwright/30-assertions/10-toHaveValue.ts +9 -0
  345. package/docs/API/60-playwright/30-assertions/10-withStep.ts +10 -0
  346. package/docs/API/60-playwright/30-assertions/index.llms.md +64 -0
  347. package/docs/API/60-playwright/30-assertions/index.md +3 -0
  348. package/docs/API/60-playwright/fixtures/component.ts +44 -0
  349. package/docs/API/60-playwright/index.md +3 -0
  350. package/docs/API.llms.md +84 -0
  351. package/docs/concepts/01-fundamental/01-constraint/20-manipulation.ts +9 -6
  352. package/docs/concepts/01-fundamental/01-constraint/30-cast.ts +9 -5
  353. package/docs/concepts/01-fundamental/02-currying/01-use.ts +5 -0
  354. package/docs/concepts/01-fundamental/02-currying/10-built-in-function.ts +28 -16
  355. package/docs/concepts/01-fundamental/02-currying/20-inner-pipe.ts +11 -2
  356. package/docs/concepts/01-fundamental/02-currying/30-async-pipe.ts +11 -2
  357. package/docs/concepts/01-fundamental/03-either/10-discrimination.ts +23 -12
  358. package/docs/concepts/01-fundamental/03-either/20-exhaustive-handling.ts +27 -10
  359. package/docs/concepts/01-fundamental/03-either/30-composition.ts +18 -10
  360. package/docs/concepts/01-fundamental/03-either/40-result-adaptation.ts +10 -4
  361. package/docs/concepts/01-fundamental/03-either/50-external-results.ts +16 -3
  362. package/docs/concepts/01-fundamental/04-data-structure/10-structure.ts +110 -59
  363. package/docs/concepts/01-fundamental/04-data-structure/20-constraint.ts +20 -12
  364. package/docs/concepts/01-fundamental/04-data-structure/30-validation.ts +13 -9
  365. package/docs/concepts/01-fundamental/04-data-structure/40-codecs.ts +31 -20
  366. package/docs/concepts/01-fundamental/04-data-structure/50-recursive.ts +10 -1
  367. package/docs/concepts/01-fundamental/05-chrono/10-creation.ts +39 -13
  368. package/docs/concepts/01-fundamental/05-chrono/20-manipulation.ts +20 -4
  369. package/docs/concepts/01-fundamental/05-chrono/30-serialized.ts +22 -6
  370. package/docs/concepts/01-fundamental/05-chrono/40-timezone.ts +5 -1
  371. package/docs/concepts/01-fundamental/06-modeling/20-entity.ts +29 -42
  372. package/docs/concepts/01-fundamental/06-modeling/30-tagged-object.ts +46 -23
  373. package/docs/concepts/01-fundamental/06-modeling/40-entity-lifecycle.ts +30 -33
  374. package/docs/concepts/01-fundamental/07-discrimination/10-entity.ts +52 -20
  375. package/docs/concepts/01-fundamental/07-discrimination/20-fact.ts +54 -38
  376. package/docs/concepts/01-fundamental/07-discrimination/30-tagged-object.ts +52 -20
  377. package/docs/concepts/01-fundamental/07-discrimination/40-error.ts +26 -10
  378. package/docs/concepts/01-fundamental/07-discrimination/50-literal.ts +29 -10
  379. package/docs/concepts/01-fundamental/07-discrimination/60-shape.ts +10 -2
  380. package/docs/concepts/01-fundamental/07-discrimination/70-predicate.ts +18 -6
  381. package/docs/concepts/01-fundamental/08-kind/01-identity.md +7 -0
  382. package/docs/concepts/01-fundamental/08-kind/20-metadata.md +11 -0
  383. package/docs/concepts/01-fundamental/08-kind/30-transport.md +11 -0
  384. package/docs/concepts/01-fundamental/08-kind/index.md +3 -0
  385. package/docs/concepts/02-server/10-file/10-manipulation.ts +15 -3
  386. package/docs/concepts/02-server/10-file/20-path.ts +22 -6
  387. package/docs/concepts/02-server/20-http/10-init.ts +1 -9
  388. package/docs/concepts/02-server/20-http/20-route.ts +40 -32
  389. package/docs/concepts/02-server/20-http/30-routine.ts +12 -19
  390. package/docs/concepts/02-server/20-http/40-jwt.ts +49 -37
  391. package/docs/concepts/02-server/20-http/50-open-api.ts +44 -0
  392. package/docs/concepts/02-server/20-http/index.md +1 -1
  393. package/docs/concepts/02-server/30-environment/10-platform.ts +12 -3
  394. package/docs/concepts/02-server/30-environment/20-variable.ts +13 -7
  395. package/docs/concepts/03-client/10-http/10-init.ts +11 -23
  396. package/docs/concepts/03-client/10-http/20-request.ts +79 -69
  397. package/docs/concepts/03-client/10-http/30-hook.ts +23 -23
  398. package/docs/concepts/03-client/20-form/10-init.ts +18 -15
  399. package/docs/concepts/03-client/20-form/20-input.ts +13 -6
  400. package/docs/concepts/03-client/20-form/30-layout.ts +44 -49
  401. package/docs/concepts/03-client/20-form/40-template.ts +10 -5
  402. package/docs/concepts/03-client/20-form/50-integration.md +11 -0
  403. package/docs/concepts/03-client/20-form/examples/postModeration/ThePage.vue +32 -0
  404. package/docs/concepts/03-client/20-form/examples/postModeration/usePostModeration.ts +80 -0
  405. package/docs/concepts/05-type-driven-design/01-architecture/10-boundaries.md +23 -20
  406. package/docs/concepts/05-type-driven-design/01-architecture/index.md +1 -1
  407. package/docs/concepts/05-type-driven-design/02-domains/10-entities.md +29 -37
  408. package/docs/concepts/05-type-driven-design/02-domains/20-aggregates.md +42 -26
  409. package/docs/concepts/05-type-driven-design/02-domains/30-repositories.md +20 -26
  410. package/docs/concepts/05-type-driven-design/02-domains/40-refinements.md +30 -0
  411. package/docs/concepts/05-type-driven-design/02-domains/index.md +1 -1
  412. package/docs/concepts/05-type-driven-design/03-applications/10-use-case.md +33 -40
  413. package/docs/concepts/05-type-driven-design/03-applications/20-ports.md +49 -0
  414. package/docs/concepts/05-type-driven-design/03-applications/index.md +1 -1
  415. package/docs/concepts/05-type-driven-design/04-infrastructure/10-implementation.md +27 -36
  416. package/docs/concepts/05-type-driven-design/04-infrastructure/index.md +1 -1
  417. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/index.ts +1 -0
  418. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/waitingListEntry.ts +17 -0
  419. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientGiveBackBook.ts +30 -12
  420. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientRentBook.ts +9 -8
  421. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/createBook.ts +7 -7
  422. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/index.ts +2 -0
  423. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/withdrawBook.ts +32 -0
  424. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientGiveBackBook.ts +72 -13
  425. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientRentBook.ts +37 -11
  426. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/createBook.ts +29 -17
  427. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/index.ts +1 -0
  428. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/withdrawBook.ts +37 -0
  429. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/create.ts +4 -5
  430. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/index.ts +2 -0
  431. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/rental.ts +9 -9
  432. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/reserve.ts +37 -0
  433. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/returnBook.ts +11 -9
  434. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/withdraw.ts +21 -0
  435. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/index.ts +42 -11
  436. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/giveBackBook.ts +11 -9
  437. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/rentBook.ts +10 -10
  438. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/index.ts +6 -29
  439. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/index.ts +1 -0
  440. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/cancel.ts +26 -0
  441. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/create.ts +33 -0
  442. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/index.ts +3 -0
  443. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/prepare.ts +23 -0
  444. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/index.ts +79 -0
  445. package/docs/concepts/05-type-driven-design/fixtures/business/domains/index.ts +1 -0
  446. package/docs/concepts/05-type-driven-design/fixtures/business/domains/refinements/index.ts +1 -0
  447. package/docs/concepts/05-type-driven-design/fixtures/business/domains/refinements/refineLinkBetweenClientAndBorrowedBook.ts +34 -0
  448. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/book.ts +1 -1
  449. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/index.ts +1 -0
  450. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/waitingListEntry.ts +19 -0
  451. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/command/clientRentBook.ts +3 -3
  452. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/bookExist.ts +2 -2
  453. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/clientExist.ts +2 -2
  454. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientGiveBackBook.ts +23 -14
  455. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientRentBook.ts +7 -12
  456. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/book.ts +1 -1
  457. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/index.ts +1 -0
  458. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/waitingListEntry.ts +17 -0
  459. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/useCases/index.ts +2 -1
  460. package/docs/concepts/05-type-driven-design/index.md +2 -2
  461. package/docs/concepts.llms.md +71 -25
  462. package/instructions/coding-conventions.md +2 -2
  463. package/package.json +17 -14
  464. package/skills/http-client/SKILL.md +1 -1
  465. package/skills/http-client/references/configuration.md +3 -1
  466. package/skills/http-client/references/examples/client-expectations.ts +11 -10
  467. package/skills/http-client/references/examples/client-streams.ts +2 -2
  468. package/skills/http-client/references/examples/external-client.ts +2 -2
  469. package/skills/http-client/references/responses.md +1 -1
  470. package/skills/http-server/SKILL.md +4 -9
  471. package/skills/http-server/references/examples/authentication.ts +2 -2
  472. package/skills/http-server/references/examples/inferred-client.ts +54 -0
  473. package/skills/http-server/references/examples/minimal-route.ts +2 -3
  474. package/skills/http-server/references/examples/protected-route.ts +4 -6
  475. package/skills/http-server/references/examples/rename-user-route.ts +4 -6
  476. package/skills/http-server/references/examples/user-checker.ts +2 -2
  477. package/skills/http-server/references/examples/user-route.ts +12 -5
  478. package/skills/http-server/references/initialization.md +1 -1
  479. package/skills/http-server/references/reusable-flows.md +3 -3
  480. package/skills/http-server/references/routes-and-floor.md +11 -3
  481. package/dist/bin/install/index.d.ts +0 -2
  482. package/docs/concepts/02-server/20-http/50-codegen.ts +0 -29
  483. package/skills/http-server/references/code-generation.md +0 -31
  484. package/skills/http-server/references/examples/generate-sdk.ts +0 -36
  485. /package/dist/bin/{install → installSkill}/skill.d.ts +0 -0
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @title DPattern.matchWithFactOtherwise
3
+ *
4
+ * Router les facts choisis et traiter les autres noms avec un callback recevant le fact restant.
5
+ */
6
+ import * as DPattern from "@duplojs/lang/pattern";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+ import type * as DModeling from "@duplojs/lang/modeling";
9
+
10
+ interface Created extends DModeling.Fact<"Created", { title: string }> {}
11
+ interface Deleted extends DModeling.Fact<"Deleted", { reason: string }> {}
12
+ interface Renamed extends DModeling.Fact<"Renamed", { title: string }> {}
13
+ declare const event: Created | Deleted | Renamed;
14
+
15
+ // Appel direct : traiter certains noms ; le repli reçoit uniquement le reste.
16
+ const result = DPattern.matchWithFactOtherwise(
17
+ event,
18
+ {
19
+ Created: (value, payload) => {
20
+ type _CheckValue = DCommon.ExpectType<typeof value, Created, "strict">;
21
+ return payload.title;
22
+ },
23
+ },
24
+ (value) => {
25
+ type _CheckRemaining = DCommon.ExpectType<typeof value, Deleted | Renamed, "strict">;
26
+ return value;
27
+ },
28
+ );
29
+ // Created produit son résultat ; les autres variantes fournissent leur valeur complète.
30
+ type _CheckResult = DCommon.ExpectType<typeof result, string | Deleted | Renamed, "strict">;
31
+
32
+ // Appel curifié dans un pipe : le repli conserve le même affinement.
33
+ const piped = DCommon.pipe(
34
+ event,
35
+ DPattern.matchWithFactOtherwise(
36
+ {
37
+ Created: (value, payload) => {
38
+ type _CheckValue = DCommon.ExpectType<typeof value, Created, "strict">;
39
+ return payload.title;
40
+ },
41
+ },
42
+ (value) => {
43
+ type _CheckRemaining = DCommon.ExpectType<typeof value, Deleted | Renamed, "strict">;
44
+ return value;
45
+ },
46
+ ),
47
+ );
48
+ // Created produit son résultat ; les autres variantes fournissent leur valeur complète.
49
+ type _CheckPiped = DCommon.ExpectType<typeof piped, string | Deleted | Renamed, "strict">;
@@ -0,0 +1,33 @@
1
+ /**
2
+ * @title DPattern.matchWithNumber
3
+ *
4
+ * Associer chaque nombre littéral possible à un callback spécialisé pour cette valeur.
5
+ */
6
+ import * as DPattern from "@duplojs/lang/pattern";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ declare const responseCode: 200 | 404;
10
+
11
+ const result = DPattern.matchWithNumber(responseCode, {
12
+ 200: (code) => {
13
+ type _CheckValue = DCommon.ExpectType<typeof code, 200, "strict">;
14
+ return `success ${code}`;
15
+ },
16
+ 404: (code) => {
17
+ type _CheckValue = DCommon.ExpectType<typeof code, 404, "strict">;
18
+ return `missing ${code}`;
19
+ },
20
+ });
21
+ // Le handler sélectionné retourne le libellé de réussite ou d’absence.
22
+ type _CheckResult = DCommon.ExpectType<typeof result, string, "strict">;
23
+
24
+ // Appel curifié : toutes les valeurs de l’union sont couvertes dans le pipe.
25
+ const piped = DCommon.pipe(
26
+ responseCode,
27
+ DPattern.matchWithNumber({
28
+ 200: () => true,
29
+ 404: () => false,
30
+ }),
31
+ );
32
+ // La sortie vaut true pour 200, false pour 404.
33
+ type _CheckPiped = DCommon.ExpectType<typeof piped, boolean, "strict">;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @title DPattern.matchWithNumberOtherwise
3
+ *
4
+ * Traiter certains nombres littéraux et recevoir les autres valeurs dans un fallback.
5
+ */
6
+ import * as DPattern from "@duplojs/lang/pattern";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ declare const responseCode: 200 | 404 | 503;
10
+
11
+ const label = DPattern.matchWithNumberOtherwise(
12
+ responseCode,
13
+ {
14
+ 200: () => "success",
15
+ 404: () => "missing",
16
+ },
17
+ (code) => {
18
+ type _CheckRemaining = DCommon.ExpectType<typeof code, 503, "strict">;
19
+ return `retry ${code}`;
20
+ },
21
+ );
22
+ // Les codes 200 et 404 ont leurs libellés ; 503 fournit « retry 503 » au fallback.
23
+ type _CheckLabel = DCommon.ExpectType<typeof label, string, "strict">;
24
+
25
+ // Appel curifié : seul 200 est traité ; le repli conserve 404 | 503.
26
+ const piped = DCommon.pipe(
27
+ responseCode,
28
+ DPattern.matchWithNumberOtherwise(
29
+ { 200: () => "success" },
30
+ (code) => {
31
+ type _CheckRemaining = DCommon.ExpectType<typeof code, 404 | 503, "strict">;
32
+ return code;
33
+ },
34
+ ),
35
+ );
36
+ // La sortie vaut "success" pour 200, sinon le code d’origine.
37
+ type _CheckPiped = DCommon.ExpectType<typeof piped, string | 404 | 503, "strict">;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @title DPattern.matchWithString
3
+ *
4
+ * Associer chaque chaîne littérale possible à un callback dont le paramètre est cette valeur exacte.
5
+ */
6
+ import * as DPattern from "@duplojs/lang/pattern";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+ import * as DString from "@duplojs/lang/string";
9
+
10
+ declare const status: "queued" | "sent";
11
+
12
+ // Tous les littéraux de l’union ont leur branche ; chaque callback reçoit sa clé comme type.
13
+ const message = DPattern.matchWithString(status, {
14
+ queued: (value) => {
15
+ type _CheckValue = DCommon.ExpectType<typeof value, "queued", "strict">;
16
+ return DString.prepend(value, "Waiting: ");
17
+ },
18
+ sent: (value) => {
19
+ type _CheckValue = DCommon.ExpectType<typeof value, "sent", "strict">;
20
+ return DString.prepend(value, "Delivered: ");
21
+ },
22
+ });
23
+ // La sortie vaut « Waiting: queued » ou « Delivered: sent » selon le statut.
24
+ type _CheckMessage = DCommon.ExpectType<typeof message, "Waiting: queued" | "Delivered: sent", "strict">;
25
+
26
+ const piped = DCommon.pipe(
27
+ status,
28
+ DPattern.matchWithString({
29
+ queued: () => 0,
30
+ sent: () => 1,
31
+ }),
32
+ );
33
+ // Le code de sortie vaut 0 pour queued et 1 pour sent.
34
+ type _CheckPiped = DCommon.ExpectType<typeof piped, number, "strict">;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @title DPattern.matchWithStringOtherwise
3
+ *
4
+ * Traiter certains littéraux de chaîne et transmettre au fallback l’union non couverte.
5
+ */
6
+ import * as DPattern from "@duplojs/lang/pattern";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+ import * as DString from "@duplojs/lang/string";
9
+
10
+ declare const status: "queued" | "sent" | "cancelled";
11
+
12
+ const description = DPattern.matchWithStringOtherwise(
13
+ status,
14
+ {
15
+ queued: () => "Waiting",
16
+ sent: () => "Delivered",
17
+ },
18
+ (value) => {
19
+ type _CheckRemaining = DCommon.ExpectType<typeof value, "cancelled", "strict">;
20
+ return DString.prepend(value, "Stopped: ");
21
+ },
22
+ );
23
+ // Le statut sélectionné fournit son libellé ; cancelled donne « Stopped: cancelled ».
24
+ type _CheckDescription = DCommon.ExpectType<typeof description, string, "strict">;
25
+
26
+ // La forme curifiée fixe les handlers avant de recevoir le statut dans un pipe.
27
+ const piped = DCommon.pipe(
28
+ status,
29
+ DPattern.matchWithStringOtherwise(
30
+ { sent: () => 200 },
31
+ DString.toUpperCase,
32
+ ),
33
+ );
34
+ // Sent retourne un code ; queued et cancelled sont convertis en majuscules.
35
+ type _CheckPiped = DCommon.ExpectType<typeof piped, number | "QUEUED" | "CANCELLED", "strict">;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @title DPattern.matchWithTaggedObject
3
+ *
4
+ * Router une union d’objets marqués vers un callback par valeur de tag.
5
+ */
6
+ import * as DPattern from "@duplojs/lang/pattern";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+ import type * as DModeling from "@duplojs/lang/modeling";
9
+
10
+ interface Success extends DModeling.ObjectTag<"success"> { value: number }
11
+ interface Failure extends DModeling.ObjectTag<"failure"> { reason: string }
12
+ declare const outcome: Success | Failure;
13
+
14
+ // Appel direct : chaque nom de l’union exige une branche, sans clé étrangère.
15
+ const result = DPattern.matchWithTaggedObject(outcome, {
16
+ success: (value) => {
17
+ type _CheckValue = DCommon.ExpectType<typeof value, Success, "strict">;
18
+ return value.value;
19
+ },
20
+ failure: (value) => {
21
+ type _CheckValue = DCommon.ExpectType<typeof value, Failure, "strict">;
22
+ return value.reason;
23
+ },
24
+ });
25
+ // La sortie est le nombre de réussite ou la raison du refus.
26
+ type _CheckResult = DCommon.ExpectType<typeof result, number | string, "strict">;
27
+
28
+ // Appel curifié : configurer les branches directement dans le pipe.
29
+ const piped = DCommon.pipe(
30
+ outcome,
31
+ DPattern.matchWithTaggedObject({
32
+ success: (value) => {
33
+ type _CheckValue = DCommon.ExpectType<typeof value, Success, "strict">;
34
+ return value.value;
35
+ },
36
+ failure: (value) => {
37
+ type _CheckValue = DCommon.ExpectType<typeof value, Failure, "strict">;
38
+ return value.reason;
39
+ },
40
+ }),
41
+ );
42
+ // Même sélection : le nombre de réussite ou la raison du refus.
43
+ type _CheckPiped = DCommon.ExpectType<typeof piped, number | string, "strict">;
@@ -0,0 +1,49 @@
1
+ /**
2
+ * @title DPattern.matchWithTaggedObjectOtherwise
3
+ *
4
+ * Router les tags explicitement traités et transmettre les variantes restantes au fallback.
5
+ */
6
+ import * as DPattern from "@duplojs/lang/pattern";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+ import type * as DModeling from "@duplojs/lang/modeling";
9
+
10
+ interface Success extends DModeling.ObjectTag<"success"> { value: number }
11
+ interface Failure extends DModeling.ObjectTag<"failure"> { reason: string }
12
+ interface Pending extends DModeling.ObjectTag<"pending"> { task: string }
13
+ declare const outcome: Success | Failure | Pending;
14
+
15
+ // Appel direct : traiter certains noms ; le repli reçoit uniquement le reste.
16
+ const result = DPattern.matchWithTaggedObjectOtherwise(
17
+ outcome,
18
+ {
19
+ success: (value) => {
20
+ type _CheckValue = DCommon.ExpectType<typeof value, Success, "strict">;
21
+ return value.value;
22
+ },
23
+ },
24
+ (value) => {
25
+ type _CheckRemaining = DCommon.ExpectType<typeof value, Failure | Pending, "strict">;
26
+ return value;
27
+ },
28
+ );
29
+ // success produit son résultat ; les autres variantes fournissent leur objet complet.
30
+ type _CheckResult = DCommon.ExpectType<typeof result, number | Failure | Pending, "strict">;
31
+
32
+ // Appel curifié dans un pipe : le repli conserve le même affinement.
33
+ const piped = DCommon.pipe(
34
+ outcome,
35
+ DPattern.matchWithTaggedObjectOtherwise(
36
+ {
37
+ success: (value) => {
38
+ type _CheckValue = DCommon.ExpectType<typeof value, Success, "strict">;
39
+ return value.value;
40
+ },
41
+ },
42
+ (value) => {
43
+ type _CheckRemaining = DCommon.ExpectType<typeof value, Failure | Pending, "strict">;
44
+ return value;
45
+ },
46
+ ),
47
+ );
48
+ // success produit son résultat ; les autres variantes fournissent leur objet complet.
49
+ type _CheckPiped = DCommon.ExpectType<typeof piped, number | Failure | Pending, "strict">;
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @title DPattern.otherwise
3
+ *
4
+ * Traiter la valeur non reconnue restante ou déballer un résultat déjà traité.
5
+ */
6
+ import * as DPattern from "@duplojs/lang/pattern";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ type Input = {
10
+ kind: "ready";
11
+ value: number;
12
+ } | {
13
+ kind: "pending";
14
+ task: string;
15
+ };
16
+ declare const input: Input;
17
+ const output = DCommon.pipe(
18
+ input,
19
+ DPattern.when(
20
+ DPattern.isMatch({ kind: "ready" }),
21
+ (value) => value.value,
22
+ ),
23
+ DPattern.otherwise(
24
+ (remaining) => remaining.task,
25
+ ),
26
+ );
27
+ // La branche déjà traitée fournit un nombre ; pending fournit son identifiant de tâche.
28
+ type _CheckOutput = DCommon.ExpectType<typeof output, number | string, "strict">;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @title DPattern.union
3
+ *
4
+ * Combiner plusieurs motifs en un seul motif correspondant à l’un d’eux.
5
+ */
6
+ import * as DPattern from "@duplojs/lang/pattern";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+ import * as DString from "@duplojs/lang/string";
9
+
10
+ type Input = {
11
+ kind: "draft";
12
+ id: number;
13
+ } | {
14
+ kind: "published";
15
+ id: number;
16
+ } | {
17
+ kind: "archived";
18
+ id: number;
19
+ };
20
+ declare const input: Input;
21
+ const result = DCommon.pipe(
22
+ input,
23
+ DPattern.when(
24
+ DPattern.isMatch(DPattern.union({ kind: "draft" }, { kind: "published" })),
25
+ (value) => value.id,
26
+ ),
27
+ DPattern.otherwise(
28
+ (value) => value.id,
29
+ ),
30
+ );
31
+ // Draft, published et archived fournissent leur id numérique.
32
+ type _CheckResult = DCommon.ExpectType<typeof result, number, "strict">;
33
+
34
+ // Motifs de valeurs : union exprime un OU, y compris avec un predicate fourni.
35
+ declare const status: "ready" | "draft" | "archived";
36
+ const label = DCommon.pipe(
37
+ status,
38
+ DPattern.match(
39
+ DPattern.union("ready", DString.startsWith("draft")),
40
+ DString.toUpperCase,
41
+ ),
42
+ DPattern.otherwise(
43
+ (value) => value,
44
+ ),
45
+ );
46
+ // Ready et draft donnent leur majuscule ; archived reste inchangé.
47
+ type _CheckLabel = DCommon.ExpectType<typeof label, "READY" | "DRAFT" | "archived", "strict">;
@@ -0,0 +1,46 @@
1
+ /**
2
+ * @title DPattern.when
3
+ *
4
+ * Exécuter un traitement lorsque le predicate correspond, en laissant la branche sinon inchangée.
5
+ */
6
+ import * as DPattern from "@duplojs/lang/pattern";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+ import * as DString from "@duplojs/lang/string";
9
+ import * as DNumber from "@duplojs/lang/number";
10
+
11
+ type Input = {
12
+ kind: "number";
13
+ value: number;
14
+ } | {
15
+ kind: "text";
16
+ value: string;
17
+ };
18
+ // Les PatternResult issus d’une étape précédente sont transmis sans nouveau test.
19
+ declare const input: Input;
20
+ const result = DCommon.pipe(
21
+ input,
22
+ DPattern.when(
23
+ DPattern.isMatch({ kind: "number" }),
24
+ (value) => DNumber.sum([value.value, 1]),
25
+ ),
26
+ DPattern.otherwise(
27
+ (value) => value.value,
28
+ ),
29
+ );
30
+ // La branche number fournit son résultat ; otherwise récupère la valeur et traite le cas text.
31
+ type _CheckResult = DCommon.ExpectType<typeof result, number | string, "strict">;
32
+
33
+ // Predicate booléen : le test RegExp ne permet pas d’éliminer une variante du type.
34
+ declare const text: string;
35
+ const conditional = DCommon.pipe(
36
+ text,
37
+ DPattern.when(
38
+ DString.test(/^ready/),
39
+ DString.toUpperCase,
40
+ ),
41
+ DPattern.otherwise(
42
+ DString.toUpperCase,
43
+ ),
44
+ );
45
+ // Les textes commençant par ready sont mis en majuscules ; les autres restent inchangés.
46
+ type _CheckConditional = DCommon.ExpectType<typeof conditional, Uppercase<string>, "strict">;
@@ -0,0 +1,123 @@
1
+ /**
2
+ * @title DPattern.whenNot
3
+ *
4
+ * Exécuter un traitement pour les valeurs refusées par le predicate et laisser les autres non traitées.
5
+ */
6
+ import * as DPattern from "@duplojs/lang/pattern";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+ import * as DString from "@duplojs/lang/string";
9
+ import * as DNumber from "@duplojs/lang/number";
10
+
11
+ type Input = {
12
+ kind: "known";
13
+ id: number;
14
+ } | {
15
+ kind: "other";
16
+ value: string;
17
+ };
18
+ declare const input: Input;
19
+
20
+ // Appel classique : traiter la branche other et conserver known pour la suite.
21
+ const selected = DPattern.whenNot(input, DPattern.isMatch({ kind: "known" }), (value) => {
22
+ type _CheckValue = DCommon.ExpectType<typeof value, {
23
+ kind: "other";
24
+ value: string;
25
+ }, "strict">;
26
+
27
+ return DString.toUpperCase(value.value);
28
+ });
29
+ // Other produit un texte enveloppé ; known reste une valeur non traitée.
30
+ type _CheckSelected = DCommon.ExpectType<
31
+ typeof selected,
32
+ {
33
+ kind: "known";
34
+ id: number;
35
+ } | DPattern.PatternResult<Uppercase<string>>,
36
+ "strict"
37
+ >;
38
+
39
+ // Appel curifié : préserver les résultats précédents, puis terminer les cas restants.
40
+ declare const partiallyHandled: Input | DPattern.PatternResult<Uppercase<string>>;
41
+ const piped = DCommon.pipe(
42
+ partiallyHandled,
43
+ DPattern.whenNot(
44
+ DPattern.isMatch({ kind: "known" }),
45
+ (value) => DString.toUpperCase(value.value),
46
+ ),
47
+ DPattern.otherwise(
48
+ (value) => value.id,
49
+ ),
50
+ );
51
+ // Les résultats précédents sont transmis ; other est normalisé et known fournit son id.
52
+ // otherwise déballe le résultat final : aucun PatternResult ne subsiste dans la sortie.
53
+ type _CheckPiped = DCommon.ExpectType<typeof piped, Uppercase<string> | number, "strict">;
54
+
55
+ // Predicates imbriqués : étiqueter les états tout en conservant leurs littéraux.
56
+ declare const state: "ready" | "queued" | "blocked";
57
+ const pendingState = DPattern.whenNot(
58
+ state,
59
+ DCommon.or([DCommon.equal("ready"), DCommon.equal("queued")]),
60
+ DString.prepend("Attention : "),
61
+ );
62
+ type _CheckPendingState = DCommon.ExpectType<
63
+ typeof pendingState,
64
+ "ready" | "queued" | DPattern.PatternResult<"Attention : blocked">,
65
+ "strict"
66
+ >;
67
+
68
+ const labeledState = DCommon.pipe(
69
+ pendingState,
70
+ DPattern.when(
71
+ DCommon.equal("ready"),
72
+ DString.toUpperCase,
73
+ ),
74
+ DPattern.otherwise(
75
+ DString.prepend("En attente : "),
76
+ ),
77
+ );
78
+ // Une branche déjà enveloppée n'est pas traitée une seconde fois par les étapes suivantes.
79
+ type _CheckLabeledState = DCommon.ExpectType<
80
+ typeof labeledState,
81
+ "Attention : blocked" | "READY" | "En attente : queued",
82
+ "strict"
83
+ >;
84
+
85
+ // Test booléen : ajouter les frais de livraison seulement sous un seuil dynamique.
86
+ declare const orderTotal: number;
87
+ declare const freeShippingThreshold: number;
88
+ declare const shippingFee: number;
89
+ const shippingApplied = DPattern.whenNot(
90
+ orderTotal,
91
+ DNumber.greaterThanOrEqual(freeShippingThreshold),
92
+ (value) => {
93
+ type _CheckValue = DCommon.ExpectType<typeof value, number, "strict">;
94
+
95
+ return DNumber.sum([value, shippingFee]);
96
+ },
97
+ );
98
+ // Les petites commandes sont enveloppées après ajout des frais ; les autres restent brutes.
99
+ type _CheckShippingApplied = DCommon.ExpectType<
100
+ typeof shippingApplied,
101
+ number | DPattern.PatternResult<number>,
102
+ "strict"
103
+ >;
104
+
105
+ const pricedTotal = DCommon.pipe(
106
+ shippingApplied,
107
+ DPattern.otherwise(
108
+ DCommon.forward,
109
+ ),
110
+ );
111
+ // otherwise conserve le total des commandes sans frais ou déballe le total avec frais.
112
+ // Le test booléen laisse number parmi les cas restants : exhaustive ne conviendrait pas.
113
+ type _CheckPricedTotal = DCommon.ExpectType<typeof pricedTotal, number, "strict">;
114
+
115
+ // Contrainte préservée : signaler les découverts et garder les soldes positifs ou nuls.
116
+ declare const balance: number;
117
+ const checkedBalance = DPattern.whenNot(balance, DNumber.isPositive, DCommon.justReturn("à découvert"));
118
+ // Un solde négatif donne un PatternResult ; zéro et les soldes positifs restent des nombres.
119
+ type _CheckCheckedBalance = DCommon.ExpectType<
120
+ typeof checkedBalance,
121
+ (number & DNumber.Positive) | DPattern.PatternResult<"à découvert">,
122
+ "strict"
123
+ >;
@@ -0,0 +1,80 @@
1
+ ## DPattern
2
+
3
+ Sélectionner et traiter les variantes d’une union par identité, valeur littérale, motif structurel ou predicate, avec couverture exhaustive ou branche de repli.
4
+
5
+ ### [DPattern.exhaustive](10-exhaustive.ts)
6
+
7
+ Terminer un traitement exhaustif en extrayant les valeurs des PatternResult.
8
+
9
+ ### [DPattern.isMatch](10-isMatch.ts)
10
+
11
+ Vérifier un motif sur une valeur et affiner le type de la partie correspondante.
12
+
13
+ ### [DPattern.match](10-match.ts)
14
+
15
+ Traiter une valeur selon un motif et conserver les cas qui ne correspondent pas.
16
+
17
+ ### [DPattern.matchWithEntity](10-matchWithEntity.ts)
18
+
19
+ Router une union d’entités DuploJS vers un callback pour chaque nom d’entité.
20
+
21
+ ### [DPattern.matchWithEntityOtherwise](10-matchWithEntityOtherwise.ts)
22
+
23
+ Router les entités sélectionnées et conserver dans le type du fallback les entités restantes.
24
+
25
+ ### [DPattern.matchWithError](10-matchWithError.ts)
26
+
27
+ Traiter chaque variante d’une union d’erreurs DuploJS selon son identifiant typé.
28
+
29
+ ### [DPattern.matchWithErrorOtherwise](10-matchWithErrorOtherwise.ts)
30
+
31
+ Traiter certains identifiants d’erreur et transmettre au fallback l’union d’erreurs non couverte.
32
+
33
+ ### [DPattern.matchWithFact](10-matchWithFact.ts)
34
+
35
+ Router des facts par nom et exposer leur valeur ainsi que leur payload typé.
36
+
37
+ ### [DPattern.matchWithFactOtherwise](10-matchWithFactOtherwise.ts)
38
+
39
+ Router les facts choisis et traiter les autres noms avec un callback recevant le fact restant.
40
+
41
+ ### [DPattern.matchWithNumber](10-matchWithNumber.ts)
42
+
43
+ Associer chaque nombre littéral possible à un callback spécialisé pour cette valeur.
44
+
45
+ ### [DPattern.matchWithNumberOtherwise](10-matchWithNumberOtherwise.ts)
46
+
47
+ Traiter certains nombres littéraux et recevoir les autres valeurs dans un fallback.
48
+
49
+ ### [DPattern.matchWithString](10-matchWithString.ts)
50
+
51
+ Associer chaque chaîne littérale possible à un callback dont le paramètre est cette valeur exacte.
52
+
53
+ ### [DPattern.matchWithStringOtherwise](10-matchWithStringOtherwise.ts)
54
+
55
+ Traiter certains littéraux de chaîne et transmettre au fallback l’union non couverte.
56
+
57
+ ### [DPattern.matchWithTaggedObject](10-matchWithTaggedObject.ts)
58
+
59
+ Router une union d’objets marqués vers un callback par valeur de tag.
60
+
61
+ ### [DPattern.matchWithTaggedObjectOtherwise](10-matchWithTaggedObjectOtherwise.ts)
62
+
63
+ Router les tags explicitement traités et transmettre les variantes restantes au fallback.
64
+
65
+ ### [DPattern.otherwise](10-otherwise.ts)
66
+
67
+ Traiter la valeur non reconnue restante ou déballer un résultat déjà traité.
68
+
69
+ ### [DPattern.union](10-union.ts)
70
+
71
+ Combiner plusieurs motifs en un seul motif correspondant à l’un d’eux.
72
+
73
+ ### [DPattern.when](10-when.ts)
74
+
75
+ Exécuter un traitement lorsque le predicate correspond, en laissant la branche sinon inchangée.
76
+
77
+ ### [DPattern.whenNot](10-whenNot.ts)
78
+
79
+ Exécuter un traitement pour les valeurs refusées par le predicate et laisser les autres non traitées.
80
+
@@ -0,0 +1,3 @@
1
+ ## DPattern
2
+
3
+ Sélectionner et traiter les variantes d’une union par identité, valeur littérale, motif structurel ou predicate, avec couverture exhaustive ou branche de repli.
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @title DPrinter.bold
3
+ *
4
+ * Encadrer une chaîne par les codes ANSI de mise en gras.
5
+ */
6
+ import * as DPrinter from "@duplojs/lang/printer";
7
+ import type * as DCommon from "@duplojs/lang/common";
8
+
9
+ const emphasized = DPrinter.bold("Attention");
10
+
11
+ // La valeur obtenue est "\x1B[1mAttention\x1B[0m".
12
+ type _CheckEmphasized = DCommon.ExpectType<typeof emphasized, string, "strict">;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @title DPrinter.colorized
3
+ *
4
+ * Encadrer une chaîne par les codes ANSI d’une couleur sélectionnée.
5
+ */
6
+ import * as DPrinter from "@duplojs/lang/printer";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ // Appel direct : la valeur obtenue est "\x1B[32mEnregistré\x1B[0m".
10
+ const saved = DPrinter.colorized("Enregistré", "green");
11
+ type _CheckSaved = DCommon.ExpectType<typeof saved, string, "strict">;
12
+
13
+ // Appel curifié dans un pipe : la valeur obtenue est "\x1B[34mEn attente\x1B[0m".
14
+ const status = DCommon.pipe(
15
+ "En attente",
16
+ DPrinter.colorized("blue"),
17
+ );
18
+ type _CheckStatus = DCommon.ExpectType<typeof status, string, "strict">;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @title DPrinter.colorizedBold
3
+ *
4
+ * Appliquer une couleur ANSI et le style gras à une chaîne.
5
+ */
6
+ import * as DPrinter from "@duplojs/lang/printer";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ // Appel direct : la valeur obtenue est "\x1B[1m\x1B[33mÀ vérifier\x1B[0m\x1B[0m".
10
+ const warning = DPrinter.colorizedBold("À vérifier", "yellow");
11
+ type _CheckWarning = DCommon.ExpectType<typeof warning, string, "strict">;
12
+
13
+ // Appel curifié dans un pipe : la valeur obtenue est "\x1B[1m\x1B[36mRésumé\x1B[0m\x1B[0m".
14
+ const heading = DCommon.pipe(
15
+ "Résumé",
16
+ DPrinter.colorizedBold("cyan"),
17
+ );
18
+ type _CheckHeading = DCommon.ExpectType<typeof heading, string, "strict">;