@bgord/tools 1.3.24 → 1.4.0

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 (504) hide show
  1. package/dist/src/age-years.vo.d.ts +11 -0
  2. package/dist/src/age-years.vo.js +6 -0
  3. package/dist/{age.vo.js → src/age.vo.js} +2 -1
  4. package/dist/src/api-key.vo.d.ts +7 -0
  5. package/dist/src/api-key.vo.js +7 -0
  6. package/dist/src/basename.vo.d.ts +12 -0
  7. package/dist/src/basename.vo.js +22 -0
  8. package/dist/src/day-iso-id.vo.d.ts +9 -0
  9. package/dist/{day-iso-id.vo.js → src/day-iso-id.vo.js} +4 -8
  10. package/dist/{day.vo.js → src/day.vo.js} +7 -6
  11. package/dist/src/directory-path-absolute.vo.d.ts +12 -0
  12. package/dist/{directory-path-absolute.vo.js → src/directory-path-absolute.vo.js} +5 -12
  13. package/dist/src/directory-path-relative.vo.d.ts +12 -0
  14. package/dist/{directory-path-relative.vo.js → src/directory-path-relative.vo.js} +5 -12
  15. package/dist/src/distance-value.vo.d.ts +7 -0
  16. package/dist/src/distance-value.vo.js +5 -0
  17. package/dist/{distance.vo.js → src/distance.vo.js} +7 -6
  18. package/dist/src/division-factor.vo.d.ts +7 -0
  19. package/dist/src/division-factor.vo.js +5 -0
  20. package/dist/src/duration-ms.vo.d.ts +6 -0
  21. package/dist/src/duration-ms.vo.js +5 -0
  22. package/dist/{duration.service.js → src/duration.service.js} +2 -1
  23. package/dist/src/email.vo.d.ts +6 -0
  24. package/dist/src/email.vo.js +4 -0
  25. package/dist/{etags.vo.js → src/etags.vo.js} +3 -2
  26. package/dist/src/extension.vo.d.ts +9 -0
  27. package/dist/src/extension.vo.js +15 -0
  28. package/dist/src/feature-flag-value.vo.d.ts +10 -0
  29. package/dist/{feature-flag-value.vo.js → src/feature-flag-value.vo.js} +2 -2
  30. package/dist/src/file-path-absolute-schema.vo.d.ts +17 -0
  31. package/dist/{file-path-absolute-schema.vo.js → src/file-path-absolute-schema.vo.js} +6 -13
  32. package/dist/src/file-path-relative-schema.vo.d.ts +17 -0
  33. package/dist/{file-path-relative-schema.vo.js → src/file-path-relative-schema.vo.js} +6 -13
  34. package/dist/{file-path.vo.js → src/file-path.vo.js} +5 -4
  35. package/dist/src/filename-affix.vo.d.ts +13 -0
  36. package/dist/{filename-affix.vo.js → src/filename-affix.vo.js} +4 -9
  37. package/dist/src/filename-from-string.vo.d.ts +10 -0
  38. package/dist/{filename-from-string.vo.js → src/filename-from-string.vo.js} +5 -8
  39. package/dist/{filename.vo.js → src/filename.vo.js} +8 -7
  40. package/dist/src/height-milimiters.vo.d.ts +7 -0
  41. package/dist/src/height-milimiters.vo.js +8 -0
  42. package/dist/{height.vo.js → src/height.vo.js} +4 -3
  43. package/dist/src/hour-value.vo.d.ts +7 -0
  44. package/dist/src/hour-value.vo.js +5 -0
  45. package/dist/{hour.vo.js → src/hour.vo.js} +3 -2
  46. package/dist/src/iban-schema.vo.d.ts +7 -0
  47. package/dist/src/iban-schema.vo.js +7 -0
  48. package/dist/{iban.vo.js → src/iban.vo.js} +2 -1
  49. package/dist/src/image.vo.d.ts +13 -0
  50. package/dist/src/image.vo.js +10 -0
  51. package/dist/src/integer-non-negative.vo.d.ts +7 -0
  52. package/dist/src/integer-non-negative.vo.js +8 -0
  53. package/dist/src/integer-positive.vo.d.ts +7 -0
  54. package/dist/src/integer-positive.vo.js +5 -0
  55. package/dist/src/integer.vo.d.ts +6 -0
  56. package/dist/src/integer.vo.js +4 -0
  57. package/dist/src/language.vo.d.ts +7 -0
  58. package/dist/{language.vo.js → src/language.vo.js} +2 -2
  59. package/dist/src/mime-value.vo.d.ts +7 -0
  60. package/dist/{mime-value.vo.js → src/mime-value.vo.js} +4 -7
  61. package/dist/{mime.vo.js → src/mime.vo.js} +2 -1
  62. package/dist/src/mimes.js +19 -0
  63. package/dist/src/minute-value.vo.d.ts +7 -0
  64. package/dist/src/minute-value.vo.js +5 -0
  65. package/dist/{minute.vo.js → src/minute.vo.js} +3 -2
  66. package/dist/src/money-amount.vo.d.ts +7 -0
  67. package/dist/src/money-amount.vo.js +5 -0
  68. package/dist/{money.vo.js → src/money.vo.js} +7 -6
  69. package/dist/src/month-iso-id.vo.d.ts +8 -0
  70. package/dist/{month-iso-id.vo.js → src/month-iso-id.vo.js} +5 -9
  71. package/dist/{month.vo.js → src/month.vo.js} +5 -4
  72. package/dist/src/multiplication-factor.vo.d.ts +7 -0
  73. package/dist/src/multiplication-factor.vo.js +8 -0
  74. package/dist/src/object-key.vo.d.ts +11 -0
  75. package/dist/src/object-key.vo.js +19 -0
  76. package/dist/src/package-version-schema.vo.d.ts +8 -0
  77. package/dist/{package-version-schema.vo.js → src/package-version-schema.vo.js} +4 -7
  78. package/dist/{package-version.vo.js → src/package-version.vo.js} +3 -4
  79. package/dist/src/pagination-page.vo.d.ts +6 -0
  80. package/dist/src/pagination-page.vo.js +3 -0
  81. package/dist/src/pagination-skip.vo.d.ts +7 -0
  82. package/dist/src/pagination-skip.vo.js +3 -0
  83. package/dist/src/pagination-take.vo.d.ts +7 -0
  84. package/dist/src/pagination-take.vo.js +3 -0
  85. package/dist/{pagination.service.js → src/pagination.service.js} +8 -7
  86. package/dist/src/quarter-iso-id.vo.d.ts +8 -0
  87. package/dist/src/quarter-iso-id.vo.js +7 -0
  88. package/dist/{quarter.vo.js → src/quarter.vo.js} +3 -2
  89. package/dist/src/reordering-item-position-value.vo.d.ts +6 -0
  90. package/dist/src/reordering-item-position-value.vo.js +3 -0
  91. package/dist/{reordering.service.d.ts → src/reordering.service.d.ts} +9 -9
  92. package/dist/{reordering.service.js → src/reordering.service.js} +7 -7
  93. package/dist/src/revision-value.vo.d.ts +7 -0
  94. package/dist/src/revision-value.vo.js +3 -0
  95. package/dist/{revision.vo.js → src/revision.vo.js} +3 -2
  96. package/dist/{rounding-decimal.strategy.d.ts → src/rounding-decimal.strategy.d.ts} +2 -2
  97. package/dist/src/rounding-decimal.strategy.js +14 -0
  98. package/dist/src/size-bytes.vo.d.ts +6 -0
  99. package/dist/src/size-bytes.vo.js +5 -0
  100. package/dist/{size.vo.js → src/size.vo.js} +5 -4
  101. package/dist/src/time-zone-offset-value.vo.d.ts +8 -0
  102. package/dist/src/time-zone-offset-value.vo.js +13 -0
  103. package/dist/src/timestamp-value.vo.d.ts +6 -0
  104. package/dist/src/timestamp-value.vo.js +5 -0
  105. package/dist/{timestamp.vo.js → src/timestamp.vo.js} +2 -1
  106. package/dist/src/timezone.vo.d.ts +9 -0
  107. package/dist/{timezone.vo.js → src/timezone.vo.js} +7 -10
  108. package/dist/src/url-with-slash.vo.d.ts +6 -0
  109. package/dist/src/url-with-slash.vo.js +5 -0
  110. package/dist/src/url-without-slash.vo.d.ts +6 -0
  111. package/dist/src/url-without-slash.vo.js +5 -0
  112. package/dist/src/week-iso-id.vo.d.ts +8 -0
  113. package/dist/{week-iso-id.vo.js → src/week-iso-id.vo.js} +5 -9
  114. package/dist/{week.vo.js → src/week.vo.js} +5 -4
  115. package/dist/src/weekday-iso-id.vo.d.ts +7 -0
  116. package/dist/src/weekday-iso-id.vo.js +5 -0
  117. package/dist/{weekday.vo.js → src/weekday.vo.js} +9 -8
  118. package/dist/src/weight-grams.vo.d.ts +7 -0
  119. package/dist/src/weight-grams.vo.js +5 -0
  120. package/dist/{weight.vo.js → src/weight.vo.js} +8 -7
  121. package/dist/src/year-iso-id.vo.d.ts +7 -0
  122. package/dist/src/year-iso-id.vo.js +7 -0
  123. package/dist/{year.vo.js → src/year.vo.js} +6 -5
  124. package/dist/tests/age-years.vo.test.d.ts +1 -0
  125. package/dist/tests/age-years.vo.test.js +24 -0
  126. package/dist/tests/age.vo.test.d.ts +1 -0
  127. package/dist/tests/age.vo.test.js +106 -0
  128. package/dist/tests/api-key.vo.test.d.ts +1 -0
  129. package/dist/tests/api-key.vo.test.js +24 -0
  130. package/dist/tests/basename.vo.test.d.ts +1 -0
  131. package/dist/tests/basename.vo.test.js +53 -0
  132. package/dist/tests/batch.test.d.ts +1 -0
  133. package/dist/tests/batch.test.js +24 -0
  134. package/dist/tests/date-calculator.service.test.d.ts +1 -0
  135. package/dist/tests/date-calculator.service.test.js +32 -0
  136. package/dist/tests/date-formatter.service.test.d.ts +1 -0
  137. package/dist/tests/date-formatter.service.test.js +22 -0
  138. package/dist/tests/date-range.vo.test.d.ts +1 -0
  139. package/dist/tests/date-range.vo.test.js +49 -0
  140. package/dist/tests/day-iso-id.vo.test.d.ts +1 -0
  141. package/dist/tests/day-iso-id.vo.test.js +36 -0
  142. package/dist/tests/day.vo.test.d.ts +1 -0
  143. package/dist/tests/day.vo.test.js +68 -0
  144. package/dist/tests/directory-path-absolute.vo.test.d.ts +1 -0
  145. package/dist/tests/directory-path-absolute.vo.test.js +47 -0
  146. package/dist/tests/directory-path-relative.vo.test.d.ts +1 -0
  147. package/dist/tests/directory-path-relative.vo.test.js +44 -0
  148. package/dist/tests/distance-value.vo.test.d.ts +1 -0
  149. package/dist/tests/distance-value.vo.test.js +21 -0
  150. package/dist/tests/distance.vo.test.d.ts +1 -0
  151. package/dist/tests/distance.vo.test.js +74 -0
  152. package/dist/tests/division-factor.vo.test.d.ts +1 -0
  153. package/dist/tests/division-factor.vo.test.js +21 -0
  154. package/dist/tests/dll.service.test.d.ts +1 -0
  155. package/dist/tests/dll.service.test.js +381 -0
  156. package/dist/tests/duration-ms.vo.test.d.ts +1 -0
  157. package/dist/tests/duration-ms.vo.test.js +18 -0
  158. package/dist/tests/duration.service.test.d.ts +1 -0
  159. package/dist/tests/duration.service.test.js +126 -0
  160. package/dist/tests/email-mask.service.test.d.ts +1 -0
  161. package/dist/tests/email-mask.service.test.js +15 -0
  162. package/dist/tests/email.vo.test.d.ts +1 -0
  163. package/dist/tests/email.vo.test.js +17 -0
  164. package/dist/tests/etags.vo.test.d.ts +1 -0
  165. package/dist/tests/etags.vo.test.js +54 -0
  166. package/dist/tests/extension.vo.test.d.ts +1 -0
  167. package/dist/tests/extension.vo.test.js +51 -0
  168. package/dist/tests/feature-flag-value.vo.test.d.ts +1 -0
  169. package/dist/tests/feature-flag-value.vo.test.js +12 -0
  170. package/dist/tests/feature-flag.vo.test.d.ts +1 -0
  171. package/dist/tests/feature-flag.vo.test.js +13 -0
  172. package/dist/tests/file-path-absolute-schema.vo.test.d.ts +1 -0
  173. package/dist/tests/file-path-absolute-schema.vo.test.js +53 -0
  174. package/dist/tests/file-path-relative-schema.vo.test.d.ts +1 -0
  175. package/dist/tests/file-path-relative-schema.vo.test.js +52 -0
  176. package/dist/tests/file-path.vo.test.d.ts +1 -0
  177. package/dist/tests/file-path.vo.test.js +74 -0
  178. package/dist/tests/filename-affix.vo.test.d.ts +1 -0
  179. package/dist/tests/filename-affix.vo.test.js +30 -0
  180. package/dist/tests/filename-from-string.vo.test.d.ts +1 -0
  181. package/dist/tests/filename-from-string.vo.test.js +37 -0
  182. package/dist/tests/filename.vo.test.d.ts +1 -0
  183. package/dist/tests/filename.vo.test.js +93 -0
  184. package/dist/tests/height-milimiters.vo.test.d.ts +1 -0
  185. package/dist/tests/height-milimiters.vo.test.js +21 -0
  186. package/dist/tests/height.vo.test.d.ts +1 -0
  187. package/dist/tests/height.vo.test.js +64 -0
  188. package/dist/tests/hour-value.vo.test.d.ts +1 -0
  189. package/dist/tests/hour-value.vo.test.js +24 -0
  190. package/dist/tests/hour.vo.test.d.ts +1 -0
  191. package/dist/tests/hour.vo.test.js +64 -0
  192. package/dist/tests/iban-mask.service.test.d.ts +1 -0
  193. package/dist/tests/iban-mask.service.test.js +13 -0
  194. package/dist/tests/iban-schema.vo.test.d.ts +1 -0
  195. package/dist/tests/iban-schema.vo.test.js +43 -0
  196. package/dist/tests/iban.vo.test.d.ts +1 -0
  197. package/dist/tests/iban.vo.test.js +46 -0
  198. package/dist/tests/image.vo.test.d.ts +1 -0
  199. package/dist/tests/image.vo.test.js +41 -0
  200. package/dist/tests/integer-non-negative.vo.test.d.ts +1 -0
  201. package/dist/tests/integer-non-negative.vo.test.js +22 -0
  202. package/dist/tests/integer-positive.vo.test.d.ts +1 -0
  203. package/dist/tests/integer-positive.vo.test.js +21 -0
  204. package/dist/tests/integer.vo.test.d.ts +1 -0
  205. package/dist/tests/integer.vo.test.js +21 -0
  206. package/dist/tests/language.vo.test.d.ts +1 -0
  207. package/dist/tests/language.vo.test.js +28 -0
  208. package/dist/tests/linear-regression.service.test.d.ts +1 -0
  209. package/dist/tests/linear-regression.service.test.js +111 -0
  210. package/dist/tests/mean.service.test.d.ts +1 -0
  211. package/dist/tests/mean.service.test.js +23 -0
  212. package/dist/tests/mime-registry-entry.vo.test.d.ts +1 -0
  213. package/dist/tests/mime-registry-entry.vo.test.js +15 -0
  214. package/dist/tests/mime-registry.service.test.d.ts +1 -0
  215. package/dist/tests/mime-registry.service.test.js +45 -0
  216. package/dist/tests/mime-value.vo.test.d.ts +1 -0
  217. package/dist/tests/mime-value.vo.test.js +49 -0
  218. package/dist/tests/mime.vo.test.d.ts +1 -0
  219. package/dist/tests/mime.vo.test.js +53 -0
  220. package/dist/tests/mimes.test.d.ts +1 -0
  221. package/dist/tests/mimes.test.js +28 -0
  222. package/dist/tests/min-max-scaler.service.test.d.ts +1 -0
  223. package/dist/tests/min-max-scaler.service.test.js +116 -0
  224. package/dist/tests/minute-value.vo.test.d.ts +1 -0
  225. package/dist/tests/minute-value.vo.test.js +24 -0
  226. package/dist/tests/minute.vo.test.d.ts +1 -0
  227. package/dist/tests/minute.vo.test.js +64 -0
  228. package/dist/tests/mocks.d.ts +6 -0
  229. package/dist/tests/mocks.js +7 -0
  230. package/dist/tests/money-amount.vo.test.d.ts +1 -0
  231. package/dist/tests/money-amount.vo.test.js +21 -0
  232. package/dist/tests/money.vo.test.d.ts +1 -0
  233. package/dist/tests/money.vo.test.js +90 -0
  234. package/dist/tests/month-iso-id.vo.test.d.ts +1 -0
  235. package/dist/tests/month-iso-id.vo.test.js +36 -0
  236. package/dist/tests/month.vo.test.d.ts +1 -0
  237. package/dist/tests/month.vo.test.js +65 -0
  238. package/dist/tests/multiplication-factor.vo.test.d.ts +1 -0
  239. package/dist/tests/multiplication-factor.vo.test.js +19 -0
  240. package/dist/tests/noop.test.d.ts +1 -0
  241. package/dist/tests/noop.test.js +12 -0
  242. package/dist/tests/object-key.vo.test.d.ts +1 -0
  243. package/dist/tests/object-key.vo.test.js +56 -0
  244. package/dist/tests/outlier-detector.service.test.d.ts +1 -0
  245. package/dist/tests/outlier-detector.service.test.js +35 -0
  246. package/dist/tests/package-version-schema.vo.test.d.ts +1 -0
  247. package/dist/tests/package-version-schema.vo.test.js +32 -0
  248. package/dist/tests/package-version.vo.test.d.ts +1 -0
  249. package/dist/tests/package-version.vo.test.js +138 -0
  250. package/dist/tests/pagination-page.vo.test.d.ts +1 -0
  251. package/dist/tests/pagination-page.vo.test.js +26 -0
  252. package/dist/tests/pagination-skip.vo.test.d.ts +1 -0
  253. package/dist/tests/pagination-skip.vo.test.js +23 -0
  254. package/dist/tests/pagination-take.vo.test.d.ts +1 -0
  255. package/dist/tests/pagination-take.vo.test.js +25 -0
  256. package/dist/tests/pagination.service.test.d.ts +1 -0
  257. package/dist/tests/pagination.service.test.js +92 -0
  258. package/dist/tests/percentage.service.test.d.ts +1 -0
  259. package/dist/tests/percentage.service.test.js +16 -0
  260. package/dist/tests/population-standard-deviation.service.test.d.ts +1 -0
  261. package/dist/tests/population-standard-deviation.service.test.js +20 -0
  262. package/dist/tests/quarter-iso-id.vo.test.d.ts +1 -0
  263. package/dist/tests/quarter-iso-id.vo.test.js +30 -0
  264. package/dist/tests/quarter.vo.test.d.ts +1 -0
  265. package/dist/tests/quarter.vo.test.js +54 -0
  266. package/dist/tests/random.service.test.d.ts +1 -0
  267. package/dist/tests/random.service.test.js +93 -0
  268. package/dist/tests/rate-limiter.service.test.d.ts +1 -0
  269. package/dist/tests/rate-limiter.service.test.js +39 -0
  270. package/dist/tests/relative-date.vo.test.d.ts +1 -0
  271. package/dist/tests/relative-date.vo.test.js +22 -0
  272. package/dist/tests/reordering-item-position-value.vo.test.d.ts +1 -0
  273. package/dist/tests/reordering-item-position-value.vo.test.js +21 -0
  274. package/dist/tests/reordering.service.test.d.ts +1 -0
  275. package/dist/tests/reordering.service.test.js +76 -0
  276. package/dist/tests/repeat.test.d.ts +1 -0
  277. package/dist/tests/repeat.test.js +8 -0
  278. package/dist/tests/revision-value.vo.test.d.ts +1 -0
  279. package/dist/tests/revision-value.vo.test.js +21 -0
  280. package/dist/tests/revision.vo.test.d.ts +1 -0
  281. package/dist/tests/revision.vo.test.js +52 -0
  282. package/dist/tests/rounding-decimal.strategy.test.d.ts +1 -0
  283. package/dist/tests/rounding-decimal.strategy.test.js +17 -0
  284. package/dist/tests/rounding-down.strategy.test.d.ts +1 -0
  285. package/dist/tests/rounding-down.strategy.test.js +9 -0
  286. package/dist/tests/rounding-to-nearest.strategy.test.d.ts +1 -0
  287. package/dist/tests/rounding-to-nearest.strategy.test.js +9 -0
  288. package/dist/tests/rounding-up.strategy.test.d.ts +1 -0
  289. package/dist/tests/rounding-up.strategy.test.js +9 -0
  290. package/dist/tests/size-bytes.vo.test.d.ts +1 -0
  291. package/dist/tests/size-bytes.vo.test.js +21 -0
  292. package/dist/tests/size.vo.test.d.ts +1 -0
  293. package/dist/tests/size.vo.test.js +93 -0
  294. package/dist/tests/slug.service.test.d.ts +1 -0
  295. package/dist/tests/slug.service.test.js +45 -0
  296. package/dist/tests/sum.service.test.d.ts +1 -0
  297. package/dist/tests/sum.service.test.js +22 -0
  298. package/dist/tests/thousands-separator.service.test.d.ts +1 -0
  299. package/dist/tests/thousands-separator.service.test.js +27 -0
  300. package/dist/tests/time-zone-offset-value.test.d.ts +1 -0
  301. package/dist/tests/time-zone-offset-value.test.js +27 -0
  302. package/dist/tests/timestamp-value.vo.test.d.ts +1 -0
  303. package/dist/tests/timestamp-value.vo.test.js +21 -0
  304. package/dist/tests/timestamp.vo.test.d.ts +1 -0
  305. package/dist/tests/timestamp.vo.test.js +73 -0
  306. package/dist/tests/timezone.vo.test.d.ts +1 -0
  307. package/dist/tests/timezone.vo.test.js +29 -0
  308. package/dist/tests/url-with-slash.vo.test.d.ts +1 -0
  309. package/dist/tests/url-with-slash.vo.test.js +24 -0
  310. package/dist/tests/url-without-slash.vo.test.d.ts +1 -0
  311. package/dist/tests/url-without-slash.vo.test.js +25 -0
  312. package/dist/tests/visually-unambiguous-characters-generator.service.test.d.ts +1 -0
  313. package/dist/tests/visually-unambiguous-characters-generator.service.test.js +89 -0
  314. package/dist/tests/week-iso-id.vo.test.d.ts +1 -0
  315. package/dist/tests/week-iso-id.vo.test.js +37 -0
  316. package/dist/tests/week.vo.test.d.ts +1 -0
  317. package/dist/tests/week.vo.test.js +64 -0
  318. package/dist/tests/weekday-iso-id.vo.test.d.ts +1 -0
  319. package/dist/tests/weekday-iso-id.vo.test.js +24 -0
  320. package/dist/tests/weekday.vo.test.d.ts +1 -0
  321. package/dist/tests/weekday.vo.test.js +51 -0
  322. package/dist/tests/weight-grams.vo.test.d.ts +1 -0
  323. package/dist/tests/weight-grams.vo.test.js +21 -0
  324. package/dist/tests/weight.vo.test.d.ts +1 -0
  325. package/dist/tests/weight.vo.test.js +66 -0
  326. package/dist/tests/year-iso-id.vo.test.d.ts +1 -0
  327. package/dist/tests/year-iso-id.vo.test.js +23 -0
  328. package/dist/tests/year.vo.test.d.ts +1 -0
  329. package/dist/tests/year.vo.test.js +79 -0
  330. package/dist/tests/z-score.service.test.d.ts +1 -0
  331. package/dist/tests/z-score.service.test.js +26 -0
  332. package/dist/tsconfig.tsbuildinfo +1 -1
  333. package/package.json +9 -12
  334. package/dist/age-years.vo.d.ts +0 -11
  335. package/dist/age-years.vo.js +0 -11
  336. package/dist/api-key.vo.d.ts +0 -8
  337. package/dist/api-key.vo.js +0 -11
  338. package/dist/basename.vo.d.ts +0 -12
  339. package/dist/basename.vo.js +0 -27
  340. package/dist/day-iso-id.vo.d.ts +0 -9
  341. package/dist/directory-path-absolute.vo.d.ts +0 -12
  342. package/dist/directory-path-relative.vo.d.ts +0 -12
  343. package/dist/distance-value.vo.d.ts +0 -7
  344. package/dist/distance-value.vo.js +0 -9
  345. package/dist/division-factor.vo.d.ts +0 -7
  346. package/dist/division-factor.vo.js +0 -8
  347. package/dist/duration-ms.vo.d.ts +0 -6
  348. package/dist/duration-ms.vo.js +0 -4
  349. package/dist/email.vo.d.ts +0 -6
  350. package/dist/email.vo.js +0 -4
  351. package/dist/extension.vo.d.ts +0 -9
  352. package/dist/extension.vo.js +0 -21
  353. package/dist/feature-flag-value.vo.d.ts +0 -10
  354. package/dist/file-path-absolute-schema.vo.d.ts +0 -14
  355. package/dist/file-path-relative-schema.vo.d.ts +0 -14
  356. package/dist/filename-affix.vo.d.ts +0 -13
  357. package/dist/filename-from-string.vo.d.ts +0 -10
  358. package/dist/height-milimiters.vo.d.ts +0 -7
  359. package/dist/height-milimiters.vo.js +0 -12
  360. package/dist/hour-value.vo.d.ts +0 -7
  361. package/dist/hour-value.vo.js +0 -10
  362. package/dist/iban-schema.vo.d.ts +0 -7
  363. package/dist/iban-schema.vo.js +0 -12
  364. package/dist/image.vo.d.ts +0 -13
  365. package/dist/image.vo.js +0 -20
  366. package/dist/integer-non-negative.vo.d.ts +0 -7
  367. package/dist/integer-non-negative.vo.js +0 -12
  368. package/dist/integer-positive.vo.d.ts +0 -7
  369. package/dist/integer-positive.vo.js +0 -9
  370. package/dist/integer.vo.d.ts +0 -6
  371. package/dist/integer.vo.js +0 -4
  372. package/dist/language.vo.d.ts +0 -7
  373. package/dist/mime-value.vo.d.ts +0 -6
  374. package/dist/mimes.js +0 -18
  375. package/dist/minute-value.vo.d.ts +0 -7
  376. package/dist/minute-value.vo.js +0 -10
  377. package/dist/money-amount.vo.d.ts +0 -7
  378. package/dist/money-amount.vo.js +0 -9
  379. package/dist/month-iso-id.vo.d.ts +0 -8
  380. package/dist/multiplication-factor.vo.d.ts +0 -7
  381. package/dist/multiplication-factor.vo.js +0 -11
  382. package/dist/object-key.vo.d.ts +0 -11
  383. package/dist/object-key.vo.js +0 -24
  384. package/dist/package-version-schema.vo.d.ts +0 -8
  385. package/dist/pagination-page.vo.d.ts +0 -6
  386. package/dist/pagination-page.vo.js +0 -7
  387. package/dist/pagination-skip.vo.d.ts +0 -7
  388. package/dist/pagination-skip.vo.js +0 -6
  389. package/dist/pagination-take.vo.d.ts +0 -7
  390. package/dist/pagination-take.vo.js +0 -6
  391. package/dist/quarter-iso-id.vo.d.ts +0 -7
  392. package/dist/quarter-iso-id.vo.js +0 -11
  393. package/dist/reordering-item-position-value.vo.d.ts +0 -6
  394. package/dist/reordering-item-position-value.vo.js +0 -6
  395. package/dist/revision-value.vo.d.ts +0 -7
  396. package/dist/revision-value.vo.js +0 -6
  397. package/dist/rounding-decimal.strategy.js +0 -19
  398. package/dist/size-bytes.vo.d.ts +0 -6
  399. package/dist/size-bytes.vo.js +0 -9
  400. package/dist/time-zone-offset-value.vo.d.ts +0 -8
  401. package/dist/time-zone-offset-value.vo.js +0 -17
  402. package/dist/timestamp-value.vo.d.ts +0 -6
  403. package/dist/timestamp-value.vo.js +0 -9
  404. package/dist/timezone.vo.d.ts +0 -9
  405. package/dist/url-with-slash.vo.d.ts +0 -6
  406. package/dist/url-with-slash.vo.js +0 -8
  407. package/dist/url-without-slash.vo.d.ts +0 -6
  408. package/dist/url-without-slash.vo.js +0 -8
  409. package/dist/week-iso-id.vo.d.ts +0 -8
  410. package/dist/weekday-iso-id.vo.d.ts +0 -7
  411. package/dist/weekday-iso-id.vo.js +0 -10
  412. package/dist/weight-grams.vo.d.ts +0 -7
  413. package/dist/weight-grams.vo.js +0 -9
  414. package/dist/year-iso-id.vo.d.ts +0 -7
  415. package/dist/year-iso-id.vo.js +0 -10
  416. package/dist/{age.vo.d.ts → src/age.vo.d.ts} +0 -0
  417. package/dist/{batch.d.ts → src/batch.d.ts} +0 -0
  418. package/dist/{batch.js → src/batch.js} +0 -0
  419. package/dist/{date-calculator.service.d.ts → src/date-calculator.service.d.ts} +0 -0
  420. package/dist/{date-calculator.service.js → src/date-calculator.service.js} +0 -0
  421. package/dist/{date-formatter.service.d.ts → src/date-formatter.service.d.ts} +0 -0
  422. package/dist/{date-formatter.service.js → src/date-formatter.service.js} +0 -0
  423. package/dist/{date-range.vo.d.ts → src/date-range.vo.d.ts} +0 -0
  424. package/dist/{date-range.vo.js → src/date-range.vo.js} +0 -0
  425. package/dist/{day.vo.d.ts → src/day.vo.d.ts} +1 -1
  426. /package/dist/{distance.vo.d.ts → src/distance.vo.d.ts} +0 -0
  427. /package/dist/{dll.service.d.ts → src/dll.service.d.ts} +0 -0
  428. /package/dist/{dll.service.js → src/dll.service.js} +0 -0
  429. /package/dist/{duration.service.d.ts → src/duration.service.d.ts} +0 -0
  430. /package/dist/{email-mask.service.d.ts → src/email-mask.service.d.ts} +0 -0
  431. /package/dist/{email-mask.service.js → src/email-mask.service.js} +0 -0
  432. /package/dist/{etags.vo.d.ts → src/etags.vo.d.ts} +0 -0
  433. /package/dist/{feature-flag.vo.d.ts → src/feature-flag.vo.d.ts} +0 -0
  434. /package/dist/{feature-flag.vo.js → src/feature-flag.vo.js} +0 -0
  435. /package/dist/{file-path.vo.d.ts → src/file-path.vo.d.ts} +0 -0
  436. /package/dist/{filename.vo.d.ts → src/filename.vo.d.ts} +0 -0
  437. /package/dist/{height.vo.d.ts → src/height.vo.d.ts} +0 -0
  438. /package/dist/{hour.vo.d.ts → src/hour.vo.d.ts} +0 -0
  439. /package/dist/{iban-mask.service.d.ts → src/iban-mask.service.d.ts} +0 -0
  440. /package/dist/{iban-mask.service.js → src/iban-mask.service.js} +0 -0
  441. /package/dist/{iban.vo.d.ts → src/iban.vo.d.ts} +0 -0
  442. /package/dist/{index.d.ts → src/index.d.ts} +0 -0
  443. /package/dist/{index.js → src/index.js} +0 -0
  444. /package/dist/{linear-regression.service.d.ts → src/linear-regression.service.d.ts} +0 -0
  445. /package/dist/{linear-regression.service.js → src/linear-regression.service.js} +0 -0
  446. /package/dist/{mean.service.d.ts → src/mean.service.d.ts} +0 -0
  447. /package/dist/{mean.service.js → src/mean.service.js} +0 -0
  448. /package/dist/{mime-registry-entry.vo.d.ts → src/mime-registry-entry.vo.d.ts} +0 -0
  449. /package/dist/{mime-registry-entry.vo.js → src/mime-registry-entry.vo.js} +0 -0
  450. /package/dist/{mime-registry.service.d.ts → src/mime-registry.service.d.ts} +0 -0
  451. /package/dist/{mime-registry.service.js → src/mime-registry.service.js} +0 -0
  452. /package/dist/{mime.vo.d.ts → src/mime.vo.d.ts} +0 -0
  453. /package/dist/{mimes.d.ts → src/mimes.d.ts} +0 -0
  454. /package/dist/{min-max-scaler.service.d.ts → src/min-max-scaler.service.d.ts} +0 -0
  455. /package/dist/{min-max-scaler.service.js → src/min-max-scaler.service.js} +0 -0
  456. /package/dist/{minute.vo.d.ts → src/minute.vo.d.ts} +0 -0
  457. /package/dist/{money.vo.d.ts → src/money.vo.d.ts} +0 -0
  458. /package/dist/{month.vo.d.ts → src/month.vo.d.ts} +0 -0
  459. /package/dist/{noop.service.d.ts → src/noop.service.d.ts} +0 -0
  460. /package/dist/{noop.service.js → src/noop.service.js} +0 -0
  461. /package/dist/{outlier-detector.service.d.ts → src/outlier-detector.service.d.ts} +0 -0
  462. /package/dist/{outlier-detector.service.js → src/outlier-detector.service.js} +0 -0
  463. /package/dist/{package-version.vo.d.ts → src/package-version.vo.d.ts} +0 -0
  464. /package/dist/{pagination.service.d.ts → src/pagination.service.d.ts} +0 -0
  465. /package/dist/{percentage.service.d.ts → src/percentage.service.d.ts} +0 -0
  466. /package/dist/{percentage.service.js → src/percentage.service.js} +0 -0
  467. /package/dist/{population-standard-deviation.service.d.ts → src/population-standard-deviation.service.d.ts} +0 -0
  468. /package/dist/{population-standard-deviation.service.js → src/population-standard-deviation.service.js} +0 -0
  469. /package/dist/{quarter.vo.d.ts → src/quarter.vo.d.ts} +0 -0
  470. /package/dist/{random.service.d.ts → src/random.service.d.ts} +0 -0
  471. /package/dist/{random.service.js → src/random.service.js} +0 -0
  472. /package/dist/{rate-limiter.service.d.ts → src/rate-limiter.service.d.ts} +0 -0
  473. /package/dist/{rate-limiter.service.js → src/rate-limiter.service.js} +0 -0
  474. /package/dist/{relative-date.vo.d.ts → src/relative-date.vo.d.ts} +0 -0
  475. /package/dist/{relative-date.vo.js → src/relative-date.vo.js} +0 -0
  476. /package/dist/{repeat.d.ts → src/repeat.d.ts} +0 -0
  477. /package/dist/{repeat.js → src/repeat.js} +0 -0
  478. /package/dist/{revision.vo.d.ts → src/revision.vo.d.ts} +0 -0
  479. /package/dist/{rounding-down.strategy.d.ts → src/rounding-down.strategy.d.ts} +0 -0
  480. /package/dist/{rounding-down.strategy.js → src/rounding-down.strategy.js} +0 -0
  481. /package/dist/{rounding-to-nearest.strategy.d.ts → src/rounding-to-nearest.strategy.d.ts} +0 -0
  482. /package/dist/{rounding-to-nearest.strategy.js → src/rounding-to-nearest.strategy.js} +0 -0
  483. /package/dist/{rounding-up.strategy.d.ts → src/rounding-up.strategy.d.ts} +0 -0
  484. /package/dist/{rounding-up.strategy.js → src/rounding-up.strategy.js} +0 -0
  485. /package/dist/{rounding.strategy.d.ts → src/rounding.strategy.d.ts} +0 -0
  486. /package/dist/{rounding.strategy.js → src/rounding.strategy.js} +0 -0
  487. /package/dist/{size.vo.d.ts → src/size.vo.d.ts} +0 -0
  488. /package/dist/{slug.service.d.ts → src/slug.service.d.ts} +0 -0
  489. /package/dist/{slug.service.js → src/slug.service.js} +0 -0
  490. /package/dist/{sum.service.d.ts → src/sum.service.d.ts} +0 -0
  491. /package/dist/{sum.service.js → src/sum.service.js} +0 -0
  492. /package/dist/{thousands-separator.service.d.ts → src/thousands-separator.service.d.ts} +0 -0
  493. /package/dist/{thousands-separator.service.js → src/thousands-separator.service.js} +0 -0
  494. /package/dist/{timestamp.vo.d.ts → src/timestamp.vo.d.ts} +0 -0
  495. /package/dist/{ts-utils.d.ts → src/ts-utils.d.ts} +0 -0
  496. /package/dist/{ts-utils.js → src/ts-utils.js} +0 -0
  497. /package/dist/{visually-unambiguous-characters-generator.service.d.ts → src/visually-unambiguous-characters-generator.service.d.ts} +0 -0
  498. /package/dist/{visually-unambiguous-characters-generator.service.js → src/visually-unambiguous-characters-generator.service.js} +0 -0
  499. /package/dist/{week.vo.d.ts → src/week.vo.d.ts} +0 -0
  500. /package/dist/{weekday.vo.d.ts → src/weekday.vo.d.ts} +0 -0
  501. /package/dist/{weight.vo.d.ts → src/weight.vo.d.ts} +0 -0
  502. /package/dist/{year.vo.d.ts → src/year.vo.d.ts} +0 -0
  503. /package/dist/{z-score.service.d.ts → src/z-score.service.d.ts} +0 -0
  504. /package/dist/{z-score.service.js → src/z-score.service.js} +0 -0
