@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,9 @@
1
+ /**
2
+ * @title Assertions.toBeEnabled
3
+ *
4
+ * Vérifier qu’un élément visible est activé.
5
+ */
6
+ import { Assertions } from "@duplojs/playwright";
7
+ import { searchForm } from "../fixtures/component";
8
+
9
+ await Assertions.toBeEnabled(searchForm, "submit");
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @title Assertions.toBeHidden
3
+ *
4
+ * Vérifier que l’élément est caché.
5
+ */
6
+ import { Assertions } from "@duplojs/playwright";
7
+ import { navigation } from "../fixtures/component";
8
+
9
+ await Assertions.toBeHidden(navigation, "menu");
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @title Assertions.toBeNotBusy
3
+ *
4
+ * Vérifier aria-busy="false" sur un élément visible.
5
+ */
6
+ import { Assertions } from "@duplojs/playwright";
7
+ import { articleList } from "../fixtures/component";
8
+
9
+ // Exige aria-busy="false", et non simplement l’absence de l’attribut.
10
+ await Assertions.toBeNotBusy(articleList, "loading");
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @title Assertions.toBeVisible
3
+ *
4
+ * Faire défiler jusqu’à l’élément puis vérifier sa visibilité.
5
+ */
6
+ import { Assertions } from "@duplojs/playwright";
7
+ import { navigation } from "../fixtures/component";
8
+
9
+ // L’élément est d’abord défilé dans la vue, puis sa visibilité est vérifiée.
10
+ await Assertions.toBeVisible(navigation, "menu");
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @title Assertions.toContainText
3
+ *
4
+ * Vérifier une partie du texte d’un élément visible.
5
+ */
6
+ import { Assertions } from "@duplojs/playwright";
7
+ import { articleList } from "../fixtures/component";
8
+
9
+ await Assertions.toContainText(articleList, "title", /TypeScript/);
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @title Assertions.toHaveAttribute
3
+ *
4
+ * Vérifier un attribut d’un élément visible.
5
+ */
6
+ import { Assertions } from "@duplojs/playwright";
7
+ import { navigation } from "../fixtures/component";
8
+
9
+ await Assertions.toHaveAttribute(navigation, "menuButton", "aria-expanded", "true");
10
+
11
+ // Sans valeur, l’attribut doit correspondre à /.+/ : une valeur vide ne suffit pas.
12
+ await Assertions.toHaveAttribute(navigation, "menuButton", "aria-controls");
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @title Assertions.toHaveClass
3
+ *
4
+ * Vérifier les classes d’un élément visible.
5
+ */
6
+ import { Assertions } from "@duplojs/playwright";
7
+ import { navigation } from "../fixtures/component";
8
+
9
+ await Assertions.toHaveClass(navigation, "menuButton", /active/);
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @title Assertions.toHaveNoText
3
+ *
4
+ * Vérifier que le texte d’un élément visible est vide.
5
+ */
6
+ import { Assertions } from "@duplojs/playwright";
7
+ import { searchForm } from "../fixtures/component";
8
+
9
+ // Le message visible doit avoir un texte vide.
10
+ await Assertions.toHaveNoText(searchForm, "feedback");
@@ -0,0 +1,20 @@
1
+ /**
2
+ * @title Assertions.toHaveQuantity
3
+ *
4
+ * Vérifier le nombre d’éléments correspondants.
5
+ */
6
+ import { Assertions } from "@duplojs/playwright";
7
+ import { articleList } from "../fixtures/component";
8
+
9
+ // Sans opérateur, ou avec "e", le nombre doit être exact.
10
+ await Assertions.toHaveQuantity(articleList, "articles", { quantity: 2 });
11
+
12
+ // Les bornes sont inclusives ; le comptage est réessayé pendant 5 secondes au plus.
13
+ await Assertions.toHaveQuantity(articleList, "articles", {
14
+ quantity: 1,
15
+ operator: "gte",
16
+ });
17
+ await Assertions.toHaveQuantity(articleList, "articles", {
18
+ quantity: 3,
19
+ operator: "lte",
20
+ });
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @title Assertions.toHaveText
3
+ *
4
+ * Vérifier le texte complet d’un élément visible.
5
+ */
6
+ import { Assertions } from "@duplojs/playwright";
7
+ import { articleList } from "../fixtures/component";
8
+
9
+ await Assertions.toHaveText(articleList, "title", "Introduction à TypeScript");
@@ -0,0 +1,9 @@
1
+ /**
2
+ * @title Assertions.toHaveValue
3
+ *
4
+ * Vérifier la valeur d’un élément visible.
5
+ */
6
+ import { Assertions } from "@duplojs/playwright";
7
+ import { searchForm } from "../fixtures/component";
8
+
9
+ await Assertions.toHaveValue(searchForm, "query", "TypeScript");
@@ -0,0 +1,10 @@
1
+ /**
2
+ * @title Assertions.withStep
3
+ *
4
+ * Ajouter une étape Playwright nommée autour d’une interaction.
5
+ */
6
+ import { Assertions } from "@duplojs/playwright";
7
+ import { searchForm } from "../fixtures/component";
8
+
9
+ // Cette étape englobe celle produite par l’assertion dans le rapport Playwright.
10
+ await Assertions.withStep("Vérifier la recherche").toBeEnabled(searchForm, "submit");
@@ -0,0 +1,64 @@
1
+ ## Assertions
2
+
3
+ Vérifications de l’état des éléments nommés des pages et composants.
4
+
5
+ ### [Assertions.toBeBusy](10-toBeBusy.ts)
6
+
7
+ Vérifier aria-busy="true" sur un élément visible.
8
+
9
+ ### [Assertions.toBeChecked](10-toBeChecked.ts)
10
+
11
+ Vérifier qu’un élément visible est coché.
12
+
13
+ ### [Assertions.toBeDisabled](10-toBeDisabled.ts)
14
+
15
+ Vérifier qu’un élément visible est désactivé.
16
+
17
+ ### [Assertions.toBeEnabled](10-toBeEnabled.ts)
18
+
19
+ Vérifier qu’un élément visible est activé.
20
+
21
+ ### [Assertions.toBeHidden](10-toBeHidden.ts)
22
+
23
+ Vérifier que l’élément est caché.
24
+
25
+ ### [Assertions.toBeNotBusy](10-toBeNotBusy.ts)
26
+
27
+ Vérifier aria-busy="false" sur un élément visible.
28
+
29
+ ### [Assertions.toBeVisible](10-toBeVisible.ts)
30
+
31
+ Faire défiler jusqu’à l’élément puis vérifier sa visibilité.
32
+
33
+ ### [Assertions.toContainText](10-toContainText.ts)
34
+
35
+ Vérifier une partie du texte d’un élément visible.
36
+
37
+ ### [Assertions.toHaveAttribute](10-toHaveAttribute.ts)
38
+
39
+ Vérifier un attribut d’un élément visible.
40
+
41
+ ### [Assertions.toHaveClass](10-toHaveClass.ts)
42
+
43
+ Vérifier les classes d’un élément visible.
44
+
45
+ ### [Assertions.toHaveNoText](10-toHaveNoText.ts)
46
+
47
+ Vérifier que le texte d’un élément visible est vide.
48
+
49
+ ### [Assertions.toHaveQuantity](10-toHaveQuantity.ts)
50
+
51
+ Vérifier le nombre d’éléments correspondants.
52
+
53
+ ### [Assertions.toHaveText](10-toHaveText.ts)
54
+
55
+ Vérifier le texte complet d’un élément visible.
56
+
57
+ ### [Assertions.toHaveValue](10-toHaveValue.ts)
58
+
59
+ Vérifier la valeur d’un élément visible.
60
+
61
+ ### [Assertions.withStep](10-withStep.ts)
62
+
63
+ Ajouter une étape Playwright nommée autour d’une interaction.
64
+
@@ -0,0 +1,3 @@
1
+ ## Assertions
2
+
3
+ Vérifications de l’état des éléments nommés des pages et composants.
@@ -0,0 +1,44 @@
1
+ import { createComponent, type Website } from "@duplojs/playwright";
2
+
3
+ declare const website: Website;
4
+
5
+ const searchFormEngine = createComponent("search form", {
6
+ getMainElement: ({ body }) => body.locator("form[data-search]"),
7
+ getElements: ({ mainElement }) => ({
8
+ query: mainElement.locator("input[name='query']"),
9
+ submit: mainElement.locator("button[type='submit']"),
10
+ onlyPublished: mainElement.locator("input[name='published']"),
11
+ categories: mainElement.locator("select[name='categories'][multiple]"),
12
+ feedback: mainElement.locator("[role='status']"),
13
+ }),
14
+ });
15
+
16
+ const articleListEngine = createComponent("article list", {
17
+ getMainElement: ({ body }) => body.locator("[data-article-list]"),
18
+ getElements: ({ mainElement }) => ({
19
+ articles: mainElement.locator("article"),
20
+ title: mainElement.locator("h2").first(),
21
+ loading: mainElement.locator("[data-loading]"),
22
+ }),
23
+ });
24
+
25
+ const navigationEngine = createComponent("navigation", {
26
+ getMainElement: ({ body }) => body.locator("nav"),
27
+ getElements: ({ mainElement }) => ({
28
+ menuButton: mainElement.locator("button[data-menu]"),
29
+ menu: mainElement.locator("[data-menu-items]"),
30
+ }),
31
+ });
32
+
33
+ const boardEngine = createComponent("kanban board", {
34
+ getMainElement: ({ body }) => body.locator("[data-board]"),
35
+ getElements: ({ mainElement }) => ({
36
+ task: mainElement.locator("[data-task='review']"),
37
+ doneColumn: mainElement.locator("[data-column='done']"),
38
+ }),
39
+ });
40
+
41
+ export const searchForm = searchFormEngine(website);
42
+ export const articleList = articleListEngine(website);
43
+ export const navigation = navigationEngine(website);
44
+ export const board = boardEngine(website);
@@ -0,0 +1,3 @@
1
+ # @duplojs/playwright
2
+
3
+ Fabriques de site, pages et composants, interactions et assertions pour les parcours E2E.
package/docs/API.llms.md CHANGED
@@ -29,3 +29,87 @@ Création, discrimination, transformation et propagation des réussites ou des
29
29
  ## [DGenerator](API/10-lang/10-generator/index.llms.md)
