@bgord/tools 1.4.0 → 1.4.2

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 (425) hide show
  1. package/dist/{src/day.vo.d.ts → day.vo.d.ts} +1 -1
  2. package/dist/{src/day.vo.js → day.vo.js} +3 -3
  3. package/dist/{src/index.d.ts → index.d.ts} +1 -0
  4. package/dist/{src/index.js → index.js} +1 -0
  5. package/dist/int.vo.d.ts +8 -0
  6. package/dist/int.vo.js +15 -0
  7. package/dist/{src/month.vo.d.ts → month.vo.d.ts} +1 -1
  8. package/dist/{src/month.vo.js → month.vo.js} +3 -3
  9. package/dist/tsconfig.tsbuildinfo +1 -1
  10. package/dist/{src/week.vo.d.ts → week.vo.d.ts} +1 -1
  11. package/dist/{src/week.vo.js → week.vo.js} +3 -3
  12. package/dist/{src/year.vo.d.ts → year.vo.d.ts} +1 -1
  13. package/dist/{src/year.vo.js → year.vo.js} +3 -3
  14. package/package.json +2 -2
  15. package/readme.md +1 -0
  16. package/dist/tests/age-years.vo.test.d.ts +0 -1
  17. package/dist/tests/age-years.vo.test.js +0 -24
  18. package/dist/tests/age.vo.test.d.ts +0 -1
  19. package/dist/tests/age.vo.test.js +0 -106
  20. package/dist/tests/api-key.vo.test.d.ts +0 -1
  21. package/dist/tests/api-key.vo.test.js +0 -24
  22. package/dist/tests/basename.vo.test.d.ts +0 -1
  23. package/dist/tests/basename.vo.test.js +0 -53
  24. package/dist/tests/batch.test.d.ts +0 -1
  25. package/dist/tests/batch.test.js +0 -24
  26. package/dist/tests/date-calculator.service.test.d.ts +0 -1
  27. package/dist/tests/date-calculator.service.test.js +0 -32
  28. package/dist/tests/date-formatter.service.test.d.ts +0 -1
  29. package/dist/tests/date-formatter.service.test.js +0 -22
  30. package/dist/tests/date-range.vo.test.d.ts +0 -1
  31. package/dist/tests/date-range.vo.test.js +0 -49
  32. package/dist/tests/day-iso-id.vo.test.d.ts +0 -1
  33. package/dist/tests/day-iso-id.vo.test.js +0 -36
  34. package/dist/tests/day.vo.test.d.ts +0 -1
  35. package/dist/tests/day.vo.test.js +0 -68
  36. package/dist/tests/directory-path-absolute.vo.test.d.ts +0 -1
  37. package/dist/tests/directory-path-absolute.vo.test.js +0 -47
  38. package/dist/tests/directory-path-relative.vo.test.d.ts +0 -1
  39. package/dist/tests/directory-path-relative.vo.test.js +0 -44
  40. package/dist/tests/distance-value.vo.test.d.ts +0 -1
  41. package/dist/tests/distance-value.vo.test.js +0 -21
  42. package/dist/tests/distance.vo.test.d.ts +0 -1
  43. package/dist/tests/distance.vo.test.js +0 -74
  44. package/dist/tests/division-factor.vo.test.d.ts +0 -1
  45. package/dist/tests/division-factor.vo.test.js +0 -21
  46. package/dist/tests/dll.service.test.d.ts +0 -1
  47. package/dist/tests/dll.service.test.js +0 -381
  48. package/dist/tests/duration-ms.vo.test.d.ts +0 -1
  49. package/dist/tests/duration-ms.vo.test.js +0 -18
  50. package/dist/tests/duration.service.test.d.ts +0 -1
  51. package/dist/tests/duration.service.test.js +0 -126
  52. package/dist/tests/email-mask.service.test.d.ts +0 -1
  53. package/dist/tests/email-mask.service.test.js +0 -15
  54. package/dist/tests/email.vo.test.d.ts +0 -1
  55. package/dist/tests/email.vo.test.js +0 -17
  56. package/dist/tests/etags.vo.test.d.ts +0 -1
  57. package/dist/tests/etags.vo.test.js +0 -54
  58. package/dist/tests/extension.vo.test.d.ts +0 -1
  59. package/dist/tests/extension.vo.test.js +0 -51
  60. package/dist/tests/feature-flag-value.vo.test.d.ts +0 -1
  61. package/dist/tests/feature-flag-value.vo.test.js +0 -12
  62. package/dist/tests/feature-flag.vo.test.d.ts +0 -1
  63. package/dist/tests/feature-flag.vo.test.js +0 -13
  64. package/dist/tests/file-path-absolute-schema.vo.test.d.ts +0 -1
  65. package/dist/tests/file-path-absolute-schema.vo.test.js +0 -53
  66. package/dist/tests/file-path-relative-schema.vo.test.d.ts +0 -1
  67. package/dist/tests/file-path-relative-schema.vo.test.js +0 -52
  68. package/dist/tests/file-path.vo.test.d.ts +0 -1
  69. package/dist/tests/file-path.vo.test.js +0 -74
  70. package/dist/tests/filename-affix.vo.test.d.ts +0 -1
  71. package/dist/tests/filename-affix.vo.test.js +0 -30
  72. package/dist/tests/filename-from-string.vo.test.d.ts +0 -1
  73. package/dist/tests/filename-from-string.vo.test.js +0 -37
  74. package/dist/tests/filename.vo.test.d.ts +0 -1
  75. package/dist/tests/filename.vo.test.js +0 -93
  76. package/dist/tests/height-milimiters.vo.test.d.ts +0 -1
  77. package/dist/tests/height-milimiters.vo.test.js +0 -21
  78. package/dist/tests/height.vo.test.d.ts +0 -1
  79. package/dist/tests/height.vo.test.js +0 -64
  80. package/dist/tests/hour-value.vo.test.d.ts +0 -1
  81. package/dist/tests/hour-value.vo.test.js +0 -24
  82. package/dist/tests/hour.vo.test.d.ts +0 -1
  83. package/dist/tests/hour.vo.test.js +0 -64
  84. package/dist/tests/iban-mask.service.test.d.ts +0 -1
  85. package/dist/tests/iban-mask.service.test.js +0 -13
  86. package/dist/tests/iban-schema.vo.test.d.ts +0 -1
  87. package/dist/tests/iban-schema.vo.test.js +0 -43
  88. package/dist/tests/iban.vo.test.d.ts +0 -1
  89. package/dist/tests/iban.vo.test.js +0 -46
  90. package/dist/tests/image.vo.test.d.ts +0 -1
  91. package/dist/tests/image.vo.test.js +0 -41
  92. package/dist/tests/integer-non-negative.vo.test.d.ts +0 -1
  93. package/dist/tests/integer-non-negative.vo.test.js +0 -22
  94. package/dist/tests/integer-positive.vo.test.d.ts +0 -1
  95. package/dist/tests/integer-positive.vo.test.js +0 -21
  96. package/dist/tests/integer.vo.test.d.ts +0 -1
  97. package/dist/tests/integer.vo.test.js +0 -21
  98. package/dist/tests/language.vo.test.d.ts +0 -1
  99. package/dist/tests/language.vo.test.js +0 -28
  100. package/dist/tests/linear-regression.service.test.d.ts +0 -1
  101. package/dist/tests/linear-regression.service.test.js +0 -111
  102. package/dist/tests/mean.service.test.d.ts +0 -1
  103. package/dist/tests/mean.service.test.js +0 -23
  104. package/dist/tests/mime-registry-entry.vo.test.d.ts +0 -1
  105. package/dist/tests/mime-registry-entry.vo.test.js +0 -15
  106. package/dist/tests/mime-registry.service.test.d.ts +0 -1
  107. package/dist/tests/mime-registry.service.test.js +0 -45
  108. package/dist/tests/mime-value.vo.test.d.ts +0 -1
  109. package/dist/tests/mime-value.vo.test.js +0 -49
  110. package/dist/tests/mime.vo.test.d.ts +0 -1
  111. package/dist/tests/mime.vo.test.js +0 -53
  112. package/dist/tests/mimes.test.d.ts +0 -1
  113. package/dist/tests/mimes.test.js +0 -28
  114. package/dist/tests/min-max-scaler.service.test.d.ts +0 -1
  115. package/dist/tests/min-max-scaler.service.test.js +0 -116
  116. package/dist/tests/minute-value.vo.test.d.ts +0 -1
  117. package/dist/tests/minute-value.vo.test.js +0 -24
  118. package/dist/tests/minute.vo.test.d.ts +0 -1
  119. package/dist/tests/minute.vo.test.js +0 -64
  120. package/dist/tests/mocks.d.ts +0 -6
  121. package/dist/tests/mocks.js +0 -7
  122. package/dist/tests/money-amount.vo.test.d.ts +0 -1
  123. package/dist/tests/money-amount.vo.test.js +0 -21
  124. package/dist/tests/money.vo.test.d.ts +0 -1
  125. package/dist/tests/money.vo.test.js +0 -90
  126. package/dist/tests/month-iso-id.vo.test.d.ts +0 -1
  127. package/dist/tests/month-iso-id.vo.test.js +0 -36
  128. package/dist/tests/month.vo.test.d.ts +0 -1
  129. package/dist/tests/month.vo.test.js +0 -65
  130. package/dist/tests/multiplication-factor.vo.test.d.ts +0 -1
  131. package/dist/tests/multiplication-factor.vo.test.js +0 -19
  132. package/dist/tests/noop.test.d.ts +0 -1
  133. package/dist/tests/noop.test.js +0 -12
  134. package/dist/tests/object-key.vo.test.d.ts +0 -1
  135. package/dist/tests/object-key.vo.test.js +0 -56
  136. package/dist/tests/outlier-detector.service.test.d.ts +0 -1
  137. package/dist/tests/outlier-detector.service.test.js +0 -35
  138. package/dist/tests/package-version-schema.vo.test.d.ts +0 -1
  139. package/dist/tests/package-version-schema.vo.test.js +0 -32
  140. package/dist/tests/package-version.vo.test.d.ts +0 -1
  141. package/dist/tests/package-version.vo.test.js +0 -138
  142. package/dist/tests/pagination-page.vo.test.d.ts +0 -1
  143. package/dist/tests/pagination-page.vo.test.js +0 -26
  144. package/dist/tests/pagination-skip.vo.test.d.ts +0 -1
  145. package/dist/tests/pagination-skip.vo.test.js +0 -23
  146. package/dist/tests/pagination-take.vo.test.d.ts +0 -1
  147. package/dist/tests/pagination-take.vo.test.js +0 -25
  148. package/dist/tests/pagination.service.test.d.ts +0 -1
  149. package/dist/tests/pagination.service.test.js +0 -92
  150. package/dist/tests/percentage.service.test.d.ts +0 -1
  151. package/dist/tests/percentage.service.test.js +0 -16
  152. package/dist/tests/population-standard-deviation.service.test.d.ts +0 -1
  153. package/dist/tests/population-standard-deviation.service.test.js +0 -20
  154. package/dist/tests/quarter-iso-id.vo.test.d.ts +0 -1
  155. package/dist/tests/quarter-iso-id.vo.test.js +0 -30
  156. package/dist/tests/quarter.vo.test.d.ts +0 -1
  157. package/dist/tests/quarter.vo.test.js +0 -54
  158. package/dist/tests/random.service.test.d.ts +0 -1
  159. package/dist/tests/random.service.test.js +0 -93
  160. package/dist/tests/rate-limiter.service.test.d.ts +0 -1
  161. package/dist/tests/rate-limiter.service.test.js +0 -39
  162. package/dist/tests/relative-date.vo.test.d.ts +0 -1
  163. package/dist/tests/relative-date.vo.test.js +0 -22
  164. package/dist/tests/reordering-item-position-value.vo.test.d.ts +0 -1
  165. package/dist/tests/reordering-item-position-value.vo.test.js +0 -21
  166. package/dist/tests/reordering.service.test.d.ts +0 -1
  167. package/dist/tests/reordering.service.test.js +0 -76
  168. package/dist/tests/repeat.test.d.ts +0 -1
  169. package/dist/tests/repeat.test.js +0 -8
  170. package/dist/tests/revision-value.vo.test.d.ts +0 -1
  171. package/dist/tests/revision-value.vo.test.js +0 -21
  172. package/dist/tests/revision.vo.test.d.ts +0 -1
  173. package/dist/tests/revision.vo.test.js +0 -52
  174. package/dist/tests/rounding-decimal.strategy.test.d.ts +0 -1
  175. package/dist/tests/rounding-decimal.strategy.test.js +0 -17
  176. package/dist/tests/rounding-down.strategy.test.d.ts +0 -1
  177. package/dist/tests/rounding-down.strategy.test.js +0 -9
  178. package/dist/tests/rounding-to-nearest.strategy.test.d.ts +0 -1
  179. package/dist/tests/rounding-to-nearest.strategy.test.js +0 -9
  180. package/dist/tests/rounding-up.strategy.test.d.ts +0 -1
  181. package/dist/tests/rounding-up.strategy.test.js +0 -9
  182. package/dist/tests/size-bytes.vo.test.d.ts +0 -1
  183. package/dist/tests/size-bytes.vo.test.js +0 -21
  184. package/dist/tests/size.vo.test.d.ts +0 -1
  185. package/dist/tests/size.vo.test.js +0 -93
  186. package/dist/tests/slug.service.test.d.ts +0 -1
  187. package/dist/tests/slug.service.test.js +0 -45
  188. package/dist/tests/sum.service.test.d.ts +0 -1
  189. package/dist/tests/sum.service.test.js +0 -22
  190. package/dist/tests/thousands-separator.service.test.d.ts +0 -1
  191. package/dist/tests/thousands-separator.service.test.js +0 -27
  192. package/dist/tests/time-zone-offset-value.test.d.ts +0 -1
  193. package/dist/tests/time-zone-offset-value.test.js +0 -27
  194. package/dist/tests/timestamp-value.vo.test.d.ts +0 -1
  195. package/dist/tests/timestamp-value.vo.test.js +0 -21
  196. package/dist/tests/timestamp.vo.test.d.ts +0 -1
  197. package/dist/tests/timestamp.vo.test.js +0 -73
  198. package/dist/tests/timezone.vo.test.d.ts +0 -1
  199. package/dist/tests/timezone.vo.test.js +0 -29
  200. package/dist/tests/url-with-slash.vo.test.d.ts +0 -1
  201. package/dist/tests/url-with-slash.vo.test.js +0 -24
  202. package/dist/tests/url-without-slash.vo.test.d.ts +0 -1
  203. package/dist/tests/url-without-slash.vo.test.js +0 -25
  204. package/dist/tests/visually-unambiguous-characters-generator.service.test.d.ts +0 -1
  205. package/dist/tests/visually-unambiguous-characters-generator.service.test.js +0 -89
  206. package/dist/tests/week-iso-id.vo.test.d.ts +0 -1
  207. package/dist/tests/week-iso-id.vo.test.js +0 -37
  208. package/dist/tests/week.vo.test.d.ts +0 -1
  209. package/dist/tests/week.vo.test.js +0 -64
  210. package/dist/tests/weekday-iso-id.vo.test.d.ts +0 -1
  211. package/dist/tests/weekday-iso-id.vo.test.js +0 -24
  212. package/dist/tests/weekday.vo.test.d.ts +0 -1
  213. package/dist/tests/weekday.vo.test.js +0 -51
  214. package/dist/tests/weight-grams.vo.test.d.ts +0 -1
  215. package/dist/tests/weight-grams.vo.test.js +0 -21
  216. package/dist/tests/weight.vo.test.d.ts +0 -1
  217. package/dist/tests/weight.vo.test.js +0 -66
  218. package/dist/tests/year-iso-id.vo.test.d.ts +0 -1
  219. package/dist/tests/year-iso-id.vo.test.js +0 -23
  220. package/dist/tests/year.vo.test.d.ts +0 -1
  221. package/dist/tests/year.vo.test.js +0 -79
  222. package/dist/tests/z-score.service.test.d.ts +0 -1
  223. package/dist/tests/z-score.service.test.js +0 -26
  224. /package/dist/{src/age-years.vo.d.ts → age-years.vo.d.ts} +0 -0
  225. /package/dist/{src/age-years.vo.js → age-years.vo.js} +0 -0
  226. /package/dist/{src/age.vo.d.ts → age.vo.d.ts} +0 -0
  227. /package/dist/{src/age.vo.js → age.vo.js} +0 -0
  228. /package/dist/{src/api-key.vo.d.ts → api-key.vo.d.ts} +0 -0
  229. /package/dist/{src/api-key.vo.js → api-key.vo.js} +0 -0
  230. /package/dist/{src/basename.vo.d.ts → basename.vo.d.ts} +0 -0
  231. /package/dist/{src/basename.vo.js → basename.vo.js} +0 -0
  232. /package/dist/{src/batch.d.ts → batch.d.ts} +0 -0
  233. /package/dist/{src/batch.js → batch.js} +0 -0
  234. /package/dist/{src/date-calculator.service.d.ts → date-calculator.service.d.ts} +0 -0
  235. /package/dist/{src/date-calculator.service.js → date-calculator.service.js} +0 -0
  236. /package/dist/{src/date-formatter.service.d.ts → date-formatter.service.d.ts} +0 -0
  237. /package/dist/{src/date-formatter.service.js → date-formatter.service.js} +0 -0
  238. /package/dist/{src/date-range.vo.d.ts → date-range.vo.d.ts} +0 -0
  239. /package/dist/{src/date-range.vo.js → date-range.vo.js} +0 -0
  240. /package/dist/{src/day-iso-id.vo.d.ts → day-iso-id.vo.d.ts} +0 -0
  241. /package/dist/{src/day-iso-id.vo.js → day-iso-id.vo.js} +0 -0
  242. /package/dist/{src/directory-path-absolute.vo.d.ts → directory-path-absolute.vo.d.ts} +0 -0
  243. /package/dist/{src/directory-path-absolute.vo.js → directory-path-absolute.vo.js} +0 -0
  244. /package/dist/{src/directory-path-relative.vo.d.ts → directory-path-relative.vo.d.ts} +0 -0
  245. /package/dist/{src/directory-path-relative.vo.js → directory-path-relative.vo.js} +0 -0
  246. /package/dist/{src/distance-value.vo.d.ts → distance-value.vo.d.ts} +0 -0
  247. /package/dist/{src/distance-value.vo.js → distance-value.vo.js} +0 -0
  248. /package/dist/{src/distance.vo.d.ts → distance.vo.d.ts} +0 -0
  249. /package/dist/{src/distance.vo.js → distance.vo.js} +0 -0
  250. /package/dist/{src/division-factor.vo.d.ts → division-factor.vo.d.ts} +0 -0
  251. /package/dist/{src/division-factor.vo.js → division-factor.vo.js} +0 -0
  252. /package/dist/{src/dll.service.d.ts → dll.service.d.ts} +0 -0
  253. /package/dist/{src/dll.service.js → dll.service.js} +0 -0
  254. /package/dist/{src/duration-ms.vo.d.ts → duration-ms.vo.d.ts} +0 -0
  255. /package/dist/{src/duration-ms.vo.js → duration-ms.vo.js} +0 -0
  256. /package/dist/{src/duration.service.d.ts → duration.service.d.ts} +0 -0
  257. /package/dist/{src/duration.service.js → duration.service.js} +0 -0
  258. /package/dist/{src/email-mask.service.d.ts → email-mask.service.d.ts} +0 -0
  259. /package/dist/{src/email-mask.service.js → email-mask.service.js} +0 -0
  260. /package/dist/{src/email.vo.d.ts → email.vo.d.ts} +0 -0
  261. /package/dist/{src/email.vo.js → email.vo.js} +0 -0
  262. /package/dist/{src/etags.vo.d.ts → etags.vo.d.ts} +0 -0
  263. /package/dist/{src/etags.vo.js → etags.vo.js} +0 -0
  264. /package/dist/{src/extension.vo.d.ts → extension.vo.d.ts} +0 -0
  265. /package/dist/{src/extension.vo.js → extension.vo.js} +0 -0
  266. /package/dist/{src/feature-flag-value.vo.d.ts → feature-flag-value.vo.d.ts} +0 -0
  267. /package/dist/{src/feature-flag-value.vo.js → feature-flag-value.vo.js} +0 -0
  268. /package/dist/{src/feature-flag.vo.d.ts → feature-flag.vo.d.ts} +0 -0
  269. /package/dist/{src/feature-flag.vo.js → feature-flag.vo.js} +0 -0
  270. /package/dist/{src/file-path-absolute-schema.vo.d.ts → file-path-absolute-schema.vo.d.ts} +0 -0
  271. /package/dist/{src/file-path-absolute-schema.vo.js → file-path-absolute-schema.vo.js} +0 -0
  272. /package/dist/{src/file-path-relative-schema.vo.d.ts → file-path-relative-schema.vo.d.ts} +0 -0
  273. /package/dist/{src/file-path-relative-schema.vo.js → file-path-relative-schema.vo.js} +0 -0
  274. /package/dist/{src/file-path.vo.d.ts → file-path.vo.d.ts} +0 -0
  275. /package/dist/{src/file-path.vo.js → file-path.vo.js} +0 -0
  276. /package/dist/{src/filename-affix.vo.d.ts → filename-affix.vo.d.ts} +0 -0
  277. /package/dist/{src/filename-affix.vo.js → filename-affix.vo.js} +0 -0
  278. /package/dist/{src/filename-from-string.vo.d.ts → filename-from-string.vo.d.ts} +0 -0
  279. /package/dist/{src/filename-from-string.vo.js → filename-from-string.vo.js} +0 -0
  280. /package/dist/{src/filename.vo.d.ts → filename.vo.d.ts} +0 -0
  281. /package/dist/{src/filename.vo.js → filename.vo.js} +0 -0
  282. /package/dist/{src/height-milimiters.vo.d.ts → height-milimiters.vo.d.ts} +0 -0
  283. /package/dist/{src/height-milimiters.vo.js → height-milimiters.vo.js} +0 -0
  284. /package/dist/{src/height.vo.d.ts → height.vo.d.ts} +0 -0
  285. /package/dist/{src/height.vo.js → height.vo.js} +0 -0
  286. /package/dist/{src/hour-value.vo.d.ts → hour-value.vo.d.ts} +0 -0
  287. /package/dist/{src/hour-value.vo.js → hour-value.vo.js} +0 -0
  288. /package/dist/{src/hour.vo.d.ts → hour.vo.d.ts} +0 -0
  289. /package/dist/{src/hour.vo.js → hour.vo.js} +0 -0
  290. /package/dist/{src/iban-mask.service.d.ts → iban-mask.service.d.ts} +0 -0
  291. /package/dist/{src/iban-mask.service.js → iban-mask.service.js} +0 -0
  292. /package/dist/{src/iban-schema.vo.d.ts → iban-schema.vo.d.ts} +0 -0
  293. /package/dist/{src/iban-schema.vo.js → iban-schema.vo.js} +0 -0
  294. /package/dist/{src/iban.vo.d.ts → iban.vo.d.ts} +0 -0
  295. /package/dist/{src/iban.vo.js → iban.vo.js} +0 -0
  296. /package/dist/{src/image.vo.d.ts → image.vo.d.ts} +0 -0
  297. /package/dist/{src/image.vo.js → image.vo.js} +0 -0
  298. /package/dist/{src/integer-non-negative.vo.d.ts → integer-non-negative.vo.d.ts} +0 -0
  299. /package/dist/{src/integer-non-negative.vo.js → integer-non-negative.vo.js} +0 -0
  300. /package/dist/{src/integer-positive.vo.d.ts → integer-positive.vo.d.ts} +0 -0
  301. /package/dist/{src/integer-positive.vo.js → integer-positive.vo.js} +0 -0
  302. /package/dist/{src/integer.vo.d.ts → integer.vo.d.ts} +0 -0
  303. /package/dist/{src/integer.vo.js → integer.vo.js} +0 -0
  304. /package/dist/{src/language.vo.d.ts → language.vo.d.ts} +0 -0
  305. /package/dist/{src/language.vo.js → language.vo.js} +0 -0
  306. /package/dist/{src/linear-regression.service.d.ts → linear-regression.service.d.ts} +0 -0
  307. /package/dist/{src/linear-regression.service.js → linear-regression.service.js} +0 -0
  308. /package/dist/{src/mean.service.d.ts → mean.service.d.ts} +0 -0
  309. /package/dist/{src/mean.service.js → mean.service.js} +0 -0
  310. /package/dist/{src/mime-registry-entry.vo.d.ts → mime-registry-entry.vo.d.ts} +0 -0
  311. /package/dist/{src/mime-registry-entry.vo.js → mime-registry-entry.vo.js} +0 -0
  312. /package/dist/{src/mime-registry.service.d.ts → mime-registry.service.d.ts} +0 -0
  313. /package/dist/{src/mime-registry.service.js → mime-registry.service.js} +0 -0
  314. /package/dist/{src/mime-value.vo.d.ts → mime-value.vo.d.ts} +0 -0
  315. /package/dist/{src/mime-value.vo.js → mime-value.vo.js} +0 -0
  316. /package/dist/{src/mime.vo.d.ts → mime.vo.d.ts} +0 -0
  317. /package/dist/{src/mime.vo.js → mime.vo.js} +0 -0
  318. /package/dist/{src/mimes.d.ts → mimes.d.ts} +0 -0
  319. /package/dist/{src/mimes.js → mimes.js} +0 -0
  320. /package/dist/{src/min-max-scaler.service.d.ts → min-max-scaler.service.d.ts} +0 -0
  321. /package/dist/{src/min-max-scaler.service.js → min-max-scaler.service.js} +0 -0
  322. /package/dist/{src/minute-value.vo.d.ts → minute-value.vo.d.ts} +0 -0
  323. /package/dist/{src/minute-value.vo.js → minute-value.vo.js} +0 -0
  324. /package/dist/{src/minute.vo.d.ts → minute.vo.d.ts} +0 -0
  325. /package/dist/{src/minute.vo.js → minute.vo.js} +0 -0
  326. /package/dist/{src/money-amount.vo.d.ts → money-amount.vo.d.ts} +0 -0
  327. /package/dist/{src/money-amount.vo.js → money-amount.vo.js} +0 -0
  328. /package/dist/{src/money.vo.d.ts → money.vo.d.ts} +0 -0
  329. /package/dist/{src/money.vo.js → money.vo.js} +0 -0
  330. /package/dist/{src/month-iso-id.vo.d.ts → month-iso-id.vo.d.ts} +0 -0
  331. /package/dist/{src/month-iso-id.vo.js → month-iso-id.vo.js} +0 -0
  332. /package/dist/{src/multiplication-factor.vo.d.ts → multiplication-factor.vo.d.ts} +0 -0
  333. /package/dist/{src/multiplication-factor.vo.js → multiplication-factor.vo.js} +0 -0
  334. /package/dist/{src/noop.service.d.ts → noop.service.d.ts} +0 -0
  335. /package/dist/{src/noop.service.js → noop.service.js} +0 -0
  336. /package/dist/{src/object-key.vo.d.ts → object-key.vo.d.ts} +0 -0
  337. /package/dist/{src/object-key.vo.js → object-key.vo.js} +0 -0
  338. /package/dist/{src/outlier-detector.service.d.ts → outlier-detector.service.d.ts} +0 -0
  339. /package/dist/{src/outlier-detector.service.js → outlier-detector.service.js} +0 -0
  340. /package/dist/{src/package-version-schema.vo.d.ts → package-version-schema.vo.d.ts} +0 -0
  341. /package/dist/{src/package-version-schema.vo.js → package-version-schema.vo.js} +0 -0
  342. /package/dist/{src/package-version.vo.d.ts → package-version.vo.d.ts} +0 -0
  343. /package/dist/{src/package-version.vo.js → package-version.vo.js} +0 -0
  344. /package/dist/{src/pagination-page.vo.d.ts → pagination-page.vo.d.ts} +0 -0
  345. /package/dist/{src/pagination-page.vo.js → pagination-page.vo.js} +0 -0
  346. /package/dist/{src/pagination-skip.vo.d.ts → pagination-skip.vo.d.ts} +0 -0
  347. /package/dist/{src/pagination-skip.vo.js → pagination-skip.vo.js} +0 -0
  348. /package/dist/{src/pagination-take.vo.d.ts → pagination-take.vo.d.ts} +0 -0
  349. /package/dist/{src/pagination-take.vo.js → pagination-take.vo.js} +0 -0
  350. /package/dist/{src/pagination.service.d.ts → pagination.service.d.ts} +0 -0
  351. /package/dist/{src/pagination.service.js → pagination.service.js} +0 -0
  352. /package/dist/{src/percentage.service.d.ts → percentage.service.d.ts} +0 -0
  353. /package/dist/{src/percentage.service.js → percentage.service.js} +0 -0
  354. /package/dist/{src/population-standard-deviation.service.d.ts → population-standard-deviation.service.d.ts} +0 -0
  355. /package/dist/{src/population-standard-deviation.service.js → population-standard-deviation.service.js} +0 -0
  356. /package/dist/{src/quarter-iso-id.vo.d.ts → quarter-iso-id.vo.d.ts} +0 -0
  357. /package/dist/{src/quarter-iso-id.vo.js → quarter-iso-id.vo.js} +0 -0
  358. /package/dist/{src/quarter.vo.d.ts → quarter.vo.d.ts} +0 -0
  359. /package/dist/{src/quarter.vo.js → quarter.vo.js} +0 -0
  360. /package/dist/{src/random.service.d.ts → random.service.d.ts} +0 -0
  361. /package/dist/{src/random.service.js → random.service.js} +0 -0
  362. /package/dist/{src/rate-limiter.service.d.ts → rate-limiter.service.d.ts} +0 -0
  363. /package/dist/{src/rate-limiter.service.js → rate-limiter.service.js} +0 -0
  364. /package/dist/{src/relative-date.vo.d.ts → relative-date.vo.d.ts} +0 -0
  365. /package/dist/{src/relative-date.vo.js → relative-date.vo.js} +0 -0
  366. /package/dist/{src/reordering-item-position-value.vo.d.ts → reordering-item-position-value.vo.d.ts} +0 -0
  367. /package/dist/{src/reordering-item-position-value.vo.js → reordering-item-position-value.vo.js} +0 -0
  368. /package/dist/{src/reordering.service.d.ts → reordering.service.d.ts} +0 -0
  369. /package/dist/{src/reordering.service.js → reordering.service.js} +0 -0
  370. /package/dist/{src/repeat.d.ts → repeat.d.ts} +0 -0
  371. /package/dist/{src/repeat.js → repeat.js} +0 -0
  372. /package/dist/{src/revision-value.vo.d.ts → revision-value.vo.d.ts} +0 -0
  373. /package/dist/{src/revision-value.vo.js → revision-value.vo.js} +0 -0
  374. /package/dist/{src/revision.vo.d.ts → revision.vo.d.ts} +0 -0
  375. /package/dist/{src/revision.vo.js → revision.vo.js} +0 -0
  376. /package/dist/{src/rounding-decimal.strategy.d.ts → rounding-decimal.strategy.d.ts} +0 -0
  377. /package/dist/{src/rounding-decimal.strategy.js → rounding-decimal.strategy.js} +0 -0
  378. /package/dist/{src/rounding-down.strategy.d.ts → rounding-down.strategy.d.ts} +0 -0
  379. /package/dist/{src/rounding-down.strategy.js → rounding-down.strategy.js} +0 -0
  380. /package/dist/{src/rounding-to-nearest.strategy.d.ts → rounding-to-nearest.strategy.d.ts} +0 -0
  381. /package/dist/{src/rounding-to-nearest.strategy.js → rounding-to-nearest.strategy.js} +0 -0
  382. /package/dist/{src/rounding-up.strategy.d.ts → rounding-up.strategy.d.ts} +0 -0
  383. /package/dist/{src/rounding-up.strategy.js → rounding-up.strategy.js} +0 -0
  384. /package/dist/{src/rounding.strategy.d.ts → rounding.strategy.d.ts} +0 -0
  385. /package/dist/{src/rounding.strategy.js → rounding.strategy.js} +0 -0
  386. /package/dist/{src/size-bytes.vo.d.ts → size-bytes.vo.d.ts} +0 -0
  387. /package/dist/{src/size-bytes.vo.js → size-bytes.vo.js} +0 -0
  388. /package/dist/{src/size.vo.d.ts → size.vo.d.ts} +0 -0
  389. /package/dist/{src/size.vo.js → size.vo.js} +0 -0
  390. /package/dist/{src/slug.service.d.ts → slug.service.d.ts} +0 -0
  391. /package/dist/{src/slug.service.js → slug.service.js} +0 -0
  392. /package/dist/{src/sum.service.d.ts → sum.service.d.ts} +0 -0
  393. /package/dist/{src/sum.service.js → sum.service.js} +0 -0
  394. /package/dist/{src/thousands-separator.service.d.ts → thousands-separator.service.d.ts} +0 -0
  395. /package/dist/{src/thousands-separator.service.js → thousands-separator.service.js} +0 -0
  396. /package/dist/{src/time-zone-offset-value.vo.d.ts → time-zone-offset-value.vo.d.ts} +0 -0
  397. /package/dist/{src/time-zone-offset-value.vo.js → time-zone-offset-value.vo.js} +0 -0
  398. /package/dist/{src/timestamp-value.vo.d.ts → timestamp-value.vo.d.ts} +0 -0
  399. /package/dist/{src/timestamp-value.vo.js → timestamp-value.vo.js} +0 -0
  400. /package/dist/{src/timestamp.vo.d.ts → timestamp.vo.d.ts} +0 -0
  401. /package/dist/{src/timestamp.vo.js → timestamp.vo.js} +0 -0
  402. /package/dist/{src/timezone.vo.d.ts → timezone.vo.d.ts} +0 -0
  403. /package/dist/{src/timezone.vo.js → timezone.vo.js} +0 -0
  404. /package/dist/{src/ts-utils.d.ts → ts-utils.d.ts} +0 -0
  405. /package/dist/{src/ts-utils.js → ts-utils.js} +0 -0
  406. /package/dist/{src/url-with-slash.vo.d.ts → url-with-slash.vo.d.ts} +0 -0
  407. /package/dist/{src/url-with-slash.vo.js → url-with-slash.vo.js} +0 -0
  408. /package/dist/{src/url-without-slash.vo.d.ts → url-without-slash.vo.d.ts} +0 -0
  409. /package/dist/{src/url-without-slash.vo.js → url-without-slash.vo.js} +0 -0
  410. /package/dist/{src/visually-unambiguous-characters-generator.service.d.ts → visually-unambiguous-characters-generator.service.d.ts} +0 -0
  411. /package/dist/{src/visually-unambiguous-characters-generator.service.js → visually-unambiguous-characters-generator.service.js} +0 -0
  412. /package/dist/{src/week-iso-id.vo.d.ts → week-iso-id.vo.d.ts} +0 -0
  413. /package/dist/{src/week-iso-id.vo.js → week-iso-id.vo.js} +0 -0
  414. /package/dist/{src/weekday-iso-id.vo.d.ts → weekday-iso-id.vo.d.ts} +0 -0
  415. /package/dist/{src/weekday-iso-id.vo.js → weekday-iso-id.vo.js} +0 -0
  416. /package/dist/{src/weekday.vo.d.ts → weekday.vo.d.ts} +0 -0
  417. /package/dist/{src/weekday.vo.js → weekday.vo.js} +0 -0
  418. /package/dist/{src/weight-grams.vo.d.ts → weight-grams.vo.d.ts} +0 -0
  419. /package/dist/{src/weight-grams.vo.js → weight-grams.vo.js} +0 -0
  420. /package/dist/{src/weight.vo.d.ts → weight.vo.d.ts} +0 -0
  421. /package/dist/{src/weight.vo.js → weight.vo.js} +0 -0
  422. /package/dist/{src/year-iso-id.vo.d.ts → year-iso-id.vo.d.ts} +0 -0
  423. /package/dist/{src/year-iso-id.vo.js → year-iso-id.vo.js} +0 -0
  424. /package/dist/{src/z-score.service.d.ts → z-score.service.d.ts} +0 -0
  425. /package/dist/{src/z-score.service.js → z-score.service.js} +0 -0
