@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,20 @@
1
+ /**
2
+ * @title useTimeInput
3
+ *
4
+ * Choisir une heure Chrono.
5
+ */
6
+ import { useTimeInput } 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 initiale correspond à zéro seconde.
12
+ const time = useTimeInput({
13
+ label: "Opening time",
14
+ });
15
+
16
+ type _Value = DCommon.ExpectType<
17
+ GetFormFieldValue<typeof time>,
18
+ DChrono.TheTime | DChrono.SerializedTheTime | null,
19
+ "strict"
20
+ >;
@@ -0,0 +1,11 @@
1
+ #### Composants et champs fournis
2
+
3
+ Choisir les inputs et commandes Vue du design system.
4
+
5
+ ---
6
+
7
+ Les fonctions `useTextInput`, `useTextareaInput`, `useNumberInput`, `useFileInput`, `useSelectInput`, `useRadioGroup`, `useCheckbox`, `useCheckboxPolicy`, `useRangeInput`, `useDualRangeInput`, `useDateInput`, `useRangeDateInput`, `useTimeInput` et `useRangeTimeInput` produisent des champs `FormField`. Elles acceptent les paramètres de `createInput`, dont `label`, `defaultValue`, `props` et `dataStructure`.
8
+
9
+ Les valeurs initiales sont respectivement une chaîne vide pour les textes, zéro pour nombre et plage simple, `null` pour fichier, sélection et radio, `false` pour les cases, `{ start: 0, end: 100 }` pour la double plage, la date courante pour la date et des valeurs Chrono pour les dates et heures. Les intervalles date et heure utilisent `{ from, to }`. Les sélections et radios reçoivent leurs choix dans `props.options` ; les fichiers acceptent notamment `accept` et `multiple`.
10
+
11
+ Les composants Vue correspondants sont aussi exportés pour une utilisation directe ou avec `createInput`. Les boutons `PrimaryButton`, `OutlineButton`, `DestructiveButton`, `GhostButton` et `TheButton` servent aux actions de l'interface. Les adaptateurs `templateFormAddButton`, `templateFormRemoveButton`, `templateFormResetButton`, `templateFormNextButton`, `templateFormPreviousButton` et `templateFormSelect` répondent aux contrats de commandes de Grid. Charger les styles avec `@duplojs/form/vueDesignSystem.css` et `@duplojs/form/vueGrid.css` dans l'application.
@@ -0,0 +1,65 @@
1
+ ### Design system
2
+
3
+ Composants et inputs prêts à l'emploi pour construire les formulaires et les commandes des templates Grid.
4
+
5
+ #### [Composants et champs fournis](20-components.md)
6
+
7
+ Choisir les inputs et commandes Vue du design system.
8
+
9
+
10
+ ### [useCheckbox](10-useCheckbox.ts)
11
+
12
+ Saisir une valeur booléenne avec une case.
13
+
14
+ ### [useCheckboxPolicy](10-useCheckboxPolicy.ts)
15
+
16
+ Présenter une case de consentement.
17
+
18
+ ### [useDateInput](10-useDateInput.ts)
19
+
20
+ Choisir une date Chrono.
21
+
22
+ ### [useDualRangeInput](10-useDualRangeInput.ts)
23
+
24
+ Choisir les deux extrémités numériques d’une plage.
25
+
26
+ ### [useFileInput](10-useFileInput.ts)
27
+
28
+ Sélectionner un ou plusieurs fichiers.
29
+
30
+ ### [useNumberInput](10-useNumberInput.ts)
31
+
32
+ Saisir un nombre.
33
+
34
+ ### [useRadioGroup](10-useRadioGroup.ts)
35
+
36
+ Choisir une option avec des boutons radio.
37
+
38
+ ### [useRangeDateInput](10-useRangeDateInput.ts)
39
+
40
+ Choisir un intervalle de dates Chrono.
41
+
42
+ ### [useRangeInput](10-useRangeInput.ts)
43
+
44
+ Choisir un nombre avec un curseur.
45
+
46
+ ### [useRangeTimeInput](10-useRangeTimeInput.ts)
47
+
48
+ Choisir un intervalle d’heures Chrono.
49
+
50
+ ### [useSelectInput](10-useSelectInput.ts)
51
+
52
+ Choisir une option dans une liste déroulante.
53
+
54
+ ### [useTextInput](10-useTextInput.ts)
55
+
56
+ Saisir un texte court.
57
+
58
+ ### [useTextareaInput](10-useTextareaInput.ts)
59
+
60
+ Saisir un texte multiligne.
61
+
62
+ ### [useTimeInput](10-useTimeInput.ts)
63
+
64
+ Choisir une heure Chrono.
65
+
@@ -0,0 +1,3 @@
1
+ ### Design system
2
+
3
+ Composants et inputs prêts à l'emploi pour construire les formulaires et les commandes des templates Grid.
@@ -0,0 +1,20 @@
1
+ import { createGridTemplates } from "@duplojs/form/vueGrid";
2
+ import { templateFormAddButton, templateFormNextButton, templateFormPreviousButton, templateFormRemoveButton, templateFormResetButton, templateFormSelect } from "@duplojs/form/vueDesignSystem";
3
+
4
+ export const grid = createGridTemplates({
5
+ repeat: {
6
+ addLabel: "Add",
7
+ removeLabel: "Remove",
8
+ addButton: templateFormAddButton,
9
+ removeButton: templateFormRemoveButton,
10
+ resetButton: templateFormResetButton,
11
+ },
12
+ step: {
13
+ nextLabel: "Continue",
14
+ previousLabel: "Back",
15
+ nextButton: templateFormNextButton,
16
+ previousButton: templateFormPreviousButton,
17
+ resetButton: templateFormResetButton,
18
+ },
19
+ union: { selectInputKind: templateFormSelect },
20
+ });
@@ -0,0 +1,3 @@
1
+ ## Form pour Vue
2
+
3
+ Fabriques de formulaires, de champs et de templates pour l'intégration Vue.
@@ -0,0 +1,3 @@
1
+ # @duplojs/form
2
+
3
+ Construction de formulaires typés à partir de champs composables et de leurs validations.
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @title createComponent
3
+ *
4
+ * Définir une zone réutilisable et ses éléments, méthodes et composants enfants.
5
+ */
6
+ import type * as DCommon from "@duplojs/lang/common";
7
+ import { createComponent, type Website } from "@duplojs/playwright";
8
+
9
+ declare const website: Website;
10
+
11
+ const feedbackEngine = createComponent("feedback", {
12
+ getMainElement: ({ body }) => body.locator("[data-search-feedback]"),
13
+ });
14
+
15
+ const searchFormEngine = createComponent("search form", {
16
+ getMainElement: ({ body }) => body.locator("form[data-search]"),
17
+ getElements: ({ mainElement }) => ({
18
+ query: mainElement.locator("input[name='query']"),
19
+ submit: mainElement.locator("button[type='submit']"),
20
+ }),
21
+ getMethods: ({ elements }) => ({
22
+ async search(query: string) {
23
+ await elements.query.fill(query);
24
+ await elements.submit.click();
25
+ },
26
+ }),
27
+ components: [feedbackEngine],
28
+ });
29
+
30
+ const searchForm = searchFormEngine(website);
31
+ // Les éléments retournés par getElements deviennent les seules clés utilisables par les interactions.
32
+ type _CheckElementKeys = DCommon.ExpectType<
33
+ keyof typeof searchForm.elements,
34
+ "query" | "submit",
35
+ "strict"
36
+ >;
37
+ await searchForm.methods.search("TypeScript");
38
+
39
+ // La recherche par nom vérifie la visibilité de la racine et conserve le type de l’enfant.
40
+ const feedback = await searchForm.iWantToSeeComponent("feedback");
41
+ type _CheckFeedbackName = DCommon.ExpectType<
42
+ typeof feedback.name,
43
+ "feedback",
44
+ "strict"
45
+ >;
46
+ // Chaque fabrique enfant recherche sa racine depuis body, pas depuis la racine du parent.
47
+ // Les méthodes personnalisées sont exécutées dans des étapes Playwright.
@@ -0,0 +1,28 @@
1
+ /**
2
+ * @title createComponentInteraction
3
+ *
4
+ * Créer une interaction typée sur un élément nommé et une étape Playwright.
5
+ */
6
+ import { createComponent, createComponentInteraction, type Website } from "@duplojs/playwright";
7
+
8
+ declare const website: Website;
9
+
10
+ const articleListEngine = createComponent("article list", {
11
+ getMainElement: ({ body }) => body.locator("[data-article-list]"),
12
+ getElements: ({ mainElement }) => ({ articles: mainElement.locator("article") }),
13
+ });
14
+ const articleList = articleListEngine(website);
15
+
16
+ // Une interaction réutilisable lit l’identifiant métier d’un article de la liste.
17
+ const readArticleId = createComponentInteraction(
18
+ "$component: read id of $element",
19
+ ({ element }) => element.getAttribute("data-article-id"),
20
+ );
21
+
22
+ // Le tuple sélectionne le premier, le dernier ou l’élément d’indice zéro-based.
23
+ const firstId = await readArticleId(articleList, ["articles", "first"]);
24
+ await readArticleId(articleList, ["articles", "last"]);
25
+ await readArticleId(articleList, ["articles", 1]);
26
+ // Au runtime firstId vaut l’attribut ou null ; le retour public est typé Promise<any>.
27
+ // Les marqueurs du titre sont remplacés par le nom du composant et la désignation choisie.
28
+ // Une clé absente au runtime provoque MissingComponentElementError avant l’étape.
@@ -0,0 +1,34 @@
1
+ /**
2
+ * @title createPage
3
+ *
4
+ * Définir un écran navigable et son chemin typé.
5
+ */
6
+ import type * as DCommon from "@duplojs/lang/common";
7
+ import { createPage, type Website } from "@duplojs/playwright";
8
+
9
+ declare const website: Website;
10
+
11
+ const articlePage = createPage("article", {
12
+ makePath: ({ slug }: { slug: string }) => `/articles/${slug}`,
13
+ getMainElement: ({ body }) => body.locator("article"),
14
+ getElements: ({ mainElement }) => ({ title: mainElement.locator("h1") }),
15
+ });
16
+
17
+ // Le paramètre de makePath est requis par la navigation et choisit l’article affiché.
18
+ const introduction = await website.iNavigateTo(articlePage, { slug: "introduction" });
19
+ await website.iNavigateTo(articlePage, { slug: "testing" });
20
+
21
+ // La navigation conserve le nom littéral et les éléments propres à cette page.
22
+ type _CheckName = DCommon.ExpectType<
23
+ typeof introduction.name,
24
+ "article",
25
+ "strict"
26
+ >;
27
+ await introduction.elements.title.textContent();
28
+
29
+ // Une page sans paramètre de chemin se navigue sans argument supplémentaire.
30
+ const homePage = createPage("home", {
31
+ makePath: () => "/",
32
+ getMainElement: ({ body }) => body.locator("main"),
33
+ });
34
+ await website.iNavigateTo(homePage);
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @title createStepWrapper
3
+ *
4
+ * Envelopper des interactions dans une étape Playwright personnalisée.
5
+ */
6
+ import { createComponent, createComponentInteraction, createStepWrapper, type Website } from "@duplojs/playwright";
7
+
8
+ declare const website: Website;
9
+
10
+ const articleListEngine = createComponent("article list", {
11
+ getMainElement: ({ body }) => body.locator("[data-article-list]"),
12
+ getElements: ({ mainElement }) => ({ articles: mainElement.locator("article") }),
13
+ });
14
+ const articleList = articleListEngine(website);
15
+ const readArticleId = createComponentInteraction(
16
+ "$component: read id of $element",
17
+ ({ element }) => element.getAttribute("data-article-id"),
18
+ );
19
+
20
+ const withStep = createStepWrapper({ readArticleId });
21
+ // Le rapport contient l’étape nommée autour de l’étape propre à l’interaction.
22
+ const articleId = await withStep("Identifier le premier article").readArticleId(articleList, ["articles", "first"]);
23
+ // La valeur runtime est celle de l’interaction enveloppée ; son type public reste any.
@@ -0,0 +1,57 @@
1
+ /**
2
+ * @title createWebsite
3
+ *
4
+ * Construire le contexte du site et naviguer ou vérifier ses pages et composants.
5
+ */
6
+ import { createComponent, createPage, createWebsite } from "@duplojs/playwright";
7
+ import type { BrowserContext, Page } from "playwright/test";
8
+
9
+ declare const playwrightPage: Page;
10
+ declare const playwrightBrowserContext: BrowserContext;
11
+
12
+ const website = createWebsite({
13
+ playwrightPage,
14
+ playwrightBrowserContext,
15
+ envConfig: {
16
+ baseUrl: "https://example.com",
17
+ prefix: "admin",
18
+ },
19
+ hooks: {
20
+ beforeNavigateOnPage: () => playwrightPage.waitForLoadState(),
21
+ afterNavigateOnPage: () => playwrightPage.waitForLoadState(),
22
+ },
23
+ });
24
+ const dashboard = createPage("dashboard", {
25
+ makePath: () => "/dashboard",
26
+ getMainElement: ({ body }) => body.locator("main"),
27
+ });
28
+ const notice = createComponent("notice", {
29
+ getMainElement: ({ body }) => body.locator("[data-notice]"),
30
+ });
31
+
32
+ // URL https://example.com/admin/dashboard ; vérifie l’URL et la visibilité de la racine.
33
+ await website.iNavigateTo(dashboard);
34
+
35
+ // iGoTo navigue sans ces deux assertions ; les deux navigations exécutent les hooks.
36
+ await website.iGoTo(dashboard);
37
+ // racine visible, sans contrôle d’URL
38
+ await website.iWantToBeOnPage(dashboard);
39
+ // racine visible
40
+ await website.iWantToSee(notice);
41
+ // racine attachée au DOM
42
+ await website.iWantToExist(notice);
43
+ await website.iExpectTitleIs(/Dashboard/);
44
+ await website.iExpectUrlIs(/dashboard/);
45
+ await website.addCookies([
46
+ {
47
+ name: "session",
48
+ value: "token",
49
+ url: "https://example.com",
50
+ },
51
+ ]);
52
+ // retire le préfixe pour les prochaines navigations
53
+ website.setPrefix();
54
+ // recharge puis exécute le hook afterNavigateOnPage
55
+ await website.refresh();
56
+ // attend [aria-hydrated="true"] visible pendant 5 s au plus
57
+ await website.waitForHydration();
@@ -0,0 +1,38 @@
1
+ /**
2
+ * @title Initialiser un client de test Playwright
3
+ *
4
+ * Étendre le client Playwright avec une fixture Website DuploJS utilisable dans les tests.
5
+ */
6
+ import { createPage, createWebsite, type Website } from "@duplojs/playwright";
7
+ import test from "playwright/test";
8
+
9
+ interface TestFixtures {
10
+ website: Website;
11
+ }
12
+
13
+ // Playwright fournit une page et un contexte isolés pour chaque test.
14
+ export const testClient = test.extend<TestFixtures>({
15
+ async website({ page, context }, use) {
16
+ const website = createWebsite({
17
+ playwrightPage: page,
18
+ playwrightBrowserContext: context,
19
+ envConfig: {
20
+ baseUrl: "http://localhost:3000",
21
+ },
22
+ });
23
+
24
+ // La fixture met le Website à disposition pendant le test.
25
+ await use(website);
26
+ },
27
+ });
28
+
29
+ const homePage = createPage("home", {
30
+ makePath: () => "/",
31
+ getMainElement: ({ body }) => body.locator("main"),
32
+ });
33
+
34
+ // Les tests importent testClient et reçoivent la fixture typée parmi les fixtures Playwright.
35
+ testClient("le site affiche son titre", async({ website }) => {
36
+ await website.iNavigateTo(homePage);
37
+ await website.iExpectTitleIs(/Accueil/);
38
+ });
@@ -0,0 +1,28 @@
1
+ ## Construction
2
+
3
+ Fabriques de sites, pages, composants, interactions et wrappers de parcours.
4
+
5
+ ### [createComponent](10-createComponent.ts)
6
+
7
+ Définir une zone réutilisable et ses éléments, méthodes et composants enfants.
8
+
9
+ ### [createComponentInteraction](10-createComponentInteraction.ts)
10
+
11
+ Créer une interaction typée sur un élément nommé et une étape Playwright.
12
+
13
+ ### [createPage](10-createPage.ts)
14
+
15
+ Définir un écran navigable et son chemin typé.
16
+
17
+ ### [createStepWrapper](10-createStepWrapper.ts)
18
+
19
+ Envelopper des interactions dans une étape Playwright personnalisée.
20
+
21
+ ### [createWebsite](10-createWebsite.ts)
22
+
23
+ Construire le contexte du site et naviguer ou vérifier ses pages et composants.
24
+
25
+ ### [Initialiser un client de test Playwright](10-initClient.ts)
26
+
27
+ Étendre le client Playwright avec une fixture Website DuploJS utilisable dans les tests.
28
+
@@ -0,0 +1,3 @@
1
+ ## Construction
2
+
3
+ Fabriques de sites, pages, composants, interactions et wrappers de parcours.
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @title Actions.check
3
+ *
4
+ * Cocher un élément visible.
5
+ */
6
+ import { Actions } from "@duplojs/playwright";
7
+ import { searchForm } from "../fixtures/component";
8
+
9
+ await Actions.check(searchForm, "onlyPublished");
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @title Actions.clear
3
+ *
4
+ * Effacer un champ visible.
5
+ */
6
+ import { Actions } from "@duplojs/playwright";
7
+ import { searchForm } from "../fixtures/component";
8
+
9
+ await Actions.clear(searchForm, "query");
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @title Actions.click
3
+ *
4
+ * Cliquer sur un élément visible.
5
+ */
6
+ import { Actions } from "@duplojs/playwright";
7
+ import { searchForm } from "../fixtures/component";
8
+
9
+ await Actions.click(searchForm, "submit");
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @title Actions.dragTo
3
+ *
4
+ * Glisser un élément visible vers une cible visible.
5
+ */
6
+ import { Actions } from "@duplojs/playwright";
7
+ import { board } from "../fixtures/component";
8
+
9
+ // La source et la cible doivent être visibles avant le glisser-déposer.
10
+ await Actions.dragTo(board, "task", board.elements.doneColumn, { timeout: 5000 });
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @title Actions.extractContent
3
+ *
4
+ * Extraire le contenu textuel d’un élément visible.
5
+ */
6
+ import { Actions } from "@duplojs/playwright";
7
+ import { articleList } from "../fixtures/component";
8
+
9
+ // Le résultat runtime est le texte du titre, ou null si son contenu textuel est absent.
10
+ const title = await Actions.extractContent(articleList, "title");
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @title Actions.fill
3
+ *
4
+ * Remplacer la valeur d’un champ visible.
5
+ */
6
+ import { Actions } from "@duplojs/playwright";
7
+ import { searchForm } from "../fixtures/component";
8
+
9
+ await Actions.fill(searchForm, "query", "TypeScript");
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @title Actions.focus
3
+ *
4
+ * Donner le focus à un élément visible.
5
+ */
6
+ import { Actions } from "@duplojs/playwright";
7
+ import { searchForm } from "../fixtures/component";
8
+
9
+ await Actions.focus(searchForm, "query");
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @title Actions.forceClick
3
+ *
4
+ * Forcer le clic sans contrôle préalable de visibilité.
5
+ */
6
+ import { Actions } from "@duplojs/playwright";
7
+ import { navigation } from "../fixtures/component";
8
+
9
+ // Force le clic Playwright ; aucun contrôle préalable de visibilité n’est effectué.
10
+ await Actions.forceClick(navigation, "menuButton");
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @title Actions.hover
3
+ *
4
+ * Survoler un élément visible.
5
+ */
6
+ import { Actions } from "@duplojs/playwright";
7
+ import { navigation } from "../fixtures/component";
8
+
9
+ await Actions.hover(navigation, "menuButton");
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @title Actions.press
3
+ *
4
+ * Appuyer sur une touche dans un élément visible.
5
+ */
6
+ import { Actions } from "@duplojs/playwright";
7
+ import { searchForm } from "../fixtures/component";
8
+
9
+ await Actions.press(searchForm, "query", "Enter");
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @title Actions.selectOption
3
+ *
4
+ * Sélectionner des options et retourner leurs valeurs.
5
+ */
6
+ import { Actions } from "@duplojs/playwright";
7
+ import { searchForm } from "../fixtures/component";
8
+
9
+ // Le select autorise plusieurs valeurs ; au runtime, le résultat contient les valeurs sélectionnées.
10
+ const selected = await Actions.selectOption(searchForm, "categories", ["typescript", "testing"]);
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @title Actions.type
3
+ *
4
+ * Saisir le texte caractère par caractère dans un élément visible.
5
+ */
6
+ import { Actions } from "@duplojs/playwright";
7
+ import { searchForm } from "../fixtures/component";
8
+
9
+ // Contrairement à fill, la saisie déclenche une séquence de touches pour chaque caractère.
10
+ await Actions.type(searchForm, "query", "Ada", { delay: 20 });
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @title Actions.uncheck
3
+ *
4
+ * Décocher un élément visible.
5
+ */
6
+ import { Actions } from "@duplojs/playwright";
7
+ import { searchForm } from "../fixtures/component";
8
+
9
+ await Actions.uncheck(searchForm, "onlyPublished");
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @title Actions.withStep
3
+ *
4
+ * Ajouter une étape Playwright nommée autour d’une interaction.
5
+ */
6
+ import { Actions } from "@duplojs/playwright";
7
+ import { searchForm } from "../fixtures/component";
8
+
9
+ // Cette étape englobe celle produite par click dans le rapport Playwright.
10
+ await Actions.withStep("Lancer la recherche").click(searchForm, "submit");
@@ -0,0 +1,60 @@
1
+ ## Actions
2
+
3
+ Interactions avec les éléments nommés des pages et composants.
4
+
5
+ ### [Actions.check](10-check.ts)
6
+
7
+ Cocher un élément visible.
8
+
9
+ ### [Actions.clear](10-clear.ts)
10
+
11
+ Effacer un champ visible.
12
+
13
+ ### [Actions.click](10-click.ts)
14
+
15
+ Cliquer sur un élément visible.
16
+
17
+ ### [Actions.dragTo](10-dragTo.ts)
18
+
19
+ Glisser un élément visible vers une cible visible.
20
+
21
+ ### [Actions.extractContent](10-extractContent.ts)
22
+
23
+ Extraire le contenu textuel d’un élément visible.
24
+
25
+ ### [Actions.fill](10-fill.ts)
26
+
27
+ Remplacer la valeur d’un champ visible.
28
+
29
+ ### [Actions.focus](10-focus.ts)
30
+
31
+ Donner le focus à un élément visible.
32
+
33
+ ### [Actions.forceClick](10-forceClick.ts)
34
+
35
+ Forcer le clic sans contrôle préalable de visibilité.
36
+
37
+ ### [Actions.hover](10-hover.ts)
38
+
39
+ Survoler un élément visible.
40
+
41
+ ### [Actions.press](10-press.ts)
42
+
43
+ Appuyer sur une touche dans un élément visible.
44
+
45
+ ### [Actions.selectOption](10-selectOption.ts)
46
+
47
+ Sélectionner des options et retourner leurs valeurs.
48
+
49
+ ### [Actions.type](10-type.ts)
50
+
51
+ Saisir le texte caractère par caractère dans un élément visible.
52
+
53
+ ### [Actions.uncheck](10-uncheck.ts)
54
+
55
+ Décocher un élément visible.
56
+
57
+ ### [Actions.withStep](10-withStep.ts)
58
+
59
+ Ajouter une étape Playwright nommée autour d’une interaction.
60
+
@@ -0,0 +1,3 @@
1
+ ## Actions
2
+
3
+ Interactions avec les éléments nommés des pages et composants.
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @title Assertions.toBeBusy
3
+ *
4
+ * Vérifier aria-busy="true" sur un élément visible.
5
+ */
6
+ import { Assertions } from "@duplojs/playwright";
7
+ import { articleList } from "../fixtures/component";
8
+
9
+ // Exige aria-busy="true" sur cet élément visible.
10
+ await Assertions.toBeBusy(articleList, "loading");
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @title Assertions.toBeChecked
3
+ *
4
+ * Vérifier qu’un élément visible est coché.
5
+ */
6
+ import { Assertions } from "@duplojs/playwright";
7
+ import { searchForm } from "../fixtures/component";
8
+
9
+ await Assertions.toBeChecked(searchForm, "onlyPublished");
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @title Assertions.toBeDisabled
3
+ *
4
+ * Vérifier qu’un élément visible est désactivé.
5
+ */
6
+ import { Assertions } from "@duplojs/playwright";
7
+ import { searchForm } from "../fixtures/component";
8
+
9
+ await Assertions.toBeDisabled(searchForm, "submit");