@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,63 @@
1
+ /**
2
+ * @title DObject.deepDiscriminate
3
+ *
4
+ * Discriminer une union d’objets à partir d’une propriété imbriquée.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ type Event =
10
+ | {
11
+ profile: {
12
+ role: "admin";
13
+ name: string;
14
+ };
15
+ }
16
+ | {
17
+ profile: {
18
+ role: "member";
19
+ name: string;
20
+ };
21
+ };
22
+ interface AdminEvent {
23
+ profile: {
24
+ role: "admin";
25
+ name: string;
26
+ };
27
+ }
28
+
29
+ interface MemberEvent {
30
+ profile: {
31
+ role: "member";
32
+ name: string;
33
+ };
34
+ }
35
+
36
+ declare const event: Event;
37
+
38
+ if (DObject.deepDiscriminate(event, "profile.role", "admin")) {
39
+ type _CheckIfEvent = DCommon.ExpectType<typeof event, AdminEvent, "strict">;
40
+ const name = DObject.getDeepProperty(event, "profile.name");
41
+ type _CheckIfName = DCommon.ExpectType<typeof name, string, "strict">;
42
+ }
43
+
44
+ const result = DObject.deepDiscriminate(event, "profile.role", "admin");
45
+
46
+ // Le predicate retourne true uniquement pour l’événement administrateur.
47
+ type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
48
+
49
+ // La forme curifiée est passée directement comme predicate à DCommon.when.
50
+ const name = DCommon.pipe(
51
+ event,
52
+ DCommon.when(
53
+ DObject.deepDiscriminate("profile.role", "admin"),
54
+ (adminEvent) => {
55
+ type _CheckPredicatedInput = DCommon.ExpectType<typeof adminEvent, AdminEvent, "strict">;
56
+
57
+ return DObject.getDeepProperty(adminEvent, "profile.name");
58
+ },
59
+ ),
60
+ );
61
+
62
+ // Le nom est lu pour l’administrateur ; sinon l’événement initial est conservé.
63
+ type _CheckName = DCommon.ExpectType<typeof name, string | MemberEvent, "strict">;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * @title DObject.deepOverride
3
+ *
4
+ * Remplacer récursivement les valeurs définies d’un objet sans modifier la source.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ const source = {
10
+ profile: {
11
+ name: "Duplo",
12
+ active: false,
13
+ },
14
+ };
15
+
16
+ const result = DObject.deepOverride(source, {
17
+ profile: {
18
+ active: true,
19
+ },
20
+ });
21
+
22
+ // La valeur obtenue conserve la forme de la source avec active à true.
23
+ type _CheckResult = DCommon.ExpectType<typeof result, typeof source, "strict">;
24
+
25
+ const piped = DCommon.pipe(
26
+ source,
27
+ DObject.deepOverride({
28
+ profile: {
29
+ name: "AgentKit",
30
+ },
31
+ }),
32
+ );
33
+
34
+ // La forme curifiée effectue le même remplacement récursif dans un pipe.
35
+ type _CheckPiped = DCommon.ExpectType<typeof piped, typeof source, "strict">;
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @title DObject.discriminate
3
+ *
4
+ * Discriminer une union d’objets à partir d’une propriété.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ type Event =
10
+ | {
11
+ type: "created";
12
+ id: string;
13
+ }
14
+ | {
15
+ type: "deleted";
16
+ id: number;
17
+ };
18
+ interface CreatedEvent {
19
+ type: "created";
20
+ id: string;
21
+ }
22
+
23
+ interface DeletedEvent {
24
+ type: "deleted";
25
+ id: number;
26
+ }
27
+
28
+ declare const event: Event;
29
+
30
+ if (DObject.discriminate(event, "type", "created")) {
31
+ type _CheckIfEvent = DCommon.ExpectType<typeof event, CreatedEvent, "strict">;
32
+ const id = event.id;
33
+ type _CheckIfId = DCommon.ExpectType<typeof id, string, "strict">;
34
+ }
35
+
36
+ const result = DObject.discriminate(event, "type", "created");
37
+
38
+ // Le predicate retourne true pour l’événement created.
39
+ type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
40
+
41
+ // La forme curifiée est passée directement comme predicate à DCommon.when.
42
+ const id = DCommon.pipe(
43
+ event,
44
+ DCommon.when(
45
+ DObject.discriminate("type", "created"),
46
+ (createdEvent) => {
47
+ type _CheckPredicatedInput = DCommon.ExpectType<typeof createdEvent, CreatedEvent, "strict">;
48
+
49
+ return createdEvent.id;
50
+ },
51
+ ),
52
+ );
53
+
54
+ // L’identifiant est une chaîne pour created ; sinon l’événement initial est conservé.
55
+ type _CheckId = DCommon.ExpectType<typeof id, string | DeletedEvent, "strict">;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @title DObject.discriminateEntryKey
3
+ *
4
+ * Tester ou affiner une entrée selon sa clé.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ type Entry =
10
+ | readonly ["name", DCommon.AnyValue]
11
+ | readonly ["version", DCommon.AnyValue];
12
+
13
+ declare const entry: Entry;
14
+
15
+ if (DObject.discriminateEntryKey(entry, DCommon.equal("name"))) {
16
+ const [key] = entry;
17
+ type _CheckIfKey = DCommon.ExpectType<typeof key, "name", "strict">;
18
+ }
19
+
20
+ const result = DObject.discriminateEntryKey(entry, DCommon.equal("name"));
21
+
22
+ // La valeur obtenue est true pour l’entrée dont la clé vaut name.
23
+ type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
24
+
25
+ // La forme curifiée est passée directement comme predicate à DCommon.when.
26
+ const key = DCommon.pipe(
27
+ entry,
28
+ DCommon.when(
29
+ DObject.discriminateEntryKey(DCommon.equal("name")),
30
+ (narrowedEntry) => {
31
+ type _CheckPredicatedKey = DCommon.ExpectType<typeof narrowedEntry[0], "name", "strict">;
32
+
33
+ return narrowedEntry[0];
34
+ },
35
+ ),
36
+ );
37
+
38
+ // La clé name est extraite lorsque le predicate réussit ; sinon l’entrée version est conservée.
39
+ type _CheckPreserved = DCommon.ExpectType<
40
+ typeof key,
41
+ "name" | readonly ["version", DCommon.AnyValue],
42
+ "strict"
43
+ >;
@@ -0,0 +1,44 @@
1
+ /**
2
+ * @title DObject.discriminateEntryValue
3
+ *
4
+ * Tester ou affiner une entrée selon sa valeur.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ type Entry =
10
+ | readonly ["name", string]
11
+ | readonly ["version", number];
12
+
13
+ declare const entry: Entry;
14
+
15
+ if (DObject.discriminateEntryValue(entry, DCommon.isType("string"))) {
16
+ type _CheckIfValue = DCommon.ExpectType<typeof entry[1], string, "strict">;
17
+ const [, name] = entry;
18
+ type _CheckIfName = DCommon.ExpectType<typeof name, string, "strict">;
19
+ }
20
+
21
+ const result = DObject.discriminateEntryValue(entry, DCommon.isType("string"));
22
+
23
+ // La valeur obtenue est true lorsque la valeur de l’entrée est une chaîne.
24
+ type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
25
+
26
+ // La forme curifiée est passée directement comme predicate à DCommon.when.
27
+ const value = DCommon.pipe(
28
+ entry,
29
+ DCommon.when(
30
+ DObject.discriminateEntryValue(DCommon.isType("string")),
31
+ (narrowedEntry) => {
32
+ type _CheckPredicatedValue = DCommon.ExpectType<typeof narrowedEntry[1], string, "strict">;
33
+
34
+ return narrowedEntry[1];
35
+ },
36
+ ),
37
+ );
38
+
39
+ // La valeur est extraite avec le type string lorsque le predicate réussit ; sinon l’entrée version est conservée.
40
+ type _CheckPreserved = DCommon.ExpectType<
41
+ typeof value,
42
+ string | readonly ["version", number],
43
+ "strict"
44
+ >;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @title DObject.entries
3
+ *
4
+ * Convertir les propriétés d’un objet en entrées typées.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import type * as DCommon from "@duplojs/lang/common";
8
+
9
+ const result = DObject.entries({
10
+ name: "Duplo",
11
+ version: 1,
12
+ });
13
+
14
+ // La valeur obtenue contient les couples ["name", string] et ["version", number].
15
+ type _CheckResult = DCommon.ExpectType<
16
+ typeof result,
17
+ readonly (readonly ["name", string] | readonly ["version", number])[],
18
+ "strict"
19
+ >;
@@ -0,0 +1,17 @@
1
+ /**
2
+ * @title DObject.entry
3
+ *
4
+ * Construire une entrée objet en conservant les types de sa clé et de sa valeur.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import type * as DCommon from "@duplojs/lang/common";
8
+
9
+ declare const value: "Duplo";
10
+ const result = DObject.entry("name", value);
11
+
12
+ // La valeur obtenue est l’entrée readonly ["name", "Duplo"].
13
+ type _CheckResult = DCommon.ExpectType<
14
+ typeof result,
15
+ readonly ["name", "Duplo"],
16
+ "strict"
17
+ >;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @title DObject.fromEntries
3
+ *
4
+ * Reconstruire un objet typé à partir d’une collection d’entrées.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import type * as DCommon from "@duplojs/lang/common";
8
+
9
+ const entries = [
10
+ DObject.entry("name", "Duplo"),
11
+ DObject.entry("version", 1),
12
+ ];
13
+ const result = DObject.fromEntries(entries);
14
+
15
+ // La valeur obtenue est un objet dont les propriétés name et version sont optionnelles dans le type inféré.
16
+ type _CheckResult = DCommon.ExpectType<
17
+ typeof result,
18
+ {
19
+ name?: string;
20
+ version?: number;
21
+ },
22
+ "strict"
23
+ >;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * @title DObject.getDeepProperty
3
+ *
4
+ * Lire une propriété imbriquée avec un chemin vérifié par TypeScript.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ const source = {
10
+ profile: {
11
+ name: "Duplo",
12
+ },
13
+ };
14
+
15
+ const result = DObject.getDeepProperty(source, "profile.name");
16
+
17
+ // La valeur obtenue est "Duplo".
18
+ type _CheckResult = DCommon.ExpectType<typeof result, string, "strict">;
19
+
20
+ const piped = DCommon.pipe(
21
+ source,
22
+ DObject.getDeepProperty("profile.name"),
23
+ );
24
+
25
+ // Le chemin curifié lit la même propriété dans un pipe.
26
+ type _CheckPiped = DCommon.ExpectType<typeof piped, string, "strict">;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @title DObject.getProperty
3
+ *
4
+ * Lire une propriété d’un objet en conservant son type.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ const source = {
10
+ name: "Duplo",
11
+ version: 1,
12
+ };
13
+ const result = DObject.getProperty(source, "name");
14
+
15
+ // La valeur obtenue est "Duplo".
16
+ type _CheckResult = DCommon.ExpectType<typeof result, string, "strict">;
17
+
18
+ const piped = DCommon.pipe(
19
+ source,
20
+ DObject.getProperty("version"),
21
+ );
22
+
23
+ // La forme curifiée lit version dans l’étape du pipe.
24
+ type _CheckPiped = DCommon.ExpectType<typeof piped, number, "strict">;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @title DObject.hasKeys
3
+ *
4
+ * Vérifier la présence de propriétés définies et affiner leur caractère obligatoire.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ declare const source: {
10
+ name?: string;
11
+ version?: number;
12
+ };
13
+ interface CompleteSource {
14
+ name: string;
15
+ version: number;
16
+ }
17
+
18
+ if (DObject.hasKeys(source, ["name", "version"])) {
19
+ type _CheckIfSource = DCommon.ExpectType<typeof source, CompleteSource, "strict">;
20
+ const name = source.name;
21
+ type _CheckIfName = DCommon.ExpectType<typeof name, string, "strict">;
22
+ }
23
+
24
+ const result = DObject.hasKeys(source, ["name", "version"]);
25
+
26
+ // Le test retourne true lorsque les deux propriétés sont définies.
27
+ type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
28
+
29
+ // La forme curifiée est passée directement comme predicate à DCommon.when.
30
+ const name = DCommon.pipe(
31
+ source,
32
+ DCommon.when(
33
+ DObject.hasKeys(["name", "version"]),
34
+ (completeSource) => {
35
+ type _CheckPredicatedInput = DCommon.ExpectType<typeof completeSource, CompleteSource, "strict">;
36
+
37
+ return completeSource.name;
38
+ },
39
+ ),
40
+ );
41
+
42
+ // La propriété name est une chaîne lorsque les deux clés sont présentes ; sinon source est conservé.
43
+ type _CheckName = DCommon.ExpectType<typeof name, string | typeof source, "strict">;
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @title DObject.isSimple
3
+ *
4
+ * Vérifier si un objet est simple sans affiner son type.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ // La fonction reçoit un objet déjà identifié et indique s’il est simple.
10
+ declare const input: { name: string } | Date;
11
+ const result = DObject.isSimple(input);
12
+
13
+ type _CheckResult = DCommon.ExpectType<typeof result, boolean, "strict">;
14
+
15
+ // Le booléen ne réduit le type d’entrée dans aucune des deux branches.
16
+ if (DObject.isSimple(input)) {
17
+ type _CheckInput = DCommon.ExpectType<typeof input, { name: string } | Date, "strict">;
18
+ } else {
19
+ // Une instance de Date reste un objet même si elle n’est pas simple.
20
+ type _CheckInput = DCommon.ExpectType<typeof input, { name: string } | Date, "strict">;
21
+ }
22
+
23
+ // Depuis unknown, DObject.is identifie l’objet avant de vérifier s’il est simple.
24
+ declare const externalInput: unknown;
25
+ if (DObject.is(externalInput) && DObject.isSimple(externalInput)) {
26
+ const count = DObject.countKeys(externalInput);
27
+
28
+ type _CheckInput = DCommon.ExpectType<typeof externalInput, object, "strict">;
29
+ type _CheckCount = DCommon.ExpectType<typeof count, number, "strict">;
30
+ }
31
+
32
+ // La fonction unaire peut servir d’étape produisant un booléen dans un pipe.
33
+ const isSimple = DCommon.pipe(
34
+ input,
35
+ DObject.isSimple,
36
+ );
37
+ // Le résultat indique si l’objet fourni est simple.
38
+ type _CheckIsSimple = DCommon.ExpectType<typeof isSimple, boolean, "strict">;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @title DObject.keys
3
+ *
4
+ * Lister les clés d’un objet avec un type correspondant à ses propriétés.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import type * as DCommon from "@duplojs/lang/common";
8
+
9
+ const result = DObject.keys({
10
+ name: "Duplo",
11
+ version: 1,
12
+ });
13
+
14
+ // La valeur obtenue est ["name", "version"] et ses clés sont conservées dans le type.
15
+ type _CheckResult = DCommon.ExpectType<
16
+ typeof result,
17
+ readonly ("name" | "version")[],
18
+ "strict"
19
+ >;
@@ -0,0 +1,39 @@
1
+ /**
2
+ * @title DObject.omit
3
+ *
4
+ * Créer un objet en retirant les propriétés sélectionnées.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ const source = {
10
+ name: "Duplo",
11
+ version: 1,
12
+ active: true,
13
+ };
14
+ const result = DObject.omit(source, ["version"]);
15
+
16
+ // La valeur obtenue est { name: "Duplo", active: true }.
17
+ type _CheckResult = DCommon.ExpectType<
18
+ typeof result,
19
+ {
20
+ name: string;
21
+ active: boolean;
22
+ },
23
+ "strict"
24
+ >;
25
+
26
+ const piped = DCommon.pipe(
27
+ source,
28
+ DObject.omit({ active: true }),
29
+ );
30
+
31
+ // Une sélection par objet de drapeaux est également utilisable dans un pipe.
32
+ type _CheckPiped = DCommon.ExpectType<
33
+ typeof piped,
34
+ {
35
+ name: string;
36
+ version: number;
37
+ },
38
+ "strict"
39
+ >;
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @title DObject.override
3
+ *
4
+ * Remplacer les propriétés définies d’un objet par de nouvelles valeurs.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ const source = {
10
+ name: "Duplo",
11
+ version: 1,
12
+ };
13
+ const result = DObject.override(source, { version: 2 });
14
+
15
+ // La valeur obtenue est { name: "Duplo", version: 2 }.
16
+ type _CheckResult = DCommon.ExpectType<typeof result, typeof source, "strict">;
17
+
18
+ const piped = DCommon.pipe(
19
+ source,
20
+ DObject.override({ name: "AgentKit" }),
21
+ );
22
+
23
+ // La forme curifiée remplace seulement les propriétés définies dans la valeur d’override.
24
+ type _CheckPiped = DCommon.ExpectType<typeof piped, typeof source, "strict">;
@@ -0,0 +1,41 @@
1
+ /**
2
+ * @title DObject.pick
3
+ *
4
+ * Créer un objet avec les propriétés sélectionnées.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+
9
+ const source = {
10
+ name: "Duplo",
11
+ version: 1,
12
+ active: true,
13
+ };
14
+ const result = DObject.pick(source, ["name", "active"]);
15
+
16
+ // La valeur obtenue est { name: "Duplo", active: true }.
17
+ type _CheckResult = DCommon.ExpectType<
18
+ typeof result,
19
+ {
20
+ name: string;
21
+ active: boolean;
22
+ },
23
+ "strict"
24
+ >;
25
+
26
+ const piped = DCommon.pipe(
27
+ source,
28
+ DObject.pick({
29
+ name: true,
30
+ version: false,
31
+ }),
32
+ );
33
+
34
+ // Une sélection par objet de drapeaux conserve seulement name.
35
+ type _CheckPiped = DCommon.ExpectType<
36
+ typeof piped,
37
+ {
38
+ name: string;
39
+ },
40
+ "strict"
41
+ >;
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @title DObject.to
3
+ *
4
+ * Construire un nouvel objet en appliquant une forme de transformations à une même entrée.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+ import type * as DNumber from "@duplojs/lang/number";
9
+ import * as DString from "@duplojs/lang/string";
10
+
11
+ const result = DObject.to("Duplo", {
12
+ upper: DString.toUpperCase,
13
+ length: DString.length,
14
+ });
15
+
16
+ // La valeur obtenue est { upper: "DUPLO", length: 5 }.
17
+ type _CheckResult = DCommon.ExpectType<
18
+ typeof result,
19
+ {
20
+ upper: Uppercase<string>;
21
+ length: number & DNumber.Positive;
22
+ },
23
+ "strict"
24
+ >;
25
+
26
+ const piped = DCommon.pipe(
27
+ "AgentKit",
28
+ DObject.to({
29
+ upper: DString.toUpperCase,
30
+ }),
31
+ );
32
+
33
+ // La forme curifiée applique la forme au texte reçu par le pipe.
34
+ type _CheckPiped = DCommon.ExpectType<
35
+ typeof piped,
36
+ {
37
+ upper: "AGENTKIT";
38
+ },
39
+ "strict"
40
+ >;
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @title DObject.transformProperties
3
+ *
4
+ * Transformer plusieurs propriétés d’un objet en conservant les autres.
5
+ */
6
+ import * as DObject from "@duplojs/lang/object";
7
+ import * as DCommon from "@duplojs/lang/common";
8
+ import * as DString from "@duplojs/lang/string";
9
+
10
+ const source = {
11
+ name: "duplo",
12
+ version: 1,
13
+ };
14
+ const result = DObject.transformProperties(source, {
15
+ name: DString.toUpperCase,
16
+ });
17
+
18
+ // La valeur obtenue est { name: "DUPLO", version: 1 }.
19
+ type _CheckResult = DCommon.ExpectType<
20
+ typeof result,
21
+ {
22
+ name: Uppercase<string>;
23
+ version: number;
24
+ },
25
+ "strict"
26
+ >;
27
+
28
+ const piped = DCommon.pipe(
29
+ source,
30
+ DObject.transformProperties({
31
+ name: DString.toUpperCase,
32
+ }),
33
+ );
34
+
35
+ // La forme curifiée place la description des transformations dans l’étape du pipe.
36
+ type _CheckPiped = DCommon.ExpectType<
37
+ typeof piped,
38
+ {
39
+ name: Uppercase<string>;
40
+ version: number;
41
+ },
42
+ "strict"
43
+ >;