@@ -1,116 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { MinMaxScaler } from "../src/min-max-scaler.service";
3
- describe("MinMaxScaler", () => {
4
- test("scale - default bound", () => {
5
- const scaler = new MinMaxScaler({ min: 0, max: 100 });
6
- const original = 50;
7
- const scaled = 0.5;
8
- const result = scaler.scale(original);
9
- expect(result).toEqual({ scaled, original, isMin: false, isMax: false });
10
- expect(scaler.descale(result.scaled)).toEqual({
11
- isLowerBound: false,
12
- isUpperBound: false,
13
- original,
14
- scaled,
15
- });
16
- });
17
- test("scale - custom bound", () => {
18
- const scaler = new MinMaxScaler({ min: 0, max: 100, bound: { lower: 10, upper: 20 } });
19
- const original = 50;
20
- const scaled = 15;
21
- const result = scaler.scale(original);
22
- expect(result).toEqual({ original, scaled, isMin: false, isMax: false });
23
- expect(scaler.descale(result.scaled)).toEqual({
24
- isLowerBound: false,
25
- isUpperBound: false,
26
- original,
27
- scaled,
28
- });
29
- });
30
- test("scale - custom bound - 2 decimals rounding", () => {
31
- const scaler = new MinMaxScaler({ min: 0, max: 27, bound: { lower: 0, upper: 9 } });
32
- const original = 5;
33
- const scaled = 1.67;
34
- const result = scaler.scale(original);
35
- expect(result).toEqual({ scaled, original, isMin: false, isMax: false });
36
- expect(scaler.descale(result.scaled)).toEqual({
37
- isLowerBound: false,
38
- isUpperBound: false,
39
- original: 5.01,
40
- scaled,
41
- });
42
- });
43
- test("scale - minimum value", () => {
44
- const scaler = new MinMaxScaler({ min: 0, max: 100, bound: { lower: 10, upper: 20 } });
45
- const original = 0;
46
- const scaled = 10;
47
- const result = scaler.scale(original);
48
- expect(result).toEqual({ scaled, original, isMin: true, isMax: false });
49
- expect(scaler.descale(result.scaled)).toEqual({
50
- isLowerBound: true,
51
- isUpperBound: false,
52
- original,
53
- scaled,
54
- });
55
- });
56
- test("scale - maximum value", () => {
57
- const scaler = new MinMaxScaler({ min: 0, max: 100, bound: { lower: 10, upper: 20 } });
58
- const original = 100;
59
- const scaled = 20;
60
- const result = scaler.scale(original);
61
- expect(result).toEqual({ scaled, original, isMin: false, isMax: true });
62
- expect(scaler.descale(result.scaled)).toEqual({
63
- isLowerBound: false,
64
- isUpperBound: true,
65
- original,
66
- scaled,
67
- });
68
- });
69
- test("scale - min equals to max", () => {
70
- const scaler = new MinMaxScaler({ min: 100, max: 100, bound: { lower: 10, upper: 20 } });
71
- const original = 100;
72
- const scaled = 15;
73
- const result = scaler.scale(original);
74
- expect(result).toEqual({ scaled, original, isMin: true, isMax: true });
75
- expect(scaler.descale(result.scaled)).toEqual({
76
- isLowerBound: false,
77
- isUpperBound: false,
78
- original,
79
- scaled,
80
- });
81
- });
82
- test("scale - non-zero min value", () => {
83
- const scaler = new MinMaxScaler({ min: 50, max: 100, bound: { lower: 0, upper: 10 } });
84
- const result = scaler.scale(75);
85
- expect(result.scaled).toBe(5);
86
- expect(result.original).toBe(75);
87
- });
88
- test("scale - throws for invalid min/max config", () => {
89
- expect(() => new MinMaxScaler({ min: 100, max: 0, bound: { lower: 0, upper: 10 } })).toThrow("min.max.scaler.invalid.min.max");
90
- });
91
- test("scale - throws for invalid bound config", () => {
92
- expect(() => new MinMaxScaler({ min: 0, max: 10, bound: { lower: 20, upper: 10 } })).toThrow("min.max.scaler.invalid.bound");
93
- expect(() => new MinMaxScaler({ min: 0, max: 10, bound: { lower: 10, upper: 10 } })).toThrow("min.max.scaler.invalid.bound");
94
- });
95
- test("scale - throws when value is bigger than configured range", () => {
96
- expect(() => new MinMaxScaler({ min: 0, max: 10 }).scale(15)).toThrow("min.max.scaler.value.out.of.range");
97
- });
98
- test("scale - throws when value is less than configured range", () => {
99
- const scaler = new MinMaxScaler({ min: 10, max: 20 });
100
- expect(() => scaler.scale(5)).toThrow("min.max.scaler.value.out.of.range");
101
- });
102
- test("descale - throws when scaled value is out of bounds", () => {
103
- const scaler = new MinMaxScaler({ min: 0, max: 100, bound: { lower: 10, upper: 20 } });
104
- expect(() => scaler.descale(5)).toThrow("min.max.scaler.scaled.out.of.bounds");
105
- expect(() => scaler.descale(25)).toThrow("min.max.scaler.scaled.out.of.bounds");
106
- });
107
- test("getMinMax - happy path", () => {
108
- expect(MinMaxScaler.getMinMax([10, 5, 20, 15, 30])).toEqual({ min: 5, max: 30 });
109
- });
110
- test("getMinMax - empty array", () => {
111
- expect(() => MinMaxScaler.getMinMax([])).toThrow("min.max.scaler.empty.array");
112
- });
113
- test("getMinMax - single-value arrays", () => {
114
- expect(MinMaxScaler.getMinMax([10])).toEqual({ min: 10, max: 10 });
115
- });
116
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,24 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import * as v from "valibot";
3
- import { MinuteValue } from "../src/minute-value.vo";
4
- describe("MinuteValue", () => {
5
- test("happy path", () => {
6
- expect(v.safeParse(MinuteValue, 0).success).toEqual(true);
7
- expect(v.safeParse(MinuteValue, 59).success).toEqual(true);
8
- });
9
- test("rejects non-number - null", () => {
10
- expect(() => v.parse(MinuteValue, null)).toThrow("minute.value.type");
11
- });
12
- test("rejects non-number - string", () => {
13
- expect(() => v.parse(MinuteValue, "123")).toThrow("minute.value.type");
14
- });
15
- test("rejects fractions", () => {
16
- expect(() => v.parse(MinuteValue, 1.5)).toThrow("minute.value.type");
17
- });
18
- test("rejects negative numbers", () => {
19
- expect(() => v.parse(MinuteValue, -1)).toThrow("minute.value.invalid");
20
- });
21
- test("rejects 60", () => {
22
- expect(() => v.parse(MinuteValue, 60)).toThrow("minute.value.invalid");
23
- });
24
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,64 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import * as v from "valibot";
3
- import { Minute } from "../src/minute.vo";
4
- import { MinuteValue } from "../src/minute-value.vo";
5
- import * as mocks from "./mocks";
6
- const FIVE = Minute.fromValue(5);
7
- const TEN = Minute.fromValue(10);
8
- const thirteenth = v.parse(MinuteValue, 13);
9
- describe("Minute", () => {
10
- test("happy path", () => {
11
- expect(FIVE.get()).toEqual(v.parse(MinuteValue, 5));
12
- });
13
- test("throws for invalid minute values", () => {
14
- expect(() => Minute.fromValue(12.5)).toThrow("minute.value.type");
15
- expect(() => Minute.fromValue(-1)).toThrow("minute.value.invalid");
16
- expect(() => Minute.fromValue(60)).toThrow("minute.value.invalid");
17
- });
18
- test("fromValueSafe", () => {
19
- expect(Minute.fromValueSafe(thirteenth).get()).toEqual(thirteenth);
20
- });
21
- test("fromTimestamp", () => {
22
- expect(Minute.fromTimestamp(mocks.TIME_ZERO).get()).toEqual(thirteenth);
23
- });
24
- test("fromTimestampValue", () => {
25
- expect(Minute.fromTimestampValue(mocks.TIME_ZERO.ms).get()).toEqual(thirteenth);
26
- });
27
- test("zero", () => {
28
- expect(Minute.zero().get()).toEqual(v.parse(MinuteValue, 0));
29
- });
30
- test("max", () => {
31
- expect(Minute.max().get()).toEqual(v.parse(MinuteValue, 59));
32
- });
33
- test("get", () => {
34
- expect(FIVE.get()).toEqual(v.parse(MinuteValue, 5));
35
- });
36
- test("equals", () => {
37
- expect(FIVE.equals(FIVE)).toEqual(true);
38
- expect(FIVE.equals(TEN)).toEqual(false);
39
- });
40
- test("isBefore", () => {
41
- expect(FIVE.isBefore(TEN)).toEqual(true);
42
- expect(TEN.isBefore(FIVE)).toEqual(false);
43
- expect(TEN.isBefore(TEN)).toEqual(false);
44
- });
45
- test("isAfter", () => {
46
- expect(TEN.isAfter(FIVE)).toEqual(true);
47
- expect(FIVE.isAfter(TEN)).toEqual(false);
48
- expect(FIVE.isAfter(FIVE)).toEqual(false);
49
- });
50
- test("list", () => {
51
- const list = Minute.list();
52
- expect(list.length).toEqual(60);
53
- expect(list[0].get()).toEqual(v.parse(MinuteValue, 0));
54
- expect(list[59].get()).toEqual(v.parse(MinuteValue, 59));
55
- });
56
- test("toString", () => {
57
- expect(FIVE.toString()).toEqual("05");
58
- expect(TEN.toString()).toEqual("10");
59
- });
60
- test("toJSON", () => {
61
- expect(FIVE.toJSON()).toEqual(v.parse(MinuteValue, 5));
62
- expect(TEN.toJSON()).toEqual(v.parse(MinuteValue, 10));
63
- });
64
- });
@@ -1,6 +0,0 @@
1
- import { Duration } from "../src/duration.service";
2
- import { Timestamp } from "../src/timestamp.vo";
3
- export declare const TIME_ZERO: Timestamp;
4
- export declare const TIME_ZERO_DATE_LIKE = "2023-11-14";
5
- export declare const TIME_ZERO_DATE: Date;
6
- export declare const epsilon: Duration;
@@ -1,7 +0,0 @@
1
- import { Duration } from "../src/duration.service";
2
- import { Timestamp } from "../src/timestamp.vo";
3
- // Tue Nov 14 2023 22:13:20 GMT+0000
4
- export const TIME_ZERO = Timestamp.fromNumber(1700000000000);
5
- export const TIME_ZERO_DATE_LIKE = "2023-11-14";
6
- export const TIME_ZERO_DATE = new Date(TIME_ZERO_DATE_LIKE);
7
- export const epsilon = Duration.Ms(1);
@@ -1 +0,0 @@
1
- export {};
@@ -1,21 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import * as v from "valibot";
3
- import { MoneyAmount } from "../src/money-amount.vo";
4
- describe("MoneyAmount", () => {
5
- test("happy path", () => {
6
- expect(v.safeParse(MoneyAmount, 0).success).toEqual(true);
7
- expect(v.safeParse(MoneyAmount, 1_000).success).toEqual(true);
8
- });
9
- test("rejects non-number - null", () => {
10
- expect(() => v.parse(MoneyAmount, null)).toThrow("money.amount.type");
11
- });
12
- test("rejects non-number - string", () => {
13
- expect(() => v.parse(MoneyAmount, "123")).toThrow("money.amount.type");
14
- });
15
- test("rejects fractions", () => {
16
- expect(() => v.parse(MoneyAmount, 1.5)).toThrow("money.amount.type");
17
- });
18
- test("rejects negative numbers", () => {
19
- expect(() => v.parse(MoneyAmount, -1)).toThrow("money.amount.invalid");
20
- });
21
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,90 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import * as v from "valibot";
3
- import { DivisionFactor } from "../src/division-factor.vo";
4
- import { Money } from "../src/money.vo";
5
- import { MoneyAmount } from "../src/money-amount.vo";
6
- import { MultiplicationFactor } from "../src/multiplication-factor.vo";
7
- import { RoundingDownStrategy } from "../src/rounding-down.strategy";
8
- import { RoundingUpStrategy } from "../src/rounding-up.strategy";
9
- const roundUp = new RoundingUpStrategy();
10
- const roundDown = new RoundingDownStrategy();
11
- const divisor = v.parse(DivisionFactor, 2.5);
12
- const multiplier = v.parse(MultiplicationFactor, 1.5);
13
- describe("Money", () => {
14
- test("fromAmount", () => {
15
- expect(Money.fromAmount(0).getAmount()).toEqual(v.parse(MoneyAmount, 0));
16
- expect(Money.fromAmount(100).getAmount()).toEqual(v.parse(MoneyAmount, 100));
17
- });
18
- test("fromAmount - invalid input", () => {
19
- expect(() => Money.fromAmount(100.5)).toThrow("money.amount.type");
20
- });
21
- test("fromAmountSafe", () => {
22
- expect(Money.fromAmountSafe(v.parse(MoneyAmount, 0)).getAmount()).toEqual(v.parse(MoneyAmount, 0));
23
- expect(Money.fromAmountSafe(v.parse(MoneyAmount, 100)).getAmount()).toEqual(v.parse(MoneyAmount, 100));
24
- });
25
- test("add", () => {
26
- expect(Money.fromAmount(100).add(Money.fromAmount(0)).getAmount()).toEqual(v.parse(MoneyAmount, 100));
27
- expect(Money.fromAmount(15).add(Money.fromAmount(10)).getAmount()).toEqual(v.parse(MoneyAmount, 25));
28
- });
29
- test("multiply - integer factor", () => {
30
- expect(Money.fromAmount(100).multiply(v.parse(MultiplicationFactor, 5)).getAmount()).toEqual(v.parse(MoneyAmount, 500));
31
- });
32
- test("multiply - float factor - default round-to-nearest", () => {
33
- expect(Money.fromAmount(99).multiply(multiplier).getAmount()).toEqual(v.parse(MoneyAmount, 149));
34
- });
35
- test("multiply - float factor - round-up", () => {
36
- expect(Money.fromAmount(99).multiply(multiplier, roundUp).getAmount()).toEqual(v.parse(MoneyAmount, 149));
37
- });
38
- test("multiply - float factor - round-down", () => {
39
- expect(Money.fromAmount(99).multiply(multiplier, roundDown).getAmount()).toEqual(v.parse(MoneyAmount, 148));
40
- });
41
- test("subtract - result more than zero", () => {
42
- expect(Money.fromAmount(100).subtract(Money.fromAmount(20)).getAmount()).toEqual(v.parse(MoneyAmount, 80));
43
- });
44
- test("subtract - result zero", () => {
45
- expect(Money.fromAmount(100).subtract(Money.fromAmount(100)).isZero()).toEqual(true);
46
- });
47
- test("subtract - result less than zero", () => {
48
- expect(() => Money.fromAmount(100).subtract(Money.fromAmount(120)).getAmount()).toThrow("money.subtract.result.less.than.zero");
49
- });
50
- test("divide - float factor - default round-to-nearest", () => {
51
- expect(Money.fromAmount(98).divide(divisor).getAmount()).toEqual(v.parse(MoneyAmount, 39));
52
- });
53
- test("divide - float factor - round-up", () => {
54
- expect(Money.fromAmount(98).divide(divisor, roundUp).getAmount()).toEqual(v.parse(MoneyAmount, 40));
55
- });
56
- test("divide - float factor - round-down", () => {
57
- expect(Money.fromAmount(98).divide(divisor, roundDown).getAmount()).toEqual(v.parse(MoneyAmount, 39));
58
- });
59
- test("equals", () => {
60
- const oneHundred = Money.fromAmount(100);
61
- const twoHundred = Money.fromAmount(200);
62
- expect(oneHundred.equals(oneHundred)).toEqual(true);
63
- expect(oneHundred.equals(twoHundred)).toEqual(false);
64
- });
65
- test("isGreaterThan", () => {
66
- const oneHundred = Money.fromAmount(100);
67
- const twoHundred = Money.fromAmount(200);
68
- expect(oneHundred.isGreaterThan(oneHundred)).toEqual(false);
69
- expect(twoHundred.isGreaterThan(oneHundred)).toEqual(true);
70
- });
71
- test("isLessThan", () => {
72
- const oneHundred = Money.fromAmount(100);
73
- const twoHundred = Money.fromAmount(200);
74
- expect(oneHundred.isLessThan(oneHundred)).toEqual(false);
75
- expect(oneHundred.isLessThan(twoHundred)).toEqual(true);
76
- });
77
- test("isZero", () => {
78
- expect(Money.fromAmount(0).isZero()).toEqual(true);
79
- expect(Money.fromAmount(1).isZero()).toEqual(false);
80
- });
81
- test("zero", () => {
82
- expect(Money.zero()).toEqual(Money.fromAmountSafe(v.parse(MoneyAmount, 0)));
83
- });
84
- test("toString", () => {
85
- expect(Money.fromAmount(5).toString()).toEqual("5");
86
- });
87
- test("toJSON", () => {
88
- expect(Money.fromAmount(5).toJSON()).toEqual(5);
89
- });
90
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,36 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import * as v from "valibot";
3
- import { MonthIsoId } from "../src/month-iso-id.vo";
4
- describe("MonthIsoId", () => {
5
- test("happy path", () => {
6
- const valid = ["0000-01", "1970-01", "1999-12", "2024-02", "2025-10", "9999-12"];
7
- for (const value of valid) {
8
- expect(v.safeParse(MonthIsoId, value).success).toEqual(true);
9
- }
10
- });
11
- test("rejects prefix", () => {
12
- expect(() => v.parse(MonthIsoId, "prefix2000-01")).toThrow("month.iso.id.bad.chars");
13
- });
14
- test("rejects suffix", () => {
15
- expect(() => v.parse(MonthIsoId, "2000-01suffix")).toThrow("month.iso.id.bad.chars");
16
- });
17
- test("rejects empty", () => {
18
- expect(() => v.parse(MonthIsoId, "")).toThrow("month.iso.id.bad.chars");
19
- });
20
- test("rejects non-string - null", () => {
21
- expect(() => v.parse(MonthIsoId, null)).toThrow("month.iso.id.type");
22
- });
23
- test("rejects non-string - number", () => {
24
- expect(() => v.parse(MonthIsoId, 123)).toThrow("month.iso.id.type");
25
- });
26
- test("rejects months < 1 and > 12", () => {
27
- expect(() => v.parse(MonthIsoId, "2023-00")).toThrow("month.iso.id.invalid");
28
- expect(() => v.parse(MonthIsoId, "2023-13")).toThrow("month.iso.id.invalid");
29
- });
30
- test("rejects structurally invalid strings", () => {
31
- const invalid = ["2023-1", "2023/01", "23-01"];
32
- for (const value of invalid) {
33
- expect(() => v.parse(MonthIsoId, value)).toThrow("month.iso.id.bad.chars");
34
- }
35
- });
36
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,65 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { endOfMonth, startOfMonth } from "date-fns";
3
- import * as v from "valibot";
4
- import { Duration } from "../src/duration.service";
5
- import { Integer } from "../src/integer.vo";
6
- import { Month } from "../src/month.vo";
7
- import { MonthIsoId } from "../src/month-iso-id.vo";
8
- import { Timestamp } from "../src/timestamp.vo";
9
- import * as mocks from "./mocks";
10
- const november = v.parse(MonthIsoId, "2023-11");
11
- describe("Month", () => {
12
- test("happy path", () => {
13
- const month = Month.fromTimestamp(mocks.TIME_ZERO);
14
- expect(month.getStart()).toEqual(Timestamp.fromNumber(startOfMonth(mocks.TIME_ZERO.ms).getTime()));
15
- expect(month.getEnd()).toEqual(Timestamp.fromNumber(endOfMonth(mocks.TIME_ZERO.ms).getTime()));
16
- expect(month.toIsoId()).toEqual(november);
17
- expect(month.contains(mocks.TIME_ZERO)).toEqual(true);
18
- });
19
- test("happy path - near year boundary", () => {
20
- const timestamp = Timestamp.fromDateLike("2025-12-31");
21
- const month = Month.fromTimestamp(timestamp);
22
- expect(month.getStart()).toEqual(Timestamp.fromNumber(startOfMonth(timestamp.ms).getTime()));
23
- expect(month.getEnd()).toEqual(Timestamp.fromNumber(endOfMonth(timestamp.ms).getTime()));
24
- expect(month.toIsoId()).toEqual(v.parse(MonthIsoId, "2025-12"));
25
- });
26
- test("fromNow", () => {
27
- expect(Month.fromNow(mocks.TIME_ZERO).toIsoId()).toEqual(november);
28
- });
29
- test("fromTimestamp", () => {
30
- expect(Month.fromTimestamp(mocks.TIME_ZERO).toIsoId()).toEqual(november);
31
- });
32
- test("fromTimestampValue", () => {
33
- expect(Month.fromTimestampValue(mocks.TIME_ZERO.ms).toIsoId()).toEqual(november);
34
- });
35
- test("fromIsoId", () => {
36
- expect(Month.fromIsoId(november).toIsoId()).toEqual(november);
37
- });
38
- test("next", () => {
39
- expect(Month.fromTimestamp(mocks.TIME_ZERO).next().toIsoId()).toEqual(v.parse(MonthIsoId, "2023-12"));
40
- });
41
- test("previous", () => {
42
- expect(Month.fromTimestamp(mocks.TIME_ZERO).previous().toIsoId()).toEqual(v.parse(MonthIsoId, "2023-10"));
43
- });
44
- test("shift", () => {
45
- expect(Month.fromTimestamp(mocks.TIME_ZERO).shift(v.parse(Integer, 2)).toIsoId()).toEqual(v.parse(MonthIsoId, "2024-01"));
46
- expect(Month.fromTimestamp(mocks.TIME_ZERO).shift(v.parse(Integer, -2)).toIsoId()).toEqual(v.parse(MonthIsoId, "2023-09"));
47
- });
48
- test("round-trips", () => {
49
- const months = ["1970-01", "1999-12", "2024-02", "2025-12", "2026-01"].map((value) => v.parse(MonthIsoId, value));
50
- for (const value of months) {
51
- expect(Month.fromIsoId(v.parse(MonthIsoId, value)).toIsoId()).toEqual(value);
52
- }
53
- });
54
- test("contains", () => {
55
- const month = Month.fromTimestamp(mocks.TIME_ZERO);
56
- expect(month.contains(month.getStart().subtract(Duration.Ms(1)))).toEqual(false);
57
- expect(month.contains(month.getEnd().add(Duration.Ms(1)))).toEqual(false);
58
- });
59
- test("toString", () => {
60
- expect(Month.fromIsoId(november).toString()).toEqual(november);
61
- });
62
- test("toJSON", () => {
63
- expect(Month.fromIsoId(november).toJSON()).toEqual({ start: 1698796800000, end: 1701388799999 });
64
- });
65
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,19 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import * as v from "valibot";
3
- import { MultiplicationFactor } from "../src/multiplication-factor.vo";
4
- describe("MultiplicationFactor", () => {
5
- test("happy path", () => {
6
- expect(v.safeParse(MultiplicationFactor, 10).success).toEqual(true);
7
- expect(v.safeParse(MultiplicationFactor, 1.5).success).toEqual(true);
8
- expect(v.safeParse(MultiplicationFactor, 0).success).toEqual(true);
9
- });
10
- test("rejects non-number - null", () => {
11
- expect(() => v.parse(MultiplicationFactor, null)).toThrow("multiplication.factor.type");
12
- });
13
- test("rejects non-number - string", () => {
14
- expect(() => v.parse(MultiplicationFactor, "123")).toThrow("multiplication.factor.type");
15
- });
16
- test("rejects negative numbers", () => {
17
- expect(() => v.parse(MultiplicationFactor, -1)).toThrow("multiplication.factor.invalid");
18
- });
19
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,12 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { anoop, noop } from "../src/noop.service";
3
- describe("noop", () => {
4
- test("does nothing", () => {
5
- expect(noop()).toEqual(undefined);
6
- });
7
- });
8
- describe("anoop", () => {
9
- test("does nothing", async () => {
10
- expect(await anoop()).toEqual(undefined);
11
- });
12
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,56 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import * as v from "valibot";
3
- import { ObjectKey } from "../src/object-key.vo";
4
- describe("ObjectKey", () => {
5
- test("happy path", () => {
6
- const valid = [
7
- "avatar.webp",
8
- "users/123/avatar.webp",
9
- "users/u-1/avatar.webp",
10
- "users/abc_def/avatar-1.2_3.webp",
11
- "env.prod/users/a_b-c/avatar.webp",
12
- ];
13
- for (const key of valid) {
14
- expect(v.safeParse(ObjectKey, key).success).toEqual(true);
15
- }
16
- });
17
- test("rejects empty", () => {
18
- expect(() => v.parse(ObjectKey, "")).toThrow("object.key.empty");
19
- });
20
- test("rejects non-string - null", () => {
21
- expect(() => v.parse(ObjectKey, null)).toThrow("object.key.type");
22
- });
23
- test("rejects non-string - number", () => {
24
- expect(() => v.parse(ObjectKey, 123)).toThrow("object.key.type");
25
- });
26
- test("rejects too long", () => {
27
- expect(() => v.parse(ObjectKey, "a".repeat(257))).toThrow("object.key.too.long");
28
- });
29
- test("rejects leading slash", () => {
30
- expect(() => v.parse(ObjectKey, "/users/u/avatar.webp")).toThrow("object.key.leading.slash");
31
- });
32
- test("rejects backslashes", () => {
33
- expect(() => v.parse(ObjectKey, "users\\u\\avatar.webP")).toThrow("object.key.bad.chars");
34
- });
35
- test("rejects control characters", () => {
36
- expect(() => v.parse(ObjectKey, "users/\u0000/avatar.webp")).toThrow("object.key.bad.chars");
37
- });
38
- test("rejects trailing slash", () => {
39
- expect(() => v.parse(ObjectKey, "users/u/")).toThrow("object.key.bad.chars");
40
- });
41
- test("rejects single dot segments", () => {
42
- expect(() => v.parse(ObjectKey, "users/./avatar.webp")).toThrow("object.key.dot.segments");
43
- });
44
- test("rejects double dot segments", () => {
45
- expect(() => v.parse(ObjectKey, "users/../avatar.webp")).toThrow("object.key.dot.segments");
46
- });
47
- test("rejects uppercase letters", () => {
48
- expect(() => v.parse(ObjectKey, "Users/u/avatar.webp")).toThrow("object.key.bad.chars");
49
- });
50
- test("rejects empty segments", () => {
51
- expect(() => v.parse(ObjectKey, "users//avatar.webp")).toThrow("object.key.bad.chars");
52
- });
53
- test("rejects spaces in segments", () => {
54
- expect(() => v.parse(ObjectKey, "users/user id/avatar.webp")).toThrow("object.key.bad.chars");
55
- });
56
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,35 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { OutlierDetector } from "../src/outlier-detector.service";
3
- describe("Outlier detector", () => {
4
- test("throws for empty values array", () => {
5
- expect(() => new OutlierDetector([], 2)).toThrow("outlier.detector.not.enough.values");
6
- });
7
- test("throws for one value array", () => {
8
- expect(() => new OutlierDetector([1], 2)).toThrow("outlier.detector.not.enough.values");
9
- });
10
- test("works for three values", () => {
11
- const values = [1, 3];
12
- const detector = new OutlierDetector(values, 2);
13
- expect(values.filter((value) => detector.isInlier(value))).toEqual([1, 3]);
14
- });
15
- test("works for three values", () => {
16
- const values = [1, 3, 10];
17
- const detector = new OutlierDetector(values, 2);
18
- expect(values.filter((value) => detector.isInlier(value))).toEqual([1, 3, 10]);
19
- });
20
- test("works for a set of data", () => {
21
- const values = [1, 3, 1, 3, 1, 3, 10];
22
- const detector = new OutlierDetector(values, 2);
23
- expect(values.filter((value) => detector.isInlier(value))).toEqual([1, 3, 1, 3, 1, 3]);
24
- expect(detector.isInlier(10)).toEqual(false);
25
- });
26
- test("works for all zeros", () => {
27
- const values = [0, 0, 0, 0];
28
- const detector = new OutlierDetector(values, 2);
29
- expect(values.filter((value) => detector.isInlier(value))).toEqual([]);
30
- });
31
- test("works score equal to threshold ", () => {
32
- const detector = new OutlierDetector([10, 30], 0);
33
- expect(detector.isInlier(20)).toEqual(true);
34
- });
35
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,32 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import * as v from "valibot";
3
- import { PackageVersionSchema } from "../src/package-version-schema.vo";
4
- describe("PackageVersionSchema", () => {
5
- test("happy path", () => {
6
- const valid = ["v0.0.0", "v1.10.0", "v9999.9999.9999"];
7
- for (const value of valid) {
8
- expect(v.safeParse(PackageVersionSchema, value).success).toEqual(true);
9
- }
10
- });
11
- test("rejects prefix", () => {
12
- expect(() => v.parse(PackageVersionSchema, " v1.0.0")).toThrow("package.version.schema.bad.chars");
13
- });
14
- test("rejects suffix", () => {
15
- expect(() => v.parse(PackageVersionSchema, "v1.0.0 ")).toThrow("package.version.schema.bad.chars");
16
- });
17
- test("rejects empty value", () => {
18
- expect(() => v.parse(PackageVersionSchema, "")).toThrow("package.version.schema.bad.chars");
19
- });
20
- test("rejects non-string - null", () => {
21
- expect(() => v.parse(PackageVersionSchema, null)).toThrow("package.version.schema.error");
22
- });
23
- test("rejects non-string - number", () => {
24
- expect(() => v.parse(PackageVersionSchema, 123)).toThrow("package.version.schema.error");
25
- });
26
- test("rejects invalid values", () => {
27
- const invalid = ["v", "v1", "v1.0", "0.0.0", "vx.0.0", "v1.x.0", "v1.1.x"];
28
- for (const value of invalid) {
29
- expect(() => v.parse(PackageVersionSchema, value)).toThrow("package.version.schema.bad.chars");
30
- }
31
- });
32
- });
@@ -1 +0,0 @@
1
- export {};