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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (487) 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-indent.ts +20 -0
  172. package/docs/API/10-lang/10-printer/10-primitives.md +11 -0
  173. package/docs/API/10-lang/10-printer/10-render.ts +29 -0
  174. package/docs/API/10-lang/10-printer/10-renderLine.ts +12 -0
  175. package/docs/API/10-lang/10-printer/10-renderParagraph.ts +16 -0
  176. package/docs/API/10-lang/10-printer/index.llms.md +37 -0
  177. package/docs/API/10-lang/10-printer/index.md +3 -0
  178. package/docs/API/10-lang/10-string/10-at.ts +18 -0
  179. package/docs/API/10-lang/10-string/10-capitalize.ts +18 -0
  180. package/docs/API/10-lang/10-string/10-charAt.ts +18 -0
  181. package/docs/API/10-lang/10-string/10-concat.ts +18 -0
  182. package/docs/API/10-lang/10-string/10-endsWith.ts +33 -0
  183. package/docs/API/10-lang/10-string/10-extract.ts +18 -0
  184. package/docs/API/10-lang/10-string/10-extractAll.ts +18 -0
  185. package/docs/API/10-lang/10-string/10-first.ts +17 -0
  186. package/docs/API/10-lang/10-string/10-includes.ts +33 -0
  187. package/docs/API/10-lang/10-string/10-indexOf.ts +17 -0
  188. package/docs/API/10-lang/10-string/10-isComposedOf.ts +33 -0
  189. package/docs/API/10-lang/10-string/10-isEmail.ts +56 -0
  190. package/docs/API/10-lang/10-string/10-isIn.ts +34 -0
  191. package/docs/API/10-lang/10-string/10-isKeyof.ts +37 -0
  192. package/docs/API/10-lang/10-string/10-isNotEmpty.ts +32 -0
  193. package/docs/API/10-lang/10-string/10-isNumber.ts +32 -0
  194. package/docs/API/10-lang/10-string/10-isTrimmed.ts +33 -0
  195. package/docs/API/10-lang/10-string/10-isUrl.ts +31 -0
  196. package/docs/API/10-lang/10-string/10-isUuid.ts +31 -0
  197. package/docs/API/10-lang/10-string/10-join.ts +18 -0
  198. package/docs/API/10-lang/10-string/10-last.ts +17 -0
  199. package/docs/API/10-lang/10-string/10-lastIndexOf.ts +17 -0
  200. package/docs/API/10-lang/10-string/10-length.ts +18 -0
  201. package/docs/API/10-lang/10-string/10-lengthEqual.ts +33 -0
  202. package/docs/API/10-lang/10-string/10-maxCharacters.ts +33 -0
  203. package/docs/API/10-lang/10-string/10-minCharacters.ts +33 -0
  204. package/docs/API/10-lang/10-string/10-normalize.ts +17 -0
  205. package/docs/API/10-lang/10-string/10-padEnd.ts +17 -0
  206. package/docs/API/10-lang/10-string/10-padStart.ts +17 -0
  207. package/docs/API/10-lang/10-string/10-pop.ts +17 -0
  208. package/docs/API/10-lang/10-string/10-prepend.ts +17 -0
  209. package/docs/API/10-lang/10-string/10-repeat.ts +17 -0
  210. package/docs/API/10-lang/10-string/10-replace.ts +18 -0
  211. package/docs/API/10-lang/10-string/10-replaceAll.ts +17 -0
  212. package/docs/API/10-lang/10-string/10-search.ts +17 -0
  213. package/docs/API/10-lang/10-string/10-shift.ts +17 -0
  214. package/docs/API/10-lang/10-string/10-slice.ts +17 -0
  215. package/docs/API/10-lang/10-string/10-sort.ts +19 -0
  216. package/docs/API/10-lang/10-string/10-sortCompare.ts +17 -0
  217. package/docs/API/10-lang/10-string/10-split.ts +34 -0
  218. package/docs/API/10-lang/10-string/10-startsWith.ts +33 -0
  219. package/docs/API/10-lang/10-string/10-stringify.ts +11 -0
  220. package/docs/API/10-lang/10-string/10-substring.ts +17 -0
  221. package/docs/API/10-lang/10-string/10-test.ts +17 -0
  222. package/docs/API/10-lang/10-string/10-to.ts +11 -0
  223. package/docs/API/10-lang/10-string/10-toLowerCase.ts +17 -0
  224. package/docs/API/10-lang/10-string/10-toUpperCase.ts +17 -0
  225. package/docs/API/10-lang/10-string/10-trim.ts +17 -0
  226. package/docs/API/10-lang/10-string/10-trimEnd.ts +17 -0
  227. package/docs/API/10-lang/10-string/10-trimStart.ts +17 -0
  228. package/docs/API/10-lang/10-string/10-uncapitalize.ts +17 -0
  229. package/docs/API/10-lang/10-string/index.llms.md +208 -0
  230. package/docs/API/10-lang/10-string/index.md +3 -0
  231. package/docs/API/10-lang/10-tuple/10-from.ts +50 -0
  232. package/docs/API/10-lang/10-tuple/10-map.ts +37 -0
  233. package/docs/API/10-lang/10-tuple/index.llms.md +12 -0
  234. package/docs/API/10-lang/10-tuple/index.md +3 -0
  235. package/docs/API/40-json-web-token/10-tokenHandler/10-createTokenHandler.ts +160 -0
  236. package/docs/API/40-json-web-token/10-tokenHandler/index.llms.md +8 -0
  237. package/docs/API/40-json-web-token/10-tokenHandler/index.md +3 -0
  238. package/docs/API/40-json-web-token/20-signer/10-createHS256.ts +24 -0
  239. package/docs/API/40-json-web-token/20-signer/10-createHS512.ts +24 -0
  240. package/docs/API/40-json-web-token/20-signer/10-createRS256.ts +28 -0
  241. package/docs/API/40-json-web-token/20-signer/10-createRS512.ts +28 -0
  242. package/docs/API/40-json-web-token/20-signer/10-factory.ts +29 -0
  243. package/docs/API/40-json-web-token/20-signer/index.llms.md +24 -0
  244. package/docs/API/40-json-web-token/20-signer/index.md +3 -0
  245. package/docs/API/40-json-web-token/30-cipher/10-createRSAOAEP.ts +26 -0
  246. package/docs/API/40-json-web-token/30-cipher/10-createRSAOAEP256.ts +26 -0
  247. package/docs/API/40-json-web-token/30-cipher/10-factory.ts +29 -0
  248. package/docs/API/40-json-web-token/30-cipher/index.llms.md +16 -0
  249. package/docs/API/40-json-web-token/30-cipher/index.md +3 -0
  250. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.decrypt.ts +17 -0
  251. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.encrypt.ts +11 -0
  252. package/docs/API/40-json-web-token/40-utils/10-AES_GCM.generateInitializationVector.ts +9 -0
  253. package/docs/API/40-json-web-token/40-utils/10-HMAC.sign.ts +13 -0
  254. package/docs/API/40-json-web-token/40-utils/10-HMAC.verify.ts +11 -0
  255. package/docs/API/40-json-web-token/40-utils/10-RSA.sign.ts +14 -0
  256. package/docs/API/40-json-web-token/40-utils/10-RSA.verify.ts +13 -0
  257. package/docs/API/40-json-web-token/40-utils/10-RSA_OAEP.decrypt.ts +13 -0
  258. package/docs/API/40-json-web-token/40-utils/10-RSA_OAEP.encrypt.ts +10 -0
  259. package/docs/API/40-json-web-token/40-utils/10-decodeBase64.ts +9 -0
  260. package/docs/API/40-json-web-token/40-utils/10-decodeBase64Url.ts +9 -0
  261. package/docs/API/40-json-web-token/40-utils/10-decodeText.ts +9 -0
  262. package/docs/API/40-json-web-token/40-utils/10-encodeBase64.ts +9 -0
  263. package/docs/API/40-json-web-token/40-utils/10-encodeBase64Url.ts +9 -0
  264. package/docs/API/40-json-web-token/40-utils/10-encodeText.ts +9 -0
  265. package/docs/API/40-json-web-token/40-utils/10-isBase64Url.ts +11 -0
  266. package/docs/API/40-json-web-token/40-utils/10-jsonParse.ts +11 -0
  267. package/docs/API/40-json-web-token/40-utils/10-pemToBinary.ts +11 -0
  268. package/docs/API/40-json-web-token/40-utils/index.llms.md +76 -0
  269. package/docs/API/40-json-web-token/40-utils/index.md +3 -0
  270. package/docs/API/40-json-web-token/index.md +3 -0
  271. package/docs/API/50-form/10-vue/10-construction/10-createForm.ts +48 -0
  272. package/docs/API/50-form/10-vue/10-construction/10-createFormField.ts +66 -0
  273. package/docs/API/50-form/10-vue/10-construction/10-createGridTemplates.ts +39 -0
  274. package/docs/API/50-form/10-vue/10-construction/10-createInput.ts +46 -0
  275. package/docs/API/50-form/10-vue/10-construction/10-createTemplate.ts +36 -0
  276. package/docs/API/50-form/10-vue/10-construction/fixtures/AddressInput.vue +19 -0
  277. package/docs/API/50-form/10-vue/10-construction/index.llms.md +24 -0
  278. package/docs/API/50-form/10-vue/10-construction/index.md +3 -0
  279. package/docs/API/50-form/10-vue/20-layouts/10-useCheckLayout.ts +40 -0
  280. package/docs/API/50-form/10-vue/20-layouts/10-useDisabledLayout.ts +34 -0
  281. package/docs/API/50-form/10-vue/20-layouts/10-useMultiLayout.ts +32 -0
  282. package/docs/API/50-form/10-vue/20-layouts/10-useRepeatLayout.ts +34 -0
  283. package/docs/API/50-form/10-vue/20-layouts/10-useSectionLayout.ts +20 -0
  284. package/docs/API/50-form/10-vue/20-layouts/10-useSlotLayout.ts +37 -0
  285. package/docs/API/50-form/10-vue/20-layouts/10-useStepLayout.ts +31 -0
  286. package/docs/API/50-form/10-vue/20-layouts/10-useUnionLayout.ts +48 -0
  287. package/docs/API/50-form/10-vue/20-layouts/index.llms.md +36 -0
  288. package/docs/API/50-form/10-vue/20-layouts/index.md +3 -0
  289. package/docs/API/50-form/10-vue/30-designSystem/10-useCheckbox.ts +13 -0
  290. package/docs/API/50-form/10-vue/30-designSystem/10-useCheckboxPolicy.ts +18 -0
  291. package/docs/API/50-form/10-vue/30-designSystem/10-useDateInput.ts +20 -0
  292. package/docs/API/50-form/10-vue/30-designSystem/10-useDualRangeInput.ts +27 -0
  293. package/docs/API/50-form/10-vue/30-designSystem/10-useFileInput.ts +23 -0
  294. package/docs/API/50-form/10-vue/30-designSystem/10-useNumberInput.ts +18 -0
  295. package/docs/API/50-form/10-vue/30-designSystem/10-useRadioGroup.ts +31 -0
  296. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeDateInput.ts +23 -0
  297. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeInput.ts +18 -0
  298. package/docs/API/50-form/10-vue/30-designSystem/10-useRangeTimeInput.ts +23 -0
  299. package/docs/API/50-form/10-vue/30-designSystem/10-useSelectInput.ts +31 -0
  300. package/docs/API/50-form/10-vue/30-designSystem/10-useTextInput.ts +14 -0
  301. package/docs/API/50-form/10-vue/30-designSystem/10-useTextareaInput.ts +14 -0
  302. package/docs/API/50-form/10-vue/30-designSystem/10-useTimeInput.ts +20 -0
  303. package/docs/API/50-form/10-vue/30-designSystem/20-components.md +11 -0
  304. package/docs/API/50-form/10-vue/30-designSystem/index.llms.md +65 -0
  305. package/docs/API/50-form/10-vue/30-designSystem/index.md +3 -0
  306. package/docs/API/50-form/10-vue/fixtures/templates.ts +20 -0
  307. package/docs/API/50-form/10-vue/index.md +3 -0
  308. package/docs/API/50-form/index.md +3 -0
  309. package/docs/API/60-playwright/10-construction/10-createComponent.ts +47 -0
  310. package/docs/API/60-playwright/10-construction/10-createComponentInteraction.ts +28 -0
  311. package/docs/API/60-playwright/10-construction/10-createPage.ts +34 -0
  312. package/docs/API/60-playwright/10-construction/10-createStepWrapper.ts +23 -0
  313. package/docs/API/60-playwright/10-construction/10-createWebsite.ts +57 -0
  314. package/docs/API/60-playwright/10-construction/10-initClient.ts +38 -0
  315. package/docs/API/60-playwright/10-construction/index.llms.md +28 -0
  316. package/docs/API/60-playwright/10-construction/index.md +3 -0
  317. package/docs/API/60-playwright/20-actions/10-check.ts +9 -0
  318. package/docs/API/60-playwright/20-actions/10-clear.ts +9 -0
  319. package/docs/API/60-playwright/20-actions/10-click.ts +9 -0
  320. package/docs/API/60-playwright/20-actions/10-dragTo.ts +10 -0
  321. package/docs/API/60-playwright/20-actions/10-extractContent.ts +10 -0
  322. package/docs/API/60-playwright/20-actions/10-fill.ts +9 -0
  323. package/docs/API/60-playwright/20-actions/10-focus.ts +9 -0
  324. package/docs/API/60-playwright/20-actions/10-forceClick.ts +10 -0
  325. package/docs/API/60-playwright/20-actions/10-hover.ts +9 -0
  326. package/docs/API/60-playwright/20-actions/10-press.ts +9 -0
  327. package/docs/API/60-playwright/20-actions/10-selectOption.ts +10 -0
  328. package/docs/API/60-playwright/20-actions/10-type.ts +10 -0
  329. package/docs/API/60-playwright/20-actions/10-uncheck.ts +9 -0
  330. package/docs/API/60-playwright/20-actions/10-withStep.ts +10 -0
  331. package/docs/API/60-playwright/20-actions/index.llms.md +60 -0
  332. package/docs/API/60-playwright/20-actions/index.md +3 -0
  333. package/docs/API/60-playwright/30-assertions/10-toBeBusy.ts +10 -0
  334. package/docs/API/60-playwright/30-assertions/10-toBeChecked.ts +9 -0
  335. package/docs/API/60-playwright/30-assertions/10-toBeDisabled.ts +9 -0
  336. package/docs/API/60-playwright/30-assertions/10-toBeEnabled.ts +9 -0
  337. package/docs/API/60-playwright/30-assertions/10-toBeHidden.ts +9 -0
  338. package/docs/API/60-playwright/30-assertions/10-toBeNotBusy.ts +10 -0
  339. package/docs/API/60-playwright/30-assertions/10-toBeVisible.ts +10 -0
  340. package/docs/API/60-playwright/30-assertions/10-toContainText.ts +9 -0
  341. package/docs/API/60-playwright/30-assertions/10-toHaveAttribute.ts +12 -0
  342. package/docs/API/60-playwright/30-assertions/10-toHaveClass.ts +9 -0
  343. package/docs/API/60-playwright/30-assertions/10-toHaveNoText.ts +10 -0
  344. package/docs/API/60-playwright/30-assertions/10-toHaveQuantity.ts +20 -0
  345. package/docs/API/60-playwright/30-assertions/10-toHaveText.ts +9 -0
  346. package/docs/API/60-playwright/30-assertions/10-toHaveValue.ts +9 -0
  347. package/docs/API/60-playwright/30-assertions/10-withStep.ts +10 -0
  348. package/docs/API/60-playwright/30-assertions/index.llms.md +64 -0
  349. package/docs/API/60-playwright/30-assertions/index.md +3 -0
  350. package/docs/API/60-playwright/fixtures/component.ts +44 -0
  351. package/docs/API/60-playwright/index.md +3 -0
  352. package/docs/API.llms.md +84 -0
  353. package/docs/concepts/01-fundamental/01-constraint/20-manipulation.ts +9 -6
  354. package/docs/concepts/01-fundamental/01-constraint/30-cast.ts +9 -5
  355. package/docs/concepts/01-fundamental/02-currying/01-use.ts +5 -0
  356. package/docs/concepts/01-fundamental/02-currying/10-built-in-function.ts +28 -16
  357. package/docs/concepts/01-fundamental/02-currying/20-inner-pipe.ts +11 -2
  358. package/docs/concepts/01-fundamental/02-currying/30-async-pipe.ts +11 -2
  359. package/docs/concepts/01-fundamental/03-either/10-discrimination.ts +23 -12
  360. package/docs/concepts/01-fundamental/03-either/20-exhaustive-handling.ts +27 -10
  361. package/docs/concepts/01-fundamental/03-either/30-composition.ts +18 -10
  362. package/docs/concepts/01-fundamental/03-either/40-result-adaptation.ts +10 -4
  363. package/docs/concepts/01-fundamental/03-either/50-external-results.ts +16 -3
  364. package/docs/concepts/01-fundamental/04-data-structure/10-structure.ts +110 -59
  365. package/docs/concepts/01-fundamental/04-data-structure/20-constraint.ts +20 -12
  366. package/docs/concepts/01-fundamental/04-data-structure/30-validation.ts +13 -9
  367. package/docs/concepts/01-fundamental/04-data-structure/40-codecs.ts +31 -20
  368. package/docs/concepts/01-fundamental/04-data-structure/50-recursive.ts +10 -1
  369. package/docs/concepts/01-fundamental/05-chrono/10-creation.ts +39 -13
  370. package/docs/concepts/01-fundamental/05-chrono/20-manipulation.ts +20 -4
  371. package/docs/concepts/01-fundamental/05-chrono/30-serialized.ts +22 -6
  372. package/docs/concepts/01-fundamental/05-chrono/40-timezone.ts +5 -1
  373. package/docs/concepts/01-fundamental/06-modeling/20-entity.ts +29 -42
  374. package/docs/concepts/01-fundamental/06-modeling/30-tagged-object.ts +46 -23
  375. package/docs/concepts/01-fundamental/06-modeling/40-entity-lifecycle.ts +30 -33
  376. package/docs/concepts/01-fundamental/07-discrimination/10-entity.ts +52 -20
  377. package/docs/concepts/01-fundamental/07-discrimination/20-fact.ts +54 -38
  378. package/docs/concepts/01-fundamental/07-discrimination/30-tagged-object.ts +52 -20
  379. package/docs/concepts/01-fundamental/07-discrimination/40-error.ts +26 -10
  380. package/docs/concepts/01-fundamental/07-discrimination/50-literal.ts +29 -10
  381. package/docs/concepts/01-fundamental/07-discrimination/60-shape.ts +10 -2
  382. package/docs/concepts/01-fundamental/07-discrimination/70-predicate.ts +18 -6
  383. package/docs/concepts/01-fundamental/08-kind/01-identity.md +7 -0
  384. package/docs/concepts/01-fundamental/08-kind/20-metadata.md +11 -0
  385. package/docs/concepts/01-fundamental/08-kind/30-transport.md +11 -0
  386. package/docs/concepts/01-fundamental/08-kind/index.md +3 -0
  387. package/docs/concepts/02-server/10-file/10-manipulation.ts +15 -3
  388. package/docs/concepts/02-server/10-file/20-path.ts +22 -6
  389. package/docs/concepts/02-server/20-http/10-init.ts +1 -9
  390. package/docs/concepts/02-server/20-http/20-route.ts +40 -32
  391. package/docs/concepts/02-server/20-http/30-routine.ts +12 -19
  392. package/docs/concepts/02-server/20-http/40-jwt.ts +49 -37
  393. package/docs/concepts/02-server/20-http/50-open-api.ts +44 -0
  394. package/docs/concepts/02-server/20-http/index.md +1 -1
  395. package/docs/concepts/02-server/30-environment/10-platform.ts +12 -3
  396. package/docs/concepts/02-server/30-environment/20-variable.ts +13 -7
  397. package/docs/concepts/03-client/10-http/10-init.ts +11 -23
  398. package/docs/concepts/03-client/10-http/20-request.ts +79 -69
  399. package/docs/concepts/03-client/10-http/30-hook.ts +23 -23
  400. package/docs/concepts/03-client/20-form/10-init.ts +18 -15
  401. package/docs/concepts/03-client/20-form/20-input.ts +13 -6
  402. package/docs/concepts/03-client/20-form/30-layout.ts +44 -49
  403. package/docs/concepts/03-client/20-form/40-template.ts +10 -5
  404. package/docs/concepts/03-client/20-form/50-integration.md +11 -0
  405. package/docs/concepts/03-client/20-form/examples/postModeration/ThePage.vue +32 -0
  406. package/docs/concepts/03-client/20-form/examples/postModeration/usePostModeration.ts +80 -0
  407. package/docs/concepts/05-type-driven-design/01-architecture/10-boundaries.md +23 -20
  408. package/docs/concepts/05-type-driven-design/01-architecture/index.md +1 -1
  409. package/docs/concepts/05-type-driven-design/02-domains/10-entities.md +29 -37
  410. package/docs/concepts/05-type-driven-design/02-domains/20-aggregates.md +42 -26
  411. package/docs/concepts/05-type-driven-design/02-domains/30-repositories.md +20 -26
  412. package/docs/concepts/05-type-driven-design/02-domains/40-refinements.md +30 -0
  413. package/docs/concepts/05-type-driven-design/02-domains/index.md +1 -1
  414. package/docs/concepts/05-type-driven-design/03-applications/10-use-case.md +33 -40
  415. package/docs/concepts/05-type-driven-design/03-applications/20-ports.md +49 -0
  416. package/docs/concepts/05-type-driven-design/03-applications/index.md +1 -1
  417. package/docs/concepts/05-type-driven-design/04-infrastructure/10-implementation.md +27 -36
  418. package/docs/concepts/05-type-driven-design/04-infrastructure/index.md +1 -1
  419. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/index.ts +1 -0
  420. package/docs/concepts/05-type-driven-design/fixtures/business/applications/ports/waitingListEntry.ts +17 -0
  421. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientGiveBackBook.ts +30 -12
  422. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/clientRentBook.ts +9 -8
  423. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/createBook.ts +7 -7
  424. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/index.ts +2 -0
  425. package/docs/concepts/05-type-driven-design/fixtures/business/applications/useCases/withdrawBook.ts +32 -0
  426. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientGiveBackBook.ts +72 -13
  427. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/clientRentBook.ts +37 -11
  428. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/createBook.ts +29 -17
  429. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/index.ts +1 -0
  430. package/docs/concepts/05-type-driven-design/fixtures/business/domains/aggregates/withdrawBook.ts +37 -0
  431. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/create.ts +4 -5
  432. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/index.ts +2 -0
  433. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/rental.ts +9 -9
  434. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/reserve.ts +37 -0
  435. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/returnBook.ts +11 -9
  436. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/facts/withdraw.ts +21 -0
  437. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/book/index.ts +42 -11
  438. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/giveBackBook.ts +11 -9
  439. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/facts/rentBook.ts +10 -10
  440. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/client/index.ts +6 -29
  441. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/index.ts +1 -0
  442. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/cancel.ts +26 -0
  443. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/create.ts +33 -0
  444. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/index.ts +3 -0
  445. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/facts/prepare.ts +23 -0
  446. package/docs/concepts/05-type-driven-design/fixtures/business/domains/entities/waitingListEntry/index.ts +79 -0
  447. package/docs/concepts/05-type-driven-design/fixtures/business/domains/index.ts +1 -0
  448. package/docs/concepts/05-type-driven-design/fixtures/business/domains/refinements/index.ts +1 -0
  449. package/docs/concepts/05-type-driven-design/fixtures/business/domains/refinements/refineLinkBetweenClientAndBorrowedBook.ts +34 -0
  450. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/book.ts +1 -1
  451. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/index.ts +1 -0
  452. package/docs/concepts/05-type-driven-design/fixtures/business/domains/repositories/waitingListEntry.ts +19 -0
  453. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/command/clientRentBook.ts +3 -3
  454. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/bookExist.ts +2 -2
  455. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/checkers/clientExist.ts +2 -2
  456. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientGiveBackBook.ts +23 -14
  457. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/http/routes/clientRentBook.ts +7 -12
  458. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/book.ts +1 -1
  459. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/index.ts +1 -0
  460. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/ports/waitingListEntry.ts +17 -0
  461. package/docs/concepts/05-type-driven-design/fixtures/infrastructure/useCases/index.ts +2 -1
  462. package/docs/concepts/05-type-driven-design/index.md +2 -2
  463. package/docs/concepts.llms.md +71 -25
  464. package/instructions/coding-conventions.md +2 -2
  465. package/package.json +17 -14
  466. package/skills/http-client/SKILL.md +1 -1
  467. package/skills/http-client/references/configuration.md +3 -1
  468. package/skills/http-client/references/examples/client-expectations.ts +11 -10
  469. package/skills/http-client/references/examples/client-streams.ts +2 -2
  470. package/skills/http-client/references/examples/external-client.ts +2 -2
  471. package/skills/http-client/references/responses.md +1 -1
  472. package/skills/http-server/SKILL.md +4 -9
  473. package/skills/http-server/references/examples/authentication.ts +2 -2
  474. package/skills/http-server/references/examples/inferred-client.ts +54 -0
  475. package/skills/http-server/references/examples/minimal-route.ts +2 -3
  476. package/skills/http-server/references/examples/protected-route.ts +4 -6
  477. package/skills/http-server/references/examples/rename-user-route.ts +4 -6
  478. package/skills/http-server/references/examples/user-checker.ts +2 -2
  479. package/skills/http-server/references/examples/user-route.ts +12 -5
  480. package/skills/http-server/references/initialization.md +1 -1
  481. package/skills/http-server/references/reusable-flows.md +3 -3
  482. package/skills/http-server/references/routes-and-floor.md +11 -3
  483. package/dist/bin/install/index.d.ts +0 -2
  484. package/docs/concepts/02-server/20-http/50-codegen.ts +0 -29
  485. package/skills/http-server/references/code-generation.md +0 -31
  486. package/skills/http-server/references/examples/generate-sdk.ts +0 -36
  487. /package/dist/bin/{install → installSkill}/skill.d.ts +0 -0