30
30
 
31
31
  Création et composition de génératrices synchrones ou asynchrones pour produire, transformer, filtrer, réduire et consommer des séquences de valeurs.
32
+
33
+ ## [DNumber](API/10-lang/10-number/index.llms.md)
34
+
35
+ Prédicats et transformations fonctionnelles pour comparer, vérifier, agréger et trier des nombres tout en conservant leurs contraintes de typage.
36
+
37
+ ## [DObject](API/10-lang/10-object/index.llms.md)
38
+
39
+ Fonctions fonctionnelles pour lire, discriminer, transformer, fusionner et reconstruire des objets en conservant les informations de typage utiles.
40
+
41
+ ## [DPath](API/10-lang/10-path/index.llms.md)
42
+
43
+ Chemins Unix typés : déclarer des littéraux, valider et normaliser des chaînes runtime, extraire des segments, résoudre des chemins ou sélectionner des motifs glob, indépendamment du système de fichiers.
44
+
45
+ ## [DPattern](API/10-lang/10-pattern/index.llms.md)
46
+
47
+ Sélectionner et traiter les variantes d’une union par identité, valeur littérale, motif structurel ou predicate, avec couverture exhaustive ou branche de repli.
48
+
49
+ ## [DPrinter](API/10-lang/10-printer/index.llms.md)
50
+
51
+ Fonctions et constantes pour assembler du texte, formater des lignes et paragraphes, ajouter une indentation ou des styles ANSI.
52
+
53
+ ## [DString](API/10-lang/10-string/index.llms.md)
54
+
55
+ Fonctions de manipulation, recherche, validation et transformation des chaînes de caractères, avec des formes curifiées et des contraintes de typage lorsque l'API peut les établir.
56
+
57
+ ## [DTuple](API/10-lang/10-tuple/index.llms.md)
58
+
59
+ Manipulation et typage des tuples : convertir les garanties de cardinalité en positions typées, puis transformer leurs éléments en conservant leur forme.
60
+
61
+ # @duplojs/json-web-token
62
+
63
+ Politiques JWT réutilisables, signature, chiffrement facultatif et primitives cryptographiques.
64
+
65
+ ## [TokenHandler](API/40-json-web-token/10-tokenHandler/index.llms.md)
66
+
67
+ Définir une politique et créer, décoder ou vérifier les tokens associés.
68
+
69
+ ## [Signer](API/40-json-web-token/20-signer/index.llms.md)
70
+
71
+ Configurer la signature et la vérification cryptographiques.
72
+
73
+ ## [Cipher](API/40-json-web-token/30-cipher/index.llms.md)
74
+
75
+ Configurer le chiffrement et le déchiffrement facultatifs des tokens.
76
+
77
+ ## [Utilitaires JWT](API/40-json-web-token/40-utils/index.llms.md)
78
+
79
+ Manipuler les encodages et les primitives cryptographiques publiques.
80
+
81
+ # @duplojs/form
82
+
83
+ Construction de formulaires typés à partir de champs composables et de leurs validations.
84
+
85
+ ## Form pour Vue
86
+
87
+ Fabriques de formulaires, de champs et de templates pour l'intégration Vue.
88
+
89
+ ### [Construction de formulaires](API/50-form/10-vue/10-construction/index.llms.md)
90
+
91
+ Fabriques de formulaires, de champs et de templates.
92
+
93
+ ### [Layouts](API/50-form/10-vue/20-layouts/index.llms.md)
94
+
95
+ Composition des champs et ajout de structure, validation, contrôle de flux et slots.
96
+
97
+ ### [Design system](API/50-form/10-vue/30-designSystem/index.llms.md)
98
+
99
+ Composants et inputs prêts à l'emploi pour construire les formulaires et les commandes des templates Grid.
100
+
101
+ # @duplojs/playwright
102
+
103
+ Fabriques de site, pages et composants, interactions et assertions pour les parcours E2E.
104
+
105
+ ## [Construction](API/60-playwright/10-construction/index.llms.md)
106
+
107
+ Fabriques de sites, pages, composants, interactions et wrappers de parcours.
108
+
109
+ ## [Actions](API/60-playwright/20-actions/index.llms.md)
110
+
111
+ Interactions avec les éléments nommés des pages et composants.
112
+
113
+ ## [Assertions](API/60-playwright/30-assertions/index.llms.md)
114
+
115
+ Vérifications de l’état des éléments nommés des pages et composants.
@@ -3,6 +3,7 @@
3
3
  *