@@ -0,0 +1,11 @@
1
+ import * as v from "valibot";
2
+ export declare const AgeYearsError: {
3
+ Type: string;
4
+ Invalid: string;
5
+ };
6
+ export declare const AgeYearsConstraints: {
7
+ min: number;
8
+ max: number;
9
+ };
10
+ export declare const AgeYears: v.SchemaWithPipe<readonly [v.NumberSchema<string>, v.IntegerAction<number, string>, v.MinValueAction<number, 0, string>, v.MaxValueAction<number, 130, string>, v.BrandAction<number, "AgeYears">]>;
11
+ export type AgeYearsType = v.InferOutput<typeof AgeYears>;
@@ -0,0 +1,6 @@
1
+ import * as v from "valibot";
2
+ export const AgeYearsError = { Type: "age.years.type", Invalid: "age.years.invalid" };
3
+ export const AgeYearsConstraints = { min: 0, max: 130 };
4
+ export const AgeYears = v.pipe(v.number(AgeYearsError.Type), v.integer(AgeYearsError.Type), v.minValue(0, AgeYearsError.Invalid), v.maxValue(130, AgeYearsError.Invalid),
5
+ // Stryker disable next-line StringLiteral
6
+ v.brand("AgeYears"));
@@ -1,4 +1,5 @@
1
1
  import { differenceInYears } from "date-fns";