@@ -0,0 +1,19 @@
1
+ <script setup lang="ts">
2
+ defineProps<{
3
+ hint: string;
4
+ placeholder?: string;
5
+ }>();
6
+ const model = defineModel<string>({ required: true });
7
+ </script>
8
+
9
+ <template>
10
+ <div>
11
+ <input
12
+ v-model="model"
13
+ :placeholder="placeholder"
14
+ type="email"
15
+ />
16
+
17
+ <small>{{ hint }}</small>
18
+ </div>
19
+ </template>
@@ -0,0 +1,24 @@
1
+ ### Construction de formulaires
2
+
3
+ Fabriques de formulaires, de champs et de templates.
4
+
5
+ ### [createForm](10-createForm.ts)
6
+
7
+ Associer des templates à une fabrique de formulaires Vue.
8
+
9
+ ### [createFormField](10-createFormField.ts)
10
+
11
+ Construire une primitive de champ personnalisée pour un formulaire Vue.
12
+
13
+ ### [createGridTemplates](10-createGridTemplates.ts)
14
+
15
+ Configurer les templates Vue en grille et leurs commandes.
16
+
17
+ ### [createInput](10-createInput.ts)
18
+
19
+ Construire un champ à partir d'un composant Vue compatible avec v-model.
20
+
21
+ ### [createTemplate](10-createTemplate.ts)
22
+
23
+ Configurer un composant Vue comme template de formulaire.
24
+
@@ -0,0 +1,3 @@
1
+ ### Construction de formulaires
2
+
3
+ Fabriques de formulaires, de champs et de templates.
@@ -0,0 +1,40 @@
1
+ /**
2
+ * @title useCheckLayout
3
+ *
4
+ * Ajouter une validation à un champ ou à une composition de champs.
5
+ */
6
+ import { useCheckLayout, type GetFormFieldCheckedValue, type GetFormFieldValue } from "@duplojs/form/vue";
7
+ import { useTextInput } from "@duplojs/form/vueDesignSystem";
8
+ import type * as DCommon from "@duplojs/lang/common";
9
+ import * as DDataStructure from "@duplojs/lang/dataStructure";
10
+ import type * as DString from "@duplojs/lang/string";
11
+ import * as DEither from "@duplojs/lang/either";
12
+
13
+ const email = useCheckLayout(
14
+ useTextInput({ label: "Email" }),
15
+ {
16
+ dataStructure: DDataStructure.string([DDataStructure.email()]),
17
+ },
18
+ );
19
+
20
+ type _Raw = DCommon.ExpectType<
21
+ GetFormFieldValue<typeof email>,
22
+ string,
23
+ "strict"
24
+ >;
25
+ type _Checked = DCommon.ExpectType<
26
+ GetFormFieldCheckedValue<typeof email>,
27
+ string & DString.Email,
28
+ "strict"
29
+ >;
30
+
31
+ // refine reçoit la valeur déjà vérifiée par le champ et produit un message en cas de refus.
32
+ const username = useCheckLayout(
33
+ useTextInput({ label: "Username" }),
34
+ {
35
+ refine: (value) => value === "admin"
36
+ ? DEither.error("Reserved name")
37
+ : DEither.ok(),
38
+ },
39
+ );
40
+ void username;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @title useDisabledLayout
3
+ *
4
+ * Retirer conditionnellement un champ du rendu et de la validation.
5
+ */
6
+ import { useDisabledLayout, type GetFormFieldCheckedValue, type GetFormFieldValue } from "@duplojs/form/vue";
7
+ import { useTextInput } from "@duplojs/form/vueDesignSystem";
8
+ import type * as DCommon from "@duplojs/lang/common";
9
+ import { ref } from "vue";
10
+
11
+ const isGuest = ref(true);
12
+
13
+ const company = useDisabledLayout(
14
+ useTextInput({
15
+ label: "Company",
16
+ }),
17
+ {
18
+ isDisabled: () => isGuest.value,
19
+ },
20
+ );
21
+
22
+ // Le modèle garde la saisie pendant que le champ est masqué.
23
+ type _Raw = DCommon.ExpectType<
24
+ GetFormFieldValue<typeof company>,
25
+ string,
26
+ "strict"
27
+ >;
28
+
29
+ // Lorsque isDisabled retourne true, check ne valide pas l'enfant et réussit avec undefined.
30
+ type _Checked = DCommon.ExpectType<
31
+ GetFormFieldCheckedValue<typeof company>,
32
+ string | undefined,
33
+ "strict"
34
+ >;
@@ -0,0 +1,32 @@
1
+ /**
2
+ * @title useMultiLayout
3
+ *
4
+ * Assembler plusieurs champs dans une valeur objet.
5
+ */
6
+ import { useMultiLayout, type GetFormFieldValue } from "@duplojs/form/vue";
7
+ import { useNumberInput, useTextInput } from "@duplojs/form/vueDesignSystem";
8
+ import type * as DCommon from "@duplojs/lang/common";
9
+
10
+ const profile = useMultiLayout({
11
+ name: useTextInput(),
12
+ age: useNumberInput(),
13
+ });
14
+
15
+ // Chaque clé conserve le type de son champ.
16
+ type _Raw = DCommon.ExpectType<
17
+ GetFormFieldValue<typeof profile>,
18
+ {
19
+ name: string;
20
+ age: number;
21
+ },
22
+ "strict"
23
+ >;
24
+
25
+ // Les entrées permettent de construire les clés dynamiquement ; leur type devient un dictionnaire.
26
+ declare const names: [string, ReturnType<typeof useTextInput>][];
27
+ const dynamicFields = useMultiLayout(names);
28
+ type _Dynamic = DCommon.ExpectType<
29
+ GetFormFieldValue<typeof dynamicFields>,
30
+ { [key: string]: string },
31
+ "strict"
32
+ >;
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @title useRepeatLayout
3
+ *
4
+ * Répéter un champ avec une cardinalité minimale et maximale.
5
+ */
6
+ import { useRepeatLayout, type GetFormFieldValue } from "@duplojs/form/vue";
7
+ import { useTextInput } from "@duplojs/form/vueDesignSystem";
8
+ import type * as DCommon from "@duplojs/lang/common";
9
+
10
+ const contacts = useRepeatLayout(
11
+ useTextInput({ label: "Contact" }),
12
+ {
13
+ min: 1,
14
+ max: 3,
15
+ },
16
+ );
17
+
18
+ // Le minimum littéral garantit un premier élément ; max borne les actions au runtime.
19
+ type _Contacts = DCommon.ExpectType<
20
+ GetFormFieldValue<typeof contacts>,
21
+ [string, ...string[]],
22
+ "strict"
23
+ >;
24
+
25
+ const optionalContacts = useRepeatLayout(
26
+ useTextInput(),
27
+ { max: 3 },
28
+ );
29
+
30
+ type _Optional = DCommon.ExpectType<
31
+ GetFormFieldValue<typeof optionalContacts>,
32
+ string[],
33
+ "strict"
34
+ >;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @title useSectionLayout
3
+ *
4
+ * Présenter un champ dans une section sans modifier sa valeur.
5
+ */
6
+ import { useSectionLayout, type GetFormFieldValue } from "@duplojs/form/vue";
7
+ import { useTextInput } from "@duplojs/form/vueDesignSystem";
8
+ import type * as DCommon from "@duplojs/lang/common";
9
+
10
+ const section = useSectionLayout(
11
+ useTextInput({ label: "Name" }),
12
+ { title: "Profile" },
13
+ );
14
+
15
+ // La section change le rendu sans modifier le modèle ou le résultat validé.
16
+ type _Value = DCommon.ExpectType<
17
+ GetFormFieldValue<typeof section>,
18
+ string,
19
+ "strict"
20
+ >;
@@ -0,0 +1,37 @@
1
+ /**
2
+ * @title useSlotLayout
3
+ *
4
+ * Exposer un slot Vue pour personnaliser le rendu ou fournir un champ manuel.
5
+ */
6
+ import { useSlotLayout, type GetFormFieldCheckedValue, type GetFormFieldSlots } from "@duplojs/form/vue";
7
+ import { useTextInput } from "@duplojs/form/vueDesignSystem";
8
+ import type * as DCommon from "@duplojs/lang/common";
9
+
10
+ // Le slot reçoit value, update et formField.
11
+ const note = useSlotLayout(
12
+ "note",
13
+ useTextInput({ label: "Note" }),
14
+ );
15
+
16
+ type _Checked = DCommon.ExpectType<
17
+ GetFormFieldCheckedValue<typeof note>,
18
+ string | undefined,
19
+ "strict"
20
+ >;
21
+ type _SlotName = DCommon.ExpectType<
22
+ keyof GetFormFieldSlots<typeof note>,
23
+ "note",
24
+ "strict"
25
+ >;
26
+
27
+ // Sans champ enveloppé, le slot fournit directement la valeur initiale et update.
28
+ const rating = useSlotLayout(
29
+ "rating",
30
+ { defaultValue: 0 },
31
+ );
32
+
33
+ type _Rating = DCommon.ExpectType<
34
+ GetFormFieldCheckedValue<typeof rating>,
35
+ 0,
36
+ "strict"
37
+ >;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @title useStepLayout
3
+ *
4
+ * Répartir des champs dans un parcours à étapes.
5
+ */
6
+ import { useStepLayout, type GetFormFieldCheckedValue, type GetFormFieldValue } from "@duplojs/form/vue";
7
+ import { useNumberInput, useTextInput } from "@duplojs/form/vueDesignSystem";
8
+ import type * as DCommon from "@duplojs/lang/common";
9
+
10
+ const registration = useStepLayout(
11
+ [
12
+ useTextInput({ label: "Name" }),
13
+ useNumberInput({ label: "Age" }),
14
+ ],
15
+ { errorMessageNotAtLastStep: "Complete all steps" },
16
+ );
17
+
18
+ // Le check final refuse une soumission avant la dernière étape et revient à la première étape invalide.
19
+ type _Raw = DCommon.ExpectType<
20
+ GetFormFieldValue<typeof registration>,
21
+ {
22
+ currentStep: 0 | 1;
23
+ steps: [string, number];
24
+ },
25
+ "strict"
26
+ >;
27
+ type _Checked = DCommon.ExpectType<
28
+ GetFormFieldCheckedValue<typeof registration>,
29
+ readonly [string, number],
30
+ "strict"
31
+ >;
@@ -0,0 +1,48 @@
1
+ /**
2
+ * @title useUnionLayout
3
+ *
4
+ * Choisir une variante de champ et conserver sa valeur associée.
5
+ */
6
+ import { createForm, useUnionLayout } from "@duplojs/form/vue";
7
+ import { useNumberInput, useTextInput } from "@duplojs/form/vueDesignSystem";
8
+ import * as DEither from "@duplojs/lang/either";
9
+ import type * as DCommon from "@duplojs/lang/common";
10
+ import { grid } from "../fixtures/templates";
11
+
12
+ const useForm = createForm(grid.useTemplates());
13
+ const { currentValue, check, dispose } = useForm(
14
+ useUnionLayout(
15
+ [
16
+ ["email", useTextInput({ label: "Email" })],
17
+ ["pickup", useNumberInput({ label: "Pickup point" })],
18
+ ],
19
+ { defaultKind: "email" },
20
+ ),
21
+ );
22
+
23
+ // La valeur explicite correspond au kind choisi ; le retour à email restaure sa saisie précédente.
24
+ currentValue.value.value = "contact@example.com";
25
+ currentValue.value.updateKind("pickup", 42);
26
+ currentValue.value.updateKind("email");
27
+
28
+ const result = await check();
29
+ if (DEither.isRight(result)) {
30
+ const delivery = DEither.unwrapRight(result);
31
+
32
+ // La valeur validée correspond à la variante active, sans la méthode updateKind.
33
+ if (delivery.kind === "email") {
34
+ type _Email = DCommon.ExpectType<
35
+ typeof delivery.value,
36
+ string,
37
+ "strict"
38
+ >;
39
+ } else {
40
+ type _Pickup = DCommon.ExpectType<
41
+ typeof delivery.value,
42
+ number,
43
+ "strict"
44
+ >;
45
+ }
46
+ }
47
+
48
+ dispose();
@@ -0,0 +1,36 @@
1
+ ### Layouts
2
+
3
+ Composition des champs et ajout de structure, validation, contrôle de flux et slots.
4
+
5
+ ### [useCheckLayout](10-useCheckLayout.ts)
6
+
7
+ Ajouter une validation à un champ ou à une composition de champs.
8
+
9
+ ### [useDisabledLayout](10-useDisabledLayout.ts)
10
+
11
+ Retirer conditionnellement un champ du rendu et de la validation.
12
+
13
+ ### [useMultiLayout](10-useMultiLayout.ts)
14
+
15
+ Assembler plusieurs champs dans une valeur objet.
16
+
17
+ ### [useRepeatLayout](10-useRepeatLayout.ts)
18
+
19
+ Répéter un champ avec une cardinalité minimale et maximale.
20
+
21
+ ### [useSectionLayout](10-useSectionLayout.ts)
22
+
23
+ Présenter un champ dans une section sans modifier sa valeur.
24
+
25
+ ### [useSlotLayout](10-useSlotLayout.ts)
26
+
27
+ Exposer un slot Vue pour personnaliser le rendu ou fournir un champ manuel.
28
+
29
+ ### [useStepLayout](10-useStepLayout.ts)
30
+
31
+ Répartir des champs dans un parcours à étapes.
32
+
33
+ ### [useUnionLayout](10-useUnionLayout.ts)
34
+
35
+ Choisir une variante de champ et conserver sa valeur associée.
36
+
@@ -0,0 +1,3 @@
1
+ ### Layouts
2
+
3
+ Composition des champs et ajout de structure, validation, contrôle de flux et slots.
@@ -0,0 +1,13 @@
1
+ /**
2
+ * @title useCheckbox
3
+ *
4
+ * Saisir une valeur booléenne avec une case.
5
+ */
6
+ import { useCheckbox } from "@duplojs/form/vueDesignSystem";
7
+
8
+ // La case est initialement décochée.
9
+ const newsletter = useCheckbox({
10
+ label: "Subscribe to updates",
11
+ });
12
+
13
+ void newsletter;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @title useCheckboxPolicy
3
+ *
4
+ * Présenter une case de consentement.
5
+ */
6
+ import { useCheckboxPolicy } from "@duplojs/form/vueDesignSystem";
7
+
8
+ // La case est initialement décochée ; check échoue tant que required est vrai et que la case reste décochée.
9
+ const policy = useCheckboxPolicy({
10
+ label: "Privacy policy",
11
+ props: {
12
+ title: "I accept the privacy policy",
13
+ required: true,
14
+ errorMessage: "Acceptance is required",
15
+ },
16
+ });
17
+
18
+ void policy;
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @title useDateInput
3
+ *
4
+ * Choisir une date Chrono.
5
+ */
6
+ import { useDateInput } from "@duplojs/form/vueDesignSystem";
7
+ import type { GetFormFieldValue } from "@duplojs/form/vue";
8
+ import type * as DCommon from "@duplojs/lang/common";
9
+ import type * as DChrono from "@duplojs/lang/chrono";
10
+
11
+ // La date initiale est calculée avec DChrono.now() à la création du champ.
12
+ const date = useDateInput({
13
+ label: "Appointment date",
14
+ });
15
+
16
+ type _Value = DCommon.ExpectType<
17
+ GetFormFieldValue<typeof date>,
18
+ DChrono.TheDate | DChrono.SerializedTheDate | null,
19
+ "strict"
20
+ >;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @title useDualRangeInput
3
+ *
4
+ * Choisir les deux extrémités numériques d’une plage.
5
+ */
6
+ import { useDualRangeInput } from "@duplojs/form/vueDesignSystem";
7
+ import type { GetFormFieldValue } from "@duplojs/form/vue";
8
+ import type * as DCommon from "@duplojs/lang/common";
9
+
10
+ // La plage initiale est { start: 0, end: 100 }.
11
+ const price = useDualRangeInput({
12
+ label: "Price range",
13
+ props: {
14
+ min: 0,
15
+ max: 100,
16
+ step: 5,
17
+ },
18
+ });
19
+
20
+ type _Value = DCommon.ExpectType<
21
+ GetFormFieldValue<typeof price>,
22
+ {
23
+ start: number;
24
+ end: number;
25
+ },
26
+ "strict"
27
+ >;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @title useFileInput
3
+ *
4
+ * Sélectionner un ou plusieurs fichiers.
5
+ */
6
+ import { useFileInput } from "@duplojs/form/vueDesignSystem";
7
+ import type { GetFormFieldValue } from "@duplojs/form/vue";
8
+ import type * as DCommon from "@duplojs/lang/common";
9
+
10
+ // La valeur initiale est null ; le composant accepte une liste de fichiers.
11
+ const attachments = useFileInput({
12
+ label: "Attachments",
13
+ props: {
14
+ accept: ".pdf",
15
+ multiple: true,
16
+ },
17
+ });
18
+
19
+ type _Value = DCommon.ExpectType<
20
+ GetFormFieldValue<typeof attachments>,
21
+ File[] | null,
22
+ "strict"
23
+ >;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @title useNumberInput
3
+ *
4
+ * Saisir un nombre.
5
+ */
6
+ import { useNumberInput } from "@duplojs/form/vueDesignSystem";
7
+
8
+ // La valeur initiale est zéro ; les bornes configurent le composant.
9
+ const quantity = useNumberInput({
10
+ label: "Quantity",
11
+ props: {
12
+ min: 0,
13
+ max: 100,
14
+ step: 1,
15
+ },
16
+ });
17
+
18
+ void quantity;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @title useRadioGroup
3
+ *
4
+ * Choisir une option avec des boutons radio.
5
+ */
6
+ import { useRadioGroup } from "@duplojs/form/vueDesignSystem";
7
+ import type { GetFormFieldValue } from "@duplojs/form/vue";
8
+ import type * as DCommon from "@duplojs/lang/common";
9
+
10
+ // La sélection initiale est null.
11
+ const frequency = useRadioGroup({
12
+ label: "Frequency",
13
+ props: {
14
+ options: [
15
+ {
16
+ label: "Daily",
17
+ value: "daily",
18
+ },
19
+ {
20
+ label: "Weekly",
21
+ value: "weekly",
22
+ },
23
+ ],
24
+ },
25
+ });
26
+
27
+ type _Value = DCommon.ExpectType<
28
+ GetFormFieldValue<typeof frequency>,
29
+ string | null,
30
+ "strict"
31
+ >;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @title useRangeDateInput
3
+ *
4
+ * Choisir un intervalle de dates Chrono.
5
+ */
6
+ import { useRangeDateInput } from "@duplojs/form/vueDesignSystem";
7
+ import type { GetFormFieldValue } from "@duplojs/form/vue";
8
+ import type * as DCommon from "@duplojs/lang/common";
9
+ import type * as DChrono from "@duplojs/lang/chrono";
10
+
11
+ // La valeur comporte from et to ; les dates initiales sont le jour courant et le lendemain.
12
+ const period = useRangeDateInput({
13
+ label: "Booking period",
14
+ });
15
+
16
+ type _Value = DCommon.ExpectType<
17
+ GetFormFieldValue<typeof period>,
18
+ {
19
+ from: DChrono.TheDate | DChrono.SerializedTheDate | null;
20
+ to: DChrono.TheDate | DChrono.SerializedTheDate | null;
21
+ },
22
+ "strict"
23
+ >;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * @title useRangeInput
3
+ *
4
+ * Choisir un nombre avec un curseur.
5
+ */
6
+ import { useRangeInput } from "@duplojs/form/vueDesignSystem";
7
+
8
+ // La valeur initiale est zéro ; les bornes configurent le curseur.
9
+ const volume = useRangeInput({
10
+ label: "Volume",
11
+ props: {
12
+ min: 0,
13
+ max: 100,
14
+ step: 5,
15
+ },
16
+ });
17
+
18
+ void volume;
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @title useRangeTimeInput
3
+ *
4
+ * Choisir un intervalle d’heures Chrono.
5
+ */
6
+ import { useRangeTimeInput } from "@duplojs/form/vueDesignSystem";
7
+ import type { GetFormFieldValue } from "@duplojs/form/vue";
8
+ import type * as DCommon from "@duplojs/lang/common";
9
+ import type * as DChrono from "@duplojs/lang/chrono";
10
+
11
+ // La valeur comporte from et to, initialisées à zéro seconde.
12
+ const hours = useRangeTimeInput({
13
+ label: "Opening hours",
14
+ });
15
+
16
+ type _Value = DCommon.ExpectType<
17
+ GetFormFieldValue<typeof hours>,
18
+ {
19
+ from: DChrono.TheTime | DChrono.SerializedTheTime | null;
20
+ to: DChrono.TheTime | DChrono.SerializedTheTime | null;
21
+ },
22
+ "strict"
23
+ >;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * @title useSelectInput
3
+ *
4
+ * Choisir une option dans une liste déroulante.
5
+ */
6
+ import { useSelectInput } from "@duplojs/form/vueDesignSystem";
7
+ import type { GetFormFieldValue } from "@duplojs/form/vue";
8
+ import type * as DCommon from "@duplojs/lang/common";
9
+
10
+ // La sélection initiale est null.
11
+ const priority = useSelectInput({
12
+ label: "Priority",
13
+ props: {
14
+ options: [
15
+ {
16
+ label: "High",
17
+ value: "high",
18
+ },
19
+ {
20
+ label: "Low",
21
+ value: "low",
22
+ },
23
+ ],
24
+ },
25
+ });
26
+
27
+ type _Value = DCommon.ExpectType<
28
+ GetFormFieldValue<typeof priority>,
29
+ string | null,
30
+ "strict"
31
+ >;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @title useTextInput
3
+ *
4
+ * Saisir un texte court.
5
+ */
6
+ import { useTextInput } from "@duplojs/form/vueDesignSystem";
7
+
8
+ // Une chaîne vide est utilisée initialement.
9
+ const title = useTextInput({
10
+ label: "Title",
11
+ props: { placeholder: "Article title" },
12
+ });
13
+
14
+ void title;
@@ -0,0 +1,14 @@
1
+ /**
2
+ * @title useTextareaInput
3
+ *
4
+ * Saisir un texte multiligne.
5
+ */
6
+ import { useTextareaInput } from "@duplojs/form/vueDesignSystem";
7
+
8
+ // La valeur initiale est une chaîne vide.
9
+ const description = useTextareaInput({
10
+ label: "Description",
11
+ props: { placeholder: "Describe the issue" },
12
+ });
13
+
14
+ void description;