4
4
  * Exploitation des contraintes par les fonctions DuploJS pour simplifier la manipulation des valeurs.
5
5
  */
6
+ import type * as DCommon from "@duplojs/lang/common";
6
7
  import * as DTuple from "@duplojs/lang/tuple";
7
8
  import * as DString from "@duplojs/lang/string";
8
9
  import * as DArray from "@duplojs/lang/array";
@@ -13,26 +14,28 @@ declare const userEmail: string & DString.Email;
13
14
 
14
15
  // Un email dans son format contenant obligatoirement un "@"
15
16
  // donne forcément un tableau avec minimum 2 éléments.
16
- // readonly string[] & DArray.MinElements<2>
17
17
  const splitEmail = DString.split(userEmail, "@");
18
+ type _CheckSplitEmail = DCommon.ExpectType<typeof splitEmail, readonly string[] & DArray.MinElements<2>, "strict">;
18
19
 
19
20
  // Le passage du tableau en tuple est fait en interprétant la contrainte
20
21
  // DArray.MinElements<2>, ce qui garantit au moins deux éléments, sans imposer une longueur exacte.
21
- // readonly [string, string, ...string[]]
22
22
  const [first, second, ...maybeRest] = DTuple.from(splitEmail);
23
+ type _CheckFirst = DCommon.ExpectType<typeof first, string, "strict">;
24
+ type _CheckSecond = DCommon.ExpectType<typeof second, string, "strict">;
25
+ type _CheckMaybeRest = DCommon.ExpectType<typeof maybeRest, string[], "strict">;
23
26
 