2
+ import * as v from "valibot";
2
3
  import { AgeYears, AgeYearsConstraints } from "./age-years.vo";
3
4
  import { Timestamp } from "./timestamp.vo";
4
5
  export const AgeError = { FutureBirthdate: "age.future.birthdate" };
@@ -10,7 +11,7 @@ export class Age {
10
11
  this.value = value;
11
12
  }
12
13
  static fromValue(candidate) {
13
- return new Age(AgeYears.parse(candidate));
14
+ return new Age(v.parse(AgeYears, candidate));
14
15
  }
15
16
  static fromValueSafe(candidate) {
16
17
  return new Age(candidate);
@@ -0,0 +1,7 @@
1
+ import * as v from "valibot";
2
+ export declare const ApiKeyError: {
3
+ Type: string;
4
+ BadChars: string;
5
+ };
6
+ export declare const ApiKey: v.SchemaWithPipe<readonly [v.StringSchema<string>, v.RegexAction<string, string>, v.BrandAction<string, "ApiKey">]>;
7
+ export type ApiKeyType = v.InferOutput<typeof ApiKey>;
@@ -0,0 +1,7 @@
1
+ import * as v from "valibot";
2
+ export const ApiKeyError = { Type: "api.key.type", BadChars: "api.key.bad.chars" };
3
+ // 64 letters and digits allowed
4
+ const API_KEY_CHARS = /^[a-zA-Z0-9]{64}$/;
5
+ export const ApiKey = v.pipe(v.string(ApiKeyError.Type), v.regex(API_KEY_CHARS, ApiKeyError.BadChars),
6
+ // Stryker disable next-line StringLiteral
7
+ v.brand("ApiKey"));
@@ -0,0 +1,12 @@
1
+ import * as v from "valibot";
2
+ export declare const BasenameError: {
3
+ Type: string;
4
+ Empty: string;
5
+ TooLong: string;
6
+ DotSegments: string;
7
+ Dotfiles: string;
8
+ TrailingDot: string;
9
+ BadChars: string;
10
+ };
11
+ export declare const Basename: v.SchemaWithPipe<readonly [v.StringSchema<string>, v.MinLengthAction<string, 1, string>, v.MaxLengthAction<string, 128, string>, v.CheckAction<string, string>, v.CheckAction<string, string>, v.CheckAction<string, string>, v.RegexAction<string, string>, v.BrandAction<string, "Basename">]>;
12
+ export type BasenameType = v.InferOutput<typeof Basename>;
@@ -0,0 +1,22 @@
1
+ import * as v from "valibot";
2
+ export const BasenameError = {
3
+ Type: "basename.type",
4
+ Empty: "basename.empty",
5
+ TooLong: "basename.too.long",
6
+ DotSegments: "basename.dot.segments",
7
+ Dotfiles: "basename.dotfiles",
8
+ TrailingDot: "basename.trailing.dot",
9
+ BadChars: "basename.bad.chars",
10
+ };
11
+ // Letters, digits, dots, underscores, and hyphens allowed
12
+ const BASENAME_CHARS = /^[a-zA-Z0-9._-]+$/;
13
+ const DOT_SEGMENTS = [".", ".."];
14
+ export const Basename = v.pipe(v.string(BasenameError.Type), v.minLength(1, BasenameError.Empty), v.maxLength(128, BasenameError.TooLong),
15
+ // Reject "." and ".." as a filename to avoid directory traversal
16
+ v.check((value) => !DOT_SEGMENTS.includes(value), BasenameError.DotSegments),
17
+ // Reject dotfiles like ".env"
18
+ v.check((value) => !value.startsWith("."), BasenameError.Dotfiles),
19
+ // Reject trailing dot like "picture." to avoid extension collision
20
+ v.check((value) => !value.endsWith("."), BasenameError.TrailingDot), v.regex(BASENAME_CHARS, BasenameError.BadChars),
21
+ // Stryker disable next-line StringLiteral
22
+ v.brand("Basename"));
@@ -0,0 +1,9 @@
1
+ import * as v from "valibot";
2
+ export declare const DayIsoIdError: {
3
+ Type: string;
4
+ BadChars: string;
5
+ InvalidDate: string;
6
+ };
7
+ export declare const DAY_ISO_ID_CHARS: RegExp;
8
+ export declare const DayIsoId: v.SchemaWithPipe<readonly [v.StringSchema<string>, v.RegexAction<string, string>, v.CheckAction<string, string>, v.BrandAction<string, "DayIsoId">]>;
9
+ export type DayIsoIdType = v.InferOutput<typeof DayIsoId>;
@@ -1,5 +1,5 @@
1
1
  import { isValid, parseISO } from "date-fns";
2
- import * as z from "zod/v4";
2
+ import * as v from "valibot";
3
3
  export const DayIsoIdError = {
4
4
  Type: "day.iso.id.type",
5
5
  BadChars: "day.iso.id.bad.chars",
@@ -7,10 +7,6 @@ export const DayIsoIdError = {
7
7
  };
8
8
  // Four digits, hyphen, two digits, hyphen, two digits
9
9
  export const DAY_ISO_ID_CHARS = /^[0-9]{4}-[0-9]{2}-[0-9]{2}$/;
10
- // Stryker disable all
11
- export const DayIsoId = z
12
- // Stryker restore all
13
- .string(DayIsoIdError.Type)
14
- .regex(DAY_ISO_ID_CHARS, DayIsoIdError.BadChars)
15
- .refine((value) => isValid(parseISO(value)), DayIsoIdError.InvalidDate)
16
- .brand("DayIsoId");
10
+ export const DayIsoId = v.pipe(v.string(DayIsoIdError.Type), v.regex(DAY_ISO_ID_CHARS, DayIsoIdError.BadChars), v.check((value) => isValid(parseISO(value)), DayIsoIdError.InvalidDate),
11
+ // Stryker disable next-line StringLiteral
12
+ v.brand("DayIsoId"));
@@ -1,4 +1,5 @@
1
1
  import { formatISO } from "date-fns";
2
+ import * as v from "valibot";
2
3
  import { DateRange } from "./date-range.vo";
3
4
  import { DayIsoId } from "./day-iso-id.vo";
4
5
  import { Duration } from "./duration.service";
@@ -18,20 +19,20 @@ export class Day extends DateRange {
18
19
  return Day.fromTimestamp(now);
19
20
  }
20
21
  static fromIsoId(isoId) {
21
- const [year, month, day] = DayIsoId.parse(isoId).split("-").map(Number);
22
+ const [year, month, day] = v.parse(DayIsoId, isoId).split("-").map(Number);
22
23
  const startUtc = Timestamp.fromNumber(Date.UTC(year, month - 1, day));
23
24
  const endUtc = startUtc.add(Duration.Days(1)).subtract(Duration.Ms(1));
24
25
  return new Day(startUtc, endUtc);
25
26
  }
26
27
  toIsoId() {
27
28
  const midday = this.getStart().add(Duration.Hours(12));
28
- return DayIsoId.parse(formatISO(midday.ms, { representation: "date" }));
29
- }
30
- next() {
31
- return this.shift(Integer.parse(1));
29
+ return v.parse(DayIsoId, formatISO(midday.ms, { representation: "date" }));
32
30
  }
33
31
  previous() {
34
- return this.shift(Integer.parse(-1));
32
+ return this.shift(v.parse(Integer, -1));
33
+ }
34
+ next() {
35
+ return this.shift(v.parse(Integer, 1));
35
36
  }
36
37
  shift(count) {
37
38
  return Day.fromTimestamp(this.getStart().add(Duration.Days(count)));
@@ -0,0 +1,12 @@
1
+ import * as v from "valibot";
2
+ export declare const DirectoryPathAbsoluteError: {
3
+ BadSegments: string;
4
+ Empty: string;
5
+ LeadingSlash: string;
6
+ TooLong: string;
7
+ TrailingSlash: string;
8
+ Type: string;
9
+ };
10
+ export declare const DIRECTORY_PATH_ABSOLUTE_CHARS: RegExp;
11
+ export declare const DirectoryPathAbsoluteSchema: v.SchemaWithPipe<readonly [v.StringSchema<string>, v.MinLengthAction<string, 1, string>, v.MaxLengthAction<string, 512, string>, v.CheckAction<string, string>, v.CheckAction<string, string>, v.CheckAction<string, string>, v.BrandAction<string, "DirectoryPathAbsoluteSchema">]>;
12
+ export type DirectoryPathAbsoluteType = v.InferOutput<typeof DirectoryPathAbsoluteSchema>;
@@ -1,4 +1,4 @@
1
- import * as z from "zod/v4";
1
+ import * as v from "valibot";
2
2
  export const DirectoryPathAbsoluteError = {
3
3
  BadSegments: "directory.path.absolue.bad.segments",
4
4
  Empty: "directory.path.absolue.empty",
@@ -10,18 +10,11 @@ export const DirectoryPathAbsoluteError = {
10
10
  // Letters, digits, dots, underscores, and hyphens
11
11
  export const DIRECTORY_PATH_ABSOLUTE_CHARS = /^[a-zA-Z0-9._-]+$/;
12
12
  const DOT_SEGMENTS = [".", ".."];
13
- // Stryker disable all
14
- export const DirectoryPathAbsoluteSchema = z
15
- // Stryker restore all
16
- .string(DirectoryPathAbsoluteError.Type)
17
- .min(1, DirectoryPathAbsoluteError.Empty)
18
- .max(512, DirectoryPathAbsoluteError.TooLong)
19
- .refine((value) => value.startsWith("/"), DirectoryPathAbsoluteError.LeadingSlash)
20
- .refine((value) => (value === "/" ? true : !value.endsWith("/")), DirectoryPathAbsoluteError.TrailingSlash)
21
- .refine((value) => {
13
+ export const DirectoryPathAbsoluteSchema = v.pipe(v.string(DirectoryPathAbsoluteError.Type), v.minLength(1, DirectoryPathAbsoluteError.Empty), v.maxLength(512, DirectoryPathAbsoluteError.TooLong), v.check((value) => value.startsWith("/"), DirectoryPathAbsoluteError.LeadingSlash), v.check((value) => (value === "/" ? true : !value.endsWith("/")), DirectoryPathAbsoluteError.TrailingSlash), v.check((value) => {
22
14
  if (value === "/")
23
15
  return true;
24
16
  const segments = value.slice(1).split("/");
25
17
  return segments.every((segment) => DIRECTORY_PATH_ABSOLUTE_CHARS.test(segment) && !DOT_SEGMENTS.includes(segment));
26
- }, DirectoryPathAbsoluteError.BadSegments)
27
- .brand("DirectoryPathAbsoluteSchema");
18
+ }, DirectoryPathAbsoluteError.BadSegments),
19
+ // Stryker disable next-line StringLiteral
20
+ v.brand("DirectoryPathAbsoluteSchema"));
@@ -0,0 +1,12 @@
1
+ import * as v from "valibot";
2
+ export declare const DirectoryPathRelativeError: {
3
+ BadSegments: string;
4
+ Empty: string;
5
+ LeadingSlash: string;
6
+ TooLong: string;
7
+ TrailingSlash: string;
8
+ Type: string;
9
+ };
10
+ export declare const DIRECTORY_PATH_RELATIVE_CHARS: RegExp;
11
+ export declare const DirectoryPathRelativeSchema: v.SchemaWithPipe<readonly [v.StringSchema<string>, v.MinLengthAction<string, 1, string>, v.MaxLengthAction<string, 512, string>, v.CheckAction<string, string>, v.CheckAction<string, string>, v.CheckAction<string, string>, v.BrandAction<string, "DirectoryPathRelativeSchema">]>;
12
+ export type DirectoryPathRelativeType = v.InferOutput<typeof DirectoryPathRelativeSchema>;
@@ -1,4 +1,4 @@
1
- import * as z from "zod/v4";
1
+ import * as v from "valibot";
2
2
  export const DirectoryPathRelativeError = {
3
3
  BadSegments: "directory.path.relative.bad.segments",
4
4
  Empty: "directory.path.relative.empty",
@@ -10,15 +10,8 @@ export const DirectoryPathRelativeError = {
10
10
  // Letters, digits, dots, underscores, and hyphens
11
11
  export const DIRECTORY_PATH_RELATIVE_CHARS = /^[A-Za-z0-9._-]+$/;
12
12
  const DOT_SEGMENTS = [".", ".."];
13
- // Stryker disable all
14
- export const DirectoryPathRelativeSchema = z
15
- // Stryker restore all
16
- .string(DirectoryPathRelativeError.Type)
17
- .min(1, DirectoryPathRelativeError.Empty)
18
- .max(512, DirectoryPathRelativeError.TooLong)
19
- .refine((value) => !value.startsWith("/"), DirectoryPathRelativeError.LeadingSlash)
20
- .refine((value) => !value.endsWith("/"), DirectoryPathRelativeError.TrailingSlash)
21
- .refine((value) => value
13
+ export const DirectoryPathRelativeSchema = v.pipe(v.string(DirectoryPathRelativeError.Type), v.minLength(1, DirectoryPathRelativeError.Empty), v.maxLength(512, DirectoryPathRelativeError.TooLong), v.check((value) => !value.startsWith("/"), DirectoryPathRelativeError.LeadingSlash), v.check((value) => !value.endsWith("/"), DirectoryPathRelativeError.TrailingSlash), v.check((value) => value
22
14
  .split("/")
23
- .every((segment) => DIRECTORY_PATH_RELATIVE_CHARS.test(segment) && !DOT_SEGMENTS.includes(segment)), DirectoryPathRelativeError.BadSegments)
24
- .brand("DirectoryPathRelativeSchema");
15
+ .every((segment) => DIRECTORY_PATH_RELATIVE_CHARS.test(segment) && !DOT_SEGMENTS.includes(segment)), DirectoryPathRelativeError.BadSegments),
16
+ // Stryker disable next-line StringLiteral
17
+ v.brand("DirectoryPathRelativeSchema"));
@@ -0,0 +1,7 @@
1
+ import * as v from "valibot";
2
+ export declare const DistanceValueError: {
3
+ Type: string;
4
+ Invalid: string;
5
+ };
6
+ export declare const DistanceValue: v.SchemaWithPipe<readonly [v.NumberSchema<string>, v.IntegerAction<number, string>, v.MinValueAction<number, 0, string>, v.BrandAction<number, "DistanceValue">]>;
7
+ export type DistanceValueType = v.InferOutput<typeof DistanceValue>;
@@ -0,0 +1,5 @@
1
+ import * as v from "valibot";
2
+ export const DistanceValueError = { Type: "distance.value.type", Invalid: "distance.value.invalid" };
3
+ export const DistanceValue = v.pipe(v.number(DistanceValueError.Type), v.integer(DistanceValueError.Type), v.minValue(0, DistanceValueError.Invalid),
4
+ // Stryker disable next-line StringLiteral
5
+ v.brand("DistanceValue"));
@@ -1,35 +1,36 @@
1
+ import * as v from "valibot";
1
2
  import { DistanceValue } from "./distance-value.vo";
2
3
  import { RoundingToNearestStrategy } from "./rounding-to-nearest.strategy";
3
4
  export const DistanceError = { SubtractResultLessThanZero: "distance.subtract.result.less.than.zero" };
4
5
  export class Distance {
5
6
  value;
6
- static ZERO = DistanceValue.parse(0);
7
+ static ZERO = v.parse(DistanceValue, 0);
7
8
  constructor(value) {
8
9
  this.value = value;
9
10
  }
10
11
  static fromMeters(candidate) {
11
- return new Distance(DistanceValue.parse(candidate));
12
+ return new Distance(v.parse(DistanceValue, candidate));
12
13
  }
13
14
  static fromMetersSafe(candidate) {
14
15
  return new Distance(candidate);
15
16
  }
16
17
  static fromKilometers(candidate, rounding = new RoundingToNearestStrategy()) {
17
- return new Distance(DistanceValue.parse(rounding.round(candidate * 1000)));
18
+ return new Distance(v.parse(DistanceValue, rounding.round(candidate * 1000)));
18
19
  }
19
20
  static fromMiles(candidate, rounding = new RoundingToNearestStrategy()) {
20
- return new Distance(DistanceValue.parse(rounding.round(candidate * 1_609.344)));
21
+ return new Distance(v.parse(DistanceValue, rounding.round(candidate * 1_609.344)));
21
22
  }
22
23
  get() {
23
24
  return this.value;
24
25
  }
25
26
  add(distance) {
26
- return new Distance(DistanceValue.parse(this.value + distance.get()));
27
+ return new Distance(v.parse(DistanceValue, this.value + distance.get()));
27
28
  }
28
29
  subtract(distance) {
29
30
  const result = this.value - distance.get();
30
31
  if (result < Distance.ZERO)
31
32
  throw new Error(DistanceError.SubtractResultLessThanZero);
32
- return new Distance(DistanceValue.parse(result));
33
+ return new Distance(v.parse(DistanceValue, result));
33
34
  }
34
35
  equals(another) {
35
36
  return this.value === another.get();
@@ -0,0 +1,7 @@
1
+ import * as v from "valibot";
2
+ export declare const DivisionFactorError: {
3
+ Type: string;
4
+ Invalid: string;
5
+ };
6
+ export declare const DivisionFactor: v.SchemaWithPipe<readonly [v.NumberSchema<string>, v.GtValueAction<number, 0, string>, v.BrandAction<number, "DivisionFactor">]>;
7
+ export type DivisionFactorType = v.InferOutput<typeof DivisionFactor>;
@@ -0,0 +1,5 @@
1
+ import * as v from "valibot";
2
+ export const DivisionFactorError = { Type: "division.factor.type", Invalid: "division.factor.invalid" };
3
+ export const DivisionFactor = v.pipe(v.number(DivisionFactorError.Type), v.gtValue(0, DivisionFactorError.Invalid),
4
+ // Stryker disable next-line StringLiteral
5
+ v.brand("DivisionFactor"));
@@ -0,0 +1,6 @@
1
+ import * as v from "valibot";
2
+ export declare const DurationMsError: {
3
+ Invalid: string;
4
+ };
5
+ export declare const DurationMs: v.SchemaWithPipe<readonly [v.NumberSchema<string>, v.IntegerAction<number, string>, v.BrandAction<number, "DurationMs">]>;
6
+ export type DurationMsType = v.InferOutput<typeof DurationMs>;
@@ -0,0 +1,5 @@
1
+ import * as v from "valibot";
2
+ export const DurationMsError = { Invalid: "duration.invalid" };
3
+ export const DurationMs = v.pipe(v.number(DurationMsError.Invalid), v.integer(DurationMsError.Invalid),
4
+ // Stryker disable next-line StringLiteral
5
+ v.brand("DurationMs"));
@@ -1,3 +1,4 @@
1
+ import * as v from "valibot";
1
2
  import { DurationMs } from "./duration-ms.vo";
2
3
  import { RoundingDecimalStrategy } from "./rounding-decimal.strategy";
3
4
  import { RoundingToNearestStrategy } from "./rounding-to-nearest.strategy";
@@ -12,7 +13,7 @@ export class Duration {
12
13
  static MS_IN_DAY = 24 * Duration.MS_IN_HOUR;
13
14
  static MS_IN_WEEK = 7 * Duration.MS_IN_DAY;
14
15
  constructor(candidateMs) {
15
- this.internal = DurationMs.parse(candidateMs);
16
+ this.internal = v.parse(DurationMs, candidateMs);
16
17
  }
17
18
  static Weeks(value) {
18
19
  return new Duration(value * Duration.MS_IN_WEEK);
@@ -0,0 +1,6 @@
1
+ import * as v from "valibot";
2
+ export declare const EmailError: {
3
+ Invalid: string;
4
+ };
5
+ export declare const Email: v.SchemaWithPipe<readonly [v.StringSchema<string>, v.EmailAction<string, string>, v.BrandAction<string, "Email">]>;
6
+ export type EmailType = v.InferOutput<typeof Email>;
@@ -0,0 +1,4 @@
1
+ import * as v from "valibot";
2
+ export const EmailError = { Invalid: "email.invalid" };
3
+ // Stryker disable next-line StringLiteral
4
+ export const Email = v.pipe(v.string(EmailError.Invalid), v.email(EmailError.Invalid), v.brand("Email"));
@@ -1,3 +1,4 @@
1
+ import * as v from "valibot";
1
2
  import { RevisionValue } from "./revision-value.vo";
2
3
  export class ETag {
3
4
  revision;
@@ -12,7 +13,7 @@ export class ETag {
12
13
  const candidate = Number(value);
13
14
  if (Number.isNaN(candidate))
14
15
  return null;
15
- return new ETag(RevisionValue.parse(candidate));
16
+ return new ETag(v.parse(RevisionValue, candidate));
16
17
  }
17
18
  }
18
19
  export const WeakETagError = { Invalid: "weak.etag.invalid" };
@@ -31,6 +32,6 @@ export class WeakETag {
31
32
  const candidate = Number(value.split("W/")[1]);
32
33
  if (Number.isNaN(candidate))
33
34
  return null;
34
- return new WeakETag(RevisionValue.parse(candidate));
35
+ return new WeakETag(v.parse(RevisionValue, candidate));
35
36
  }
36
37
  }
@@ -0,0 +1,9 @@
1
+ import * as v from "valibot";
2
+ export declare const ExtensionError: {
3
+ Type: string;
4
+ Empty: string;
5
+ TooLong: string;
6
+ BadChars: string;
7
+ };
8
+ export declare const Extension: v.SchemaWithPipe<readonly [v.StringSchema<string>, v.ToLowerCaseAction, v.TransformAction<string, string>, v.MinLengthAction<string, 2, string>, v.MaxLengthAction<string, 16, string>, v.CheckAction<string, string>, v.BrandAction<string, "Extension">]>;
9
+ export type ExtensionType = v.InferOutput<typeof Extension>;
@@ -0,0 +1,15 @@
1
+ import * as v from "valibot";
2
+ export const ExtensionError = {
3
+ Type: "extension.type",
4
+ Empty: "extension.empty",
5
+ TooLong: "extension.too.long",
6
+ BadChars: "extension.bad.chars",
7
+ };
8
+ // Lowercase letters and digits allowed
9
+ const EXTENSION_WHITELIST = /^[a-z0-9]+$/;
10
+ const LEADING_DOT_FILE = /^\./;
11
+ export const Extension = v.pipe(v.string(ExtensionError.Type), v.toLowerCase(),
12
+ // Transform ".png" -> "png"
13
+ v.transform((value) => value.replace(LEADING_DOT_FILE, "")), v.minLength(2, ExtensionError.Empty), v.maxLength(16, ExtensionError.TooLong), v.check((value) => EXTENSION_WHITELIST.test(value), ExtensionError.BadChars),
14
+ // Stryker disable next-line StringLiteral
15
+ v.brand("Extension"));
@@ -0,0 +1,10 @@
1
+ import * as v from "valibot";
2
+ export declare const FeatureFlagValueError: {
3
+ Invalid: string;
4
+ };
5
+ export declare enum FeatureFlagEnum {
6
+ yes = "yes",
7
+ no = "no"
8
+ }
9
+ export declare const FeatureFlagValue: v.PicklistSchema<FeatureFlagEnum[], string>;
10
+ export type FeatureFlagValueType = v.InferOutput<typeof FeatureFlagValue>;
@@ -1,8 +1,8 @@
1
- import * as z from "zod/v4";
1
+ import * as v from "valibot";
2
2
  export const FeatureFlagValueError = { Invalid: "feature.flag.value.invalid" };
3
3
  export var FeatureFlagEnum;
4
4
  (function (FeatureFlagEnum) {
5
5
  FeatureFlagEnum["yes"] = "yes";
6
6
  FeatureFlagEnum["no"] = "no";
7
7
  })(FeatureFlagEnum || (FeatureFlagEnum = {}));
8
- export const FeatureFlagValue = z.enum(FeatureFlagEnum, FeatureFlagValueError.Invalid);
8
+ export const FeatureFlagValue = v.picklist(Object.values(FeatureFlagEnum), FeatureFlagValueError.Invalid);
@@ -0,0 +1,17 @@
1
+ import * as v from "valibot";
2
+ import { Filename } from "./filename.vo";
3
+ export declare const FilePathAbsoluteSchemaError: {
4
+ Type: string;
5
+ LeadingSlash: string;
6
+ TrailingSlash: string;
7
+ BackslashForbidden: string;
8
+ Empty: string;
9
+ };
10
+ export declare const FilePathAbsoluteSchema: v.SchemaWithPipe<readonly [v.StringSchema<string>, v.MinLengthAction<string, 1, string>, v.CheckAction<string, string>, v.CheckAction<string, string>, v.CheckAction<string, string>, v.TransformAction<string, {
11
+ directory: string & v.Brand<"DirectoryPathAbsoluteSchema">;
12
+ filename: Filename;
13
+ }>, v.BrandAction<{
14
+ directory: string & v.Brand<"DirectoryPathAbsoluteSchema">;
15
+ filename: Filename;
16
+ }, "FilePathAbsoluteSchema">]>;
17
+ export type FilePathAbsoluteType = v.InferOutput<typeof FilePathAbsoluteSchema>;
@@ -1,4 +1,4 @@
1
- import * as z from "zod/v4";
1
+ import * as v from "valibot";
2
2
  import { DirectoryPathAbsoluteSchema } from "./directory-path-absolute.vo";
3
3
  import { Filename } from "./filename.vo";
4
4
  export const FilePathAbsoluteSchemaError = {
@@ -8,20 +8,13 @@ export const FilePathAbsoluteSchemaError = {
8
8
  BackslashForbidden: "file.path.absolute.backslash.forbidden",
9
9
  Empty: "file.path.absolute.empty",
10
10
  };
11
- // Stryker disable all
12
- export const FilePathAbsoluteSchema = z
13
- // Stryker restore all
14
- .string(FilePathAbsoluteSchemaError.Type)
15
- .min(1, FilePathAbsoluteSchemaError.Empty)
16
- .refine((value) => value.startsWith("/"), FilePathAbsoluteSchemaError.LeadingSlash)
17
- .refine((value) => !value.endsWith("/"), FilePathAbsoluteSchemaError.TrailingSlash)
18
- .refine((value) => !value.includes("\\"), FilePathAbsoluteSchemaError.BackslashForbidden)
19
- .transform((normalized) => {
11
+ export const FilePathAbsoluteSchema = v.pipe(v.string(FilePathAbsoluteSchemaError.Type), v.minLength(1, FilePathAbsoluteSchemaError.Empty), v.check((value) => value.startsWith("/"), FilePathAbsoluteSchemaError.LeadingSlash), v.check((value) => !value.endsWith("/"), FilePathAbsoluteSchemaError.TrailingSlash), v.check((value) => !value.includes("\\"), FilePathAbsoluteSchemaError.BackslashForbidden), v.transform((normalized) => {
20
12
  const index = normalized.lastIndexOf("/");
21
13
  const directoryCandidate = index === 0 ? "/" : normalized.slice(0, index);
22
14
  const filenameCandidate = normalized.slice(index + 1);
23
- const directory = DirectoryPathAbsoluteSchema.parse(directoryCandidate);
15
+ const directory = v.parse(DirectoryPathAbsoluteSchema, directoryCandidate);
24
16
  const filename = Filename.fromString(filenameCandidate);
25
17
  return { directory, filename };
26
- })
27
- .brand("FilePathAbsoluteSchema");
18
+ }),
19
+ // Stryker disable next-line StringLiteral
20
+ v.brand("FilePathAbsoluteSchema"));
@@ -0,0 +1,17 @@
1
+ import * as v from "valibot";
2
+ import { Filename } from "./filename.vo";
3
+ export declare const FilePathRelativeSchemaError: {
4
+ Type: string;
5
+ LeadingSlash: string;
6
+ BackslashForbidden: string;
7
+ RequiresDirectory: string;
8
+ Empty: string;
9
+ };
10
+ export declare const FilePathRelativeSchema: v.SchemaWithPipe<readonly [v.StringSchema<string>, v.MinLengthAction<string, 1, string>, v.CheckAction<string, string>, v.CheckAction<string, string>, v.CheckAction<string, string>, v.TransformAction<string, {
11
+ directory: string & v.Brand<"DirectoryPathRelativeSchema">;
12
+ filename: Filename;
13
+ }>, v.BrandAction<{
14
+ directory: string & v.Brand<"DirectoryPathRelativeSchema">;
15
+ filename: Filename;
16
+ }, "FilePathRelativeSchema">]>;
17
+ export type FilePathRelativeType = v.InferOutput<typeof FilePathRelativeSchema>;
@@ -1,4 +1,4 @@
1
- import * as z from "zod/v4";
1
+ import * as v from "valibot";
2
2
  import { DirectoryPathRelativeSchema } from "./directory-path-relative.vo";
3
3
  import { Filename } from "./filename.vo";
4
4
  export const FilePathRelativeSchemaError = {
@@ -8,20 +8,13 @@ export const FilePathRelativeSchemaError = {
8
8
  RequiresDirectory: "file.path.relative.requires.directory",
9
9
  Empty: "file.path.relative.empty",
10
10
  };
11
- // Stryker disable all
12
- export const FilePathRelativeSchema = z
13
- // Stryker restore all
14
- .string(FilePathRelativeSchemaError.Type)
15
- .min(1, FilePathRelativeSchemaError.Empty)
16
- .refine((value) => !value.startsWith("/"), FilePathRelativeSchemaError.LeadingSlash)
17
- .refine((value) => !value.includes("\\"), FilePathRelativeSchemaError.BackslashForbidden)
18
- .refine((value) => value.includes("/"), FilePathRelativeSchemaError.RequiresDirectory)
19
- .transform((normalized) => {
11
+ export const FilePathRelativeSchema = v.pipe(v.string(FilePathRelativeSchemaError.Type), v.minLength(1, FilePathRelativeSchemaError.Empty), v.check((value) => !value.startsWith("/"), FilePathRelativeSchemaError.LeadingSlash), v.check((value) => !value.includes("\\"), FilePathRelativeSchemaError.BackslashForbidden), v.check((value) => value.includes("/"), FilePathRelativeSchemaError.RequiresDirectory), v.transform((normalized) => {
20
12
  const lastSlashIndex = normalized.lastIndexOf("/");
21
13
  const directoryCandidate = normalized.slice(0, lastSlashIndex);
22
14
  const filenameCandidate = normalized.slice(lastSlashIndex + 1);
23
- const directory = DirectoryPathRelativeSchema.parse(directoryCandidate);
15
+ const directory = v.parse(DirectoryPathRelativeSchema, directoryCandidate);
24
16
  const filename = Filename.fromString(filenameCandidate);
25
17
  return { directory, filename };
26
- })
27
- .brand("FilePathRelativeSchema");
18
+ }),
19
+ // Stryker disable next-line StringLiteral
20
+ v.brand("FilePathRelativeSchema"));
@@ -1,3 +1,4 @@
1
+ import * as v from "valibot";
1
2
  import { DirectoryPathAbsoluteSchema } from "./directory-path-absolute.vo";
2
3
  import { DirectoryPathRelativeSchema } from "./directory-path-relative.vo";
3
4
  import { FilePathAbsoluteSchema } from "./file-path-absolute-schema.vo";
@@ -10,14 +11,14 @@ export class FilePathRelative {
10
11
  this.filename = filename;
11
12
  }
12
13
  static fromParts(directoryCandidate, filename) {
13
- const directory = DirectoryPathRelativeSchema.parse(directoryCandidate);
14
+ const directory = v.parse(DirectoryPathRelativeSchema, directoryCandidate);
14
15
  return new FilePathRelative(directory, filename);
15
16
  }
16
17
  static fromPartsSafe(directory, filename) {
17
18
  return new FilePathRelative(directory, filename);
18
19
  }
19
20
  static fromString(candidate) {
20
- const schema = FilePathRelativeSchema.parse(candidate);
21
+ const schema = v.parse(FilePathRelativeSchema, candidate);
21
22
  return new FilePathRelative(schema.directory, schema.filename);
22
23
  }
23
24
  get() {
@@ -47,14 +48,14 @@ export class FilePathAbsolute {
47
48
  this.filename = filename;
48
49
  }
49
50
  static fromParts(directoryCandidate, filename) {
50
- const directory = DirectoryPathAbsoluteSchema.parse(directoryCandidate);
51
+ const directory = v.parse(DirectoryPathAbsoluteSchema, directoryCandidate);
51
52
  return new FilePathAbsolute(directory, filename);
52
53
  }
53
54
  static fromPartsSafe(directory, filename) {
54
55
  return new FilePathAbsolute(directory, filename);
55
56
  }
56
57
  static fromString(candidate) {
57
- const schema = FilePathAbsoluteSchema.parse(candidate);
58
+ const schema = v.parse(FilePathAbsoluteSchema, candidate);
58
59
  return new FilePathAbsolute(schema.directory, schema.filename);
59
60
  }
60
61
  get() {
@@ -0,0 +1,13 @@
1
+ import * as v from "valibot";
2
+ export declare enum FilenameAffixStrategy {
3
+ prefix = "prefix",
4
+ suffix = "suffix"
5
+ }
6
+ export declare const FilenameAffixError: {
7
+ Type: string;
8
+ Empty: string;
9
+ TooLong: string;
10
+ BadChars: string;
11
+ };
12
+ export declare const FilenameAffix: v.SchemaWithPipe<readonly [v.StringSchema<string>, v.MinLengthAction<string, 1, string>, v.MaxLengthAction<string, 32, string>, v.RegexAction<string, string>, v.BrandAction<string, "FilenameAffix">]>;
13
+ export type FilenameAffixType = v.InferOutput<typeof FilenameAffix>;
@@ -1,4 +1,4 @@
1
- import * as z from "zod/v4";
1
+ import * as v from "valibot";
2
2
  export var FilenameAffixStrategy;
3
3
  (function (FilenameAffixStrategy) {
4
4
  FilenameAffixStrategy["prefix"] = "prefix";
@@ -12,11 +12,6 @@ export const FilenameAffixError = {
12
12
  };
13
13
  // Letters, digits, underscores, and hyphens allowed
14
14
  const FILENAME_AFFIX_WHITELIST = /^[a-zA-Z0-9_-]+$/;
15
- // Stryker disable all
16
- export const FilenameAffix = z
17
- // Stryker restore all
18
- .string(FilenameAffixError.Type)
19
- .min(1, FilenameAffixError.Empty)
20
- .max(32, FilenameAffixError.TooLong)
21
- .regex(FILENAME_AFFIX_WHITELIST, FilenameAffixError.BadChars)
22
- .brand("FilenameAffix");
15
+ export const FilenameAffix = v.pipe(v.string(FilenameAffixError.Type), v.minLength(1, FilenameAffixError.Empty), v.maxLength(32, FilenameAffixError.TooLong), v.regex(FILENAME_AFFIX_WHITELIST, FilenameAffixError.BadChars),
16
+ // Stryker disable next-line StringLiteral
17
+ v.brand("FilenameAffix"));
@@ -0,0 +1,10 @@
1
+ import * as v from "valibot";
2
+ export declare const FilenameFromStringError: {
3
+ Type: string;
4
+ Invalid: string;
5
+ };
6
+ export declare const FilenameFromString: v.SchemaWithPipe<readonly [v.StringSchema<string>, v.RegexAction<string, string>, v.TransformAction<string, {
7
+ basename: string & v.Brand<"Basename">;
8
+ extension: string & v.Brand<"Extension">;
9
+ }>]>;
10
+ export type FilenameFromStringType = v.InferOutput<typeof FilenameFromString>;