24
27
  // Les accès garantis par la cardinalité évitent le type string | undefined.
25
- // string
26
28
  const firstElement = DArray.first(splitEmail);
29
+ type _CheckFirstElement = DCommon.ExpectType<typeof firstElement, string, "strict">;
27
30
 
28
- // string
29
31
  const lastElement = DArray.last(splitEmail);
32
+ type _CheckLastElement = DCommon.ExpectType<typeof lastElement, string, "strict">;
30
33
 
31
- // string
32
34
  const secondElement = DArray.at(splitEmail, 1);
35
+ type _CheckSecondElement = DCommon.ExpectType<typeof secondElement, string, "strict">;
33
36
 
34
- // string | undefined
35
37
  const otherElement = DArray.at(splitEmail, 10);
38
+ type _CheckOtherElement = DCommon.ExpectType<typeof otherElement, string | undefined, "strict">;
36
39
 
37
40
  // Le résultat porte une garantie de cardinalité ; les fragments ne sont plus typés Email.
38
41
  // Privilégier les transformations immuables : une mutation pourrait invalider une garantie.
@@ -52,11 +52,15 @@ declare function createUser<
52
52
 
53
53
  // infer calcule les contraintes attendues tout en conservant la valeur littérale.
54
54
  // Il est adapté aux constantes connues statiquement et ne valide rien au runtime.
55
- createUser({
55
+ const inferredUser = createUser({
56
56
  name: DCommon.infer("thisIsASuperName"),
57
57
  age: DCommon.infer(18),
58
58
  });
59
- // {
60
- // name: "thisIsASuperName" & DString.MinCharacters<10>;
61
- // age: 18 & DNumber.GreaterThanOrEqual<18>;
62
- // }
59
+ type _CheckInferredUser = DCommon.ExpectType<
60
+ typeof inferredUser,
61
+ {
62
+ name: "thisIsASuperName" & DString.MinCharacters<10>;
63
+ age: 18 & DNumber.GreaterThanOrEqual<18>;
64
+ },
65
+ "strict"
66
+ >;
@@ -28,6 +28,11 @@ const normalizedTags = DCommon.pipe(
28
28
  DArray.filter(DString.isNotEmpty),
29
29
  DArray.map(DString.toLowerCase),
30
30
  );
31
+ type _CheckNormalizedTags = DCommon.ExpectType<
32
+ typeof normalizedTags,
33
+ readonly (Lowercase<string> & DString.MinCharacters<1>)[] & DArray.MaxElements<3>,
34
+ "strict"
35
+ >;
31
36
  // Résultat : ["typescript", "duplojs", "functional"].
32
37
  // Chaque étape reçoit la sortie précédente ; les types suivent ces transformations.
33
38
  // On peut ajouter, retirer ou réordonner les étapes sans restructurer le traitement.
@@ -21,7 +21,6 @@ import * as DSFile from "@duplojs/server/file";
21
21
  // Cette démarche s’applique à tous les packages ; les domaines ci-dessous sont des exemples.
22
22
 
23
23
  // Les fonctions de `string` et `array` sont faites pour être composées.
24
- // readonly (Lowercase<string> & DString.MinCharacters<1>)[] & DArray.MaxElements<4>
25
24
  const normalizedNames = DCommon.pipe(
26
25
  [" John ", "", " JANE ", " Alice "],
27
26
  DArray.map(DString.trim),
@@ -29,21 +28,22 @@ const normalizedNames = DCommon.pipe(
29
28
  DArray.map(DString.toLowerCase),
30
29
  DArray.sort(DString.sortCompare),
31
30
  );
31
+ type _CheckNormalizedNames = DCommon.ExpectType<
32
+ typeof normalizedNames,
33
+ readonly (Lowercase<string> & DString.MinCharacters<1>)[] & DArray.MaxElements<4>,
34
+ "strict"
35
+ >;
32
36
 
33
37
  // Les prédicats de `number` peuvent directement être utilisés
34
38
  // dans les fonctions de manipulation de tableaux.
35
- // number
36
39
  const adultAges = DCommon.pipe(
37
40
  [12, 18, 42, 8, 21],
38
41
  DArray.filter(DNumber.greaterThanOrEqual(18)),
39
42
  DNumber.sum,
40
43
  );
44
+ type _CheckAdultAges = DCommon.ExpectType<typeof adultAges, number, "strict">;
41
45
 
42
46
  // Les fonctions de `object` sont également prévues pour le pipe.
43
- // {
44
- // name: string & DString.Trimmed & DString.MaxCharacters<6>;
45
- // readonly age: 24;
46
- // }
47
47
  const publicUser = DCommon.pipe(
48
48
  {
49
49
  name: " John ",
@@ -53,10 +53,17 @@ const publicUser = DCommon.pipe(
53
53
  DObject.transformProperty("name", DString.trim),
54
54
  DObject.omit(["password"]),
55
55
  );
56
+ type _CheckPublicUser = DCommon.ExpectType<
57
+ typeof publicUser,
58
+ {
59
+ name: string & DString.Trimmed & DString.MaxCharacters<6>;
60
+ readonly age: 24;
61
+ },
62
+ "strict"
63
+ >;
56
64
 
57
65
  // `innerPipe` permet de composer plusieurs fonctions intégrées
58
66
  // directement à l'endroit où une callback est attendue.
59
- // readonly { name: Lowercase<string>; }[] & DArray.LengthEqual<2>
60
67
  const users = DCommon.pipe(
61
68
  [
62
69
  {
@@ -81,39 +88,43 @@ const users = DCommon.pipe(
81
88
  ),
82
89
  ),
83
90
  );
91
+ type _CheckUsers = DCommon.ExpectType<
92
+ typeof users,
93
+ readonly { name: Lowercase<string> }[] & DArray.LengthEqual<2>,
94
+ "strict"
95
+ >;
84
96
 
85
97
  // Les fonctions `Either` sont elles aussi composables avec les pipes.
86
98
  declare const maybeName:
87
99
  | DEither.Right<"user-found", string>
88
100
  | DEither.Left<"user-not-found">;
89
101
 
90
- // Lowercase<string>
91
102
  const name = DCommon.pipe(
92
103
  maybeName,
93
104
  DEither.unwrapOr("anonymous"),
94
105
  DString.trim,
95
106
  DString.toLowerCase,
96
107
  );
108
+ type _CheckName = DCommon.ExpectType<typeof name, Lowercase<string>, "strict">;
97
109
 
98
110
  // `Either` possède également ses propres pipes lorsque le traitement
99
111
  // doit continuer uniquement sur une valeur `Right`.
100
- // DEither.Left<"user-not-found", unknown> | DEither.Success<Lowercase<string>>
101
112
  const normalizedEitherName = DEither.rightPipe(
102
113
  maybeName,
103
114
  DString.trim,
104
115
  DString.toLowerCase,
105
116
  );
117
+ type _CheckNormalizedEitherName = DCommon.ExpectType<typeof normalizedEitherName, DEither.Left<"user-not-found", unknown> | DEither.Success<Lowercase<string>>, "strict">;
106
118
 
107
119
  // Les tuples disposent eux aussi de fonctions curifiées.
108
- // readonly [string & DString.Trimmed & DString.MaxCharacters<6>, string & DString.Trimmed & DString.MaxCharacters<6>]
109
120
  const normalizedTuple = DCommon.pipe(
110
121
  [" John ", " Jane "] as const,
111
122
  DTuple.map(DString.trim),
112
123
  );
124
+ type _CheckNormalizedTuple = DCommon.ExpectType<typeof normalizedTuple, readonly [string & DString.Trimmed & DString.MaxCharacters<6>, string & DString.Trimmed & DString.MaxCharacters<6>], "strict">;
113
125
 
114
126
  // Les generators permettent de construire des transformations lazy
115
127
  // avec exactement le même modèle de composition.
116
- // readonly (Lowercase<string> & DString.MinCharacters<1>)[]
117
128
  const generatedNames = DCommon.pipe(
118
129
  [" John ", "", " JANE ", " Alice "],
119
130
  DGenerator.map(DString.trim),
@@ -121,11 +132,11 @@ const generatedNames = DCommon.pipe(
121
132
  DGenerator.map(DString.toLowerCase),
122
133
  DArray.from,
123
134
  );
135
+ type _CheckGeneratedNames = DCommon.ExpectType<typeof generatedNames, readonly (Lowercase<string> & DString.MinCharacters<1>)[], "strict">;
124
136
 
125
137
  // Les fonctions de date peuvent être utilisées directement dans les pipes.
126
138
  declare const creationDate: DChrono.TheDate;
127
139
 
128
- // string
129
140
  const serializedCreationDate = DCommon.pipe(
130
141
  creationDate,
131
142
  DChrono.formatDate(
@@ -133,11 +144,11 @@ const serializedCreationDate = DCommon.pipe(
133
144
  "Europe/Paris",
134
145
  ),
135
146
  );
147
+ type _CheckSerializedCreationDate = DCommon.ExpectType<typeof serializedCreationDate, string, "strict">;
136
148
 
137
149
  // Le pattern matching fournit également des fonctions curifiées.
138
150
  declare const status: "draft" | "published" | "archived";
139
151
 
140
- // "Draft" | "Published" | "Archived"
141
152
  const statusLabel = DCommon.pipe(
142
153
  status,
143
154
  DPattern.matchWithStringOtherwise(
@@ -148,31 +159,32 @@ const statusLabel = DCommon.pipe(
148
159
  () => "Archived" as const,
149
160
  ),
150
161
  );
162
+ type _CheckStatusLabel = DCommon.ExpectType<typeof statusLabel, "Draft" | "Published" | "Archived", "strict">;
151
163
 
152
164
  // Les fonctions n'ont pas besoin d'être curifiées lorsqu'elles reçoivent
153
165
  // déjà la donnée comme unique argument : elles peuvent être utilisées
154
166
  // directement comme étape du pipe.
155
167
  declare const filePath: string & DPath.Path;
156
168
 
157
- // string & DString.Trimmed
158
169
  const fileContent = await DCommon.asyncPipe(
159
170
  filePath,
160
171
  DSFile.readTextFile,
161
172
  DEither.unwrapOr(""),
162
173
  DString.trim,
163
174
  );
175
+ type _CheckFileContent = DCommon.ExpectType<typeof fileContent, string & DString.Trimmed, "strict">;
164
176
 
165
177
  // Les fonctions curifiées existent également dans `@duplojs/server`.
166
- // DSFile.WriteTextFileResult
167
178
  const writeResult = await DCommon.asyncPipe(
168
179
  filePath,
169
180
  DSFile.writeTextFile("Hello world"),
170
181
  );
182
+ type _CheckWriteResult = DCommon.ExpectType<typeof writeResult, DSFile.WriteTextFileResult, "strict">;
171
183
 
172
184
  // Cela permet de composer des traitements provenant de plusieurs packages.
173
- // DCommon.Json | {}
174
185
  const jsonContent = await DCommon.asyncPipe(
175
186
  filePath,
176
187
  DSFile.readJsonFile,
177
188
  DEither.unwrapOr({}),
178
189
  );
190
+ type _CheckJsonContent = DCommon.ExpectType<typeof jsonContent, DCommon.Json | {}, "strict">;
@@ -6,11 +6,11 @@
6
6
  import * as DCommon from "@duplojs/lang/common";
7
7
  import * as DArray from "@duplojs/lang/array";
8
8
  import * as DString from "@duplojs/lang/string";
9
+ import type * as DNumber from "@duplojs/lang/number";
9
10
 
10
11
  // `innerPipe` permet d'enchaîner plusieurs transformations lorsqu'une
11
12
  // fonction de transformation est elle-même attendue.
12
13
  //
13
- // readonly (Lowercase<string> & DString.NotEmpty)[] & DArray.MaxElements<3>
14
14
  const normalizedTagsWithInnerPipe = DCommon.pipe(
15
15
  " TypeScript, DuploJS, Functional " as const,
16
16
  DString.split(","),
@@ -22,11 +22,15 @@ const normalizedTagsWithInnerPipe = DCommon.pipe(
22
22
  ),
23
23
  DArray.filter(DString.isNotEmpty),
24
24
  );
25
+ type _CheckNormalizedTagsWithInnerPipe = DCommon.ExpectType<
26
+ typeof normalizedTagsWithInnerPipe,
27
+ readonly (Lowercase<string> & DString.NotEmpty)[] & DArray.MaxElements<3>,
28
+ "strict"
29
+ >;
25
30
 
26
31
  // `innerPipe` évite de créer une callback intermédiaire uniquement
27
32
  // pour enchaîner plusieurs transformations.
28
33
  //
29
- // readonly (number & Positive)[] & DArray.LengthEqual<3> & DArray.MinElements<3> & DArray.MaxElements<3>
30
34
  const tagLengths = DCommon.pipe(
31
35
  " TypeScript, DuploJS, Functional " as const,
32
36
  DString.split(","),
@@ -37,3 +41,8 @@ const tagLengths = DCommon.pipe(
37
41
  ),
38
42
  ),
39
43
  );
44
+ type _CheckTagLengths = DCommon.ExpectType<
45
+ typeof tagLengths,
46
+ readonly (number & DNumber.Positive)[] & DArray.LengthEqual<3> & DArray.MinElements<3> & DArray.MaxElements<3>,
47
+ "strict"
48
+ >;