@bgord/tools 1.4.0 → 1.4.1

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 (422) hide show
  1. package/dist/tsconfig.tsbuildinfo +1 -1
  2. package/package.json +1 -1
  3. package/dist/tests/age-years.vo.test.d.ts +0 -1
  4. package/dist/tests/age-years.vo.test.js +0 -24
  5. package/dist/tests/age.vo.test.d.ts +0 -1
  6. package/dist/tests/age.vo.test.js +0 -106
  7. package/dist/tests/api-key.vo.test.d.ts +0 -1
  8. package/dist/tests/api-key.vo.test.js +0 -24
  9. package/dist/tests/basename.vo.test.d.ts +0 -1
  10. package/dist/tests/basename.vo.test.js +0 -53
  11. package/dist/tests/batch.test.d.ts +0 -1
  12. package/dist/tests/batch.test.js +0 -24
  13. package/dist/tests/date-calculator.service.test.d.ts +0 -1
  14. package/dist/tests/date-calculator.service.test.js +0 -32
  15. package/dist/tests/date-formatter.service.test.d.ts +0 -1
  16. package/dist/tests/date-formatter.service.test.js +0 -22
  17. package/dist/tests/date-range.vo.test.d.ts +0 -1
  18. package/dist/tests/date-range.vo.test.js +0 -49
  19. package/dist/tests/day-iso-id.vo.test.d.ts +0 -1
  20. package/dist/tests/day-iso-id.vo.test.js +0 -36
  21. package/dist/tests/day.vo.test.d.ts +0 -1
  22. package/dist/tests/day.vo.test.js +0 -68
  23. package/dist/tests/directory-path-absolute.vo.test.d.ts +0 -1
  24. package/dist/tests/directory-path-absolute.vo.test.js +0 -47
  25. package/dist/tests/directory-path-relative.vo.test.d.ts +0 -1
  26. package/dist/tests/directory-path-relative.vo.test.js +0 -44
  27. package/dist/tests/distance-value.vo.test.d.ts +0 -1
  28. package/dist/tests/distance-value.vo.test.js +0 -21
  29. package/dist/tests/distance.vo.test.d.ts +0 -1
  30. package/dist/tests/distance.vo.test.js +0 -74
  31. package/dist/tests/division-factor.vo.test.d.ts +0 -1
  32. package/dist/tests/division-factor.vo.test.js +0 -21
  33. package/dist/tests/dll.service.test.d.ts +0 -1
  34. package/dist/tests/dll.service.test.js +0 -381
  35. package/dist/tests/duration-ms.vo.test.d.ts +0 -1
  36. package/dist/tests/duration-ms.vo.test.js +0 -18
  37. package/dist/tests/duration.service.test.d.ts +0 -1
  38. package/dist/tests/duration.service.test.js +0 -126
  39. package/dist/tests/email-mask.service.test.d.ts +0 -1
  40. package/dist/tests/email-mask.service.test.js +0 -15
  41. package/dist/tests/email.vo.test.d.ts +0 -1
  42. package/dist/tests/email.vo.test.js +0 -17
  43. package/dist/tests/etags.vo.test.d.ts +0 -1
  44. package/dist/tests/etags.vo.test.js +0 -54
  45. package/dist/tests/extension.vo.test.d.ts +0 -1
  46. package/dist/tests/extension.vo.test.js +0 -51
  47. package/dist/tests/feature-flag-value.vo.test.d.ts +0 -1
  48. package/dist/tests/feature-flag-value.vo.test.js +0 -12
  49. package/dist/tests/feature-flag.vo.test.d.ts +0 -1
  50. package/dist/tests/feature-flag.vo.test.js +0 -13
  51. package/dist/tests/file-path-absolute-schema.vo.test.d.ts +0 -1
  52. package/dist/tests/file-path-absolute-schema.vo.test.js +0 -53
  53. package/dist/tests/file-path-relative-schema.vo.test.d.ts +0 -1
  54. package/dist/tests/file-path-relative-schema.vo.test.js +0 -52
  55. package/dist/tests/file-path.vo.test.d.ts +0 -1
  56. package/dist/tests/file-path.vo.test.js +0 -74
  57. package/dist/tests/filename-affix.vo.test.d.ts +0 -1
  58. package/dist/tests/filename-affix.vo.test.js +0 -30
  59. package/dist/tests/filename-from-string.vo.test.d.ts +0 -1
  60. package/dist/tests/filename-from-string.vo.test.js +0 -37
  61. package/dist/tests/filename.vo.test.d.ts +0 -1
  62. package/dist/tests/filename.vo.test.js +0 -93
  63. package/dist/tests/height-milimiters.vo.test.d.ts +0 -1
  64. package/dist/tests/height-milimiters.vo.test.js +0 -21
  65. package/dist/tests/height.vo.test.d.ts +0 -1
  66. package/dist/tests/height.vo.test.js +0 -64
  67. package/dist/tests/hour-value.vo.test.d.ts +0 -1
  68. package/dist/tests/hour-value.vo.test.js +0 -24
  69. package/dist/tests/hour.vo.test.d.ts +0 -1
  70. package/dist/tests/hour.vo.test.js +0 -64
  71. package/dist/tests/iban-mask.service.test.d.ts +0 -1
  72. package/dist/tests/iban-mask.service.test.js +0 -13
  73. package/dist/tests/iban-schema.vo.test.d.ts +0 -1
  74. package/dist/tests/iban-schema.vo.test.js +0 -43
  75. package/dist/tests/iban.vo.test.d.ts +0 -1
  76. package/dist/tests/iban.vo.test.js +0 -46
  77. package/dist/tests/image.vo.test.d.ts +0 -1
  78. package/dist/tests/image.vo.test.js +0 -41
  79. package/dist/tests/integer-non-negative.vo.test.d.ts +0 -1
  80. package/dist/tests/integer-non-negative.vo.test.js +0 -22
  81. package/dist/tests/integer-positive.vo.test.d.ts +0 -1
  82. package/dist/tests/integer-positive.vo.test.js +0 -21
  83. package/dist/tests/integer.vo.test.d.ts +0 -1
  84. package/dist/tests/integer.vo.test.js +0 -21
  85. package/dist/tests/language.vo.test.d.ts +0 -1
  86. package/dist/tests/language.vo.test.js +0 -28
  87. package/dist/tests/linear-regression.service.test.d.ts +0 -1
  88. package/dist/tests/linear-regression.service.test.js +0 -111
  89. package/dist/tests/mean.service.test.d.ts +0 -1
  90. package/dist/tests/mean.service.test.js +0 -23
  91. package/dist/tests/mime-registry-entry.vo.test.d.ts +0 -1
  92. package/dist/tests/mime-registry-entry.vo.test.js +0 -15
  93. package/dist/tests/mime-registry.service.test.d.ts +0 -1
  94. package/dist/tests/mime-registry.service.test.js +0 -45
  95. package/dist/tests/mime-value.vo.test.d.ts +0 -1
  96. package/dist/tests/mime-value.vo.test.js +0 -49
  97. package/dist/tests/mime.vo.test.d.ts +0 -1
  98. package/dist/tests/mime.vo.test.js +0 -53
  99. package/dist/tests/mimes.test.d.ts +0 -1
  100. package/dist/tests/mimes.test.js +0 -28
  101. package/dist/tests/min-max-scaler.service.test.d.ts +0 -1
  102. package/dist/tests/min-max-scaler.service.test.js +0 -116
  103. package/dist/tests/minute-value.vo.test.d.ts +0 -1
  104. package/dist/tests/minute-value.vo.test.js +0 -24
  105. package/dist/tests/minute.vo.test.d.ts +0 -1
  106. package/dist/tests/minute.vo.test.js +0 -64
  107. package/dist/tests/mocks.d.ts +0 -6
  108. package/dist/tests/mocks.js +0 -7
  109. package/dist/tests/money-amount.vo.test.d.ts +0 -1
  110. package/dist/tests/money-amount.vo.test.js +0 -21
  111. package/dist/tests/money.vo.test.d.ts +0 -1
  112. package/dist/tests/money.vo.test.js +0 -90
  113. package/dist/tests/month-iso-id.vo.test.d.ts +0 -1
  114. package/dist/tests/month-iso-id.vo.test.js +0 -36
  115. package/dist/tests/month.vo.test.d.ts +0 -1
  116. package/dist/tests/month.vo.test.js +0 -65
  117. package/dist/tests/multiplication-factor.vo.test.d.ts +0 -1
  118. package/dist/tests/multiplication-factor.vo.test.js +0 -19
  119. package/dist/tests/noop.test.d.ts +0 -1
  120. package/dist/tests/noop.test.js +0 -12
  121. package/dist/tests/object-key.vo.test.d.ts +0 -1
  122. package/dist/tests/object-key.vo.test.js +0 -56
  123. package/dist/tests/outlier-detector.service.test.d.ts +0 -1
  124. package/dist/tests/outlier-detector.service.test.js +0 -35
  125. package/dist/tests/package-version-schema.vo.test.d.ts +0 -1
  126. package/dist/tests/package-version-schema.vo.test.js +0 -32
  127. package/dist/tests/package-version.vo.test.d.ts +0 -1
  128. package/dist/tests/package-version.vo.test.js +0 -138
  129. package/dist/tests/pagination-page.vo.test.d.ts +0 -1
  130. package/dist/tests/pagination-page.vo.test.js +0 -26
  131. package/dist/tests/pagination-skip.vo.test.d.ts +0 -1
  132. package/dist/tests/pagination-skip.vo.test.js +0 -23
  133. package/dist/tests/pagination-take.vo.test.d.ts +0 -1
  134. package/dist/tests/pagination-take.vo.test.js +0 -25
  135. package/dist/tests/pagination.service.test.d.ts +0 -1
  136. package/dist/tests/pagination.service.test.js +0 -92
  137. package/dist/tests/percentage.service.test.d.ts +0 -1
  138. package/dist/tests/percentage.service.test.js +0 -16
  139. package/dist/tests/population-standard-deviation.service.test.d.ts +0 -1
  140. package/dist/tests/population-standard-deviation.service.test.js +0 -20
  141. package/dist/tests/quarter-iso-id.vo.test.d.ts +0 -1
  142. package/dist/tests/quarter-iso-id.vo.test.js +0 -30
  143. package/dist/tests/quarter.vo.test.d.ts +0 -1
  144. package/dist/tests/quarter.vo.test.js +0 -54
  145. package/dist/tests/random.service.test.d.ts +0 -1
  146. package/dist/tests/random.service.test.js +0 -93
  147. package/dist/tests/rate-limiter.service.test.d.ts +0 -1
  148. package/dist/tests/rate-limiter.service.test.js +0 -39
  149. package/dist/tests/relative-date.vo.test.d.ts +0 -1
  150. package/dist/tests/relative-date.vo.test.js +0 -22
  151. package/dist/tests/reordering-item-position-value.vo.test.d.ts +0 -1
  152. package/dist/tests/reordering-item-position-value.vo.test.js +0 -21
  153. package/dist/tests/reordering.service.test.d.ts +0 -1
  154. package/dist/tests/reordering.service.test.js +0 -76
  155. package/dist/tests/repeat.test.d.ts +0 -1
  156. package/dist/tests/repeat.test.js +0 -8
  157. package/dist/tests/revision-value.vo.test.d.ts +0 -1
  158. package/dist/tests/revision-value.vo.test.js +0 -21
  159. package/dist/tests/revision.vo.test.d.ts +0 -1
  160. package/dist/tests/revision.vo.test.js +0 -52
  161. package/dist/tests/rounding-decimal.strategy.test.d.ts +0 -1
  162. package/dist/tests/rounding-decimal.strategy.test.js +0 -17
  163. package/dist/tests/rounding-down.strategy.test.d.ts +0 -1
  164. package/dist/tests/rounding-down.strategy.test.js +0 -9
  165. package/dist/tests/rounding-to-nearest.strategy.test.d.ts +0 -1
  166. package/dist/tests/rounding-to-nearest.strategy.test.js +0 -9
  167. package/dist/tests/rounding-up.strategy.test.d.ts +0 -1
  168. package/dist/tests/rounding-up.strategy.test.js +0 -9
  169. package/dist/tests/size-bytes.vo.test.d.ts +0 -1
  170. package/dist/tests/size-bytes.vo.test.js +0 -21
  171. package/dist/tests/size.vo.test.d.ts +0 -1
  172. package/dist/tests/size.vo.test.js +0 -93
  173. package/dist/tests/slug.service.test.d.ts +0 -1
  174. package/dist/tests/slug.service.test.js +0 -45
  175. package/dist/tests/sum.service.test.d.ts +0 -1
  176. package/dist/tests/sum.service.test.js +0 -22
  177. package/dist/tests/thousands-separator.service.test.d.ts +0 -1
  178. package/dist/tests/thousands-separator.service.test.js +0 -27
  179. package/dist/tests/time-zone-offset-value.test.d.ts +0 -1
  180. package/dist/tests/time-zone-offset-value.test.js +0 -27
  181. package/dist/tests/timestamp-value.vo.test.d.ts +0 -1
  182. package/dist/tests/timestamp-value.vo.test.js +0 -21
  183. package/dist/tests/timestamp.vo.test.d.ts +0 -1
  184. package/dist/tests/timestamp.vo.test.js +0 -73
  185. package/dist/tests/timezone.vo.test.d.ts +0 -1
  186. package/dist/tests/timezone.vo.test.js +0 -29
  187. package/dist/tests/url-with-slash.vo.test.d.ts +0 -1
  188. package/dist/tests/url-with-slash.vo.test.js +0 -24
  189. package/dist/tests/url-without-slash.vo.test.d.ts +0 -1
  190. package/dist/tests/url-without-slash.vo.test.js +0 -25
  191. package/dist/tests/visually-unambiguous-characters-generator.service.test.d.ts +0 -1
  192. package/dist/tests/visually-unambiguous-characters-generator.service.test.js +0 -89
  193. package/dist/tests/week-iso-id.vo.test.d.ts +0 -1
  194. package/dist/tests/week-iso-id.vo.test.js +0 -37
  195. package/dist/tests/week.vo.test.d.ts +0 -1
  196. package/dist/tests/week.vo.test.js +0 -64
  197. package/dist/tests/weekday-iso-id.vo.test.d.ts +0 -1
  198. package/dist/tests/weekday-iso-id.vo.test.js +0 -24
  199. package/dist/tests/weekday.vo.test.d.ts +0 -1
  200. package/dist/tests/weekday.vo.test.js +0 -51
  201. package/dist/tests/weight-grams.vo.test.d.ts +0 -1
  202. package/dist/tests/weight-grams.vo.test.js +0 -21
  203. package/dist/tests/weight.vo.test.d.ts +0 -1
  204. package/dist/tests/weight.vo.test.js +0 -66
  205. package/dist/tests/year-iso-id.vo.test.d.ts +0 -1
  206. package/dist/tests/year-iso-id.vo.test.js +0 -23
  207. package/dist/tests/year.vo.test.d.ts +0 -1
  208. package/dist/tests/year.vo.test.js +0 -79
  209. package/dist/tests/z-score.service.test.d.ts +0 -1
  210. package/dist/tests/z-score.service.test.js +0 -26
  211. /package/dist/{src/age-years.vo.d.ts → age-years.vo.d.ts} +0 -0
  212. /package/dist/{src/age-years.vo.js → age-years.vo.js} +0 -0
  213. /package/dist/{src/age.vo.d.ts → age.vo.d.ts} +0 -0
  214. /package/dist/{src/age.vo.js → age.vo.js} +0 -0
  215. /package/dist/{src/api-key.vo.d.ts → api-key.vo.d.ts} +0 -0
  216. /package/dist/{src/api-key.vo.js → api-key.vo.js} +0 -0
  217. /package/dist/{src/basename.vo.d.ts → basename.vo.d.ts} +0 -0
  218. /package/dist/{src/basename.vo.js → basename.vo.js} +0 -0
  219. /package/dist/{src/batch.d.ts → batch.d.ts} +0 -0
  220. /package/dist/{src/batch.js → batch.js} +0 -0
  221. /package/dist/{src/date-calculator.service.d.ts → date-calculator.service.d.ts} +0 -0
  222. /package/dist/{src/date-calculator.service.js → date-calculator.service.js} +0 -0
  223. /package/dist/{src/date-formatter.service.d.ts → date-formatter.service.d.ts} +0 -0
  224. /package/dist/{src/date-formatter.service.js → date-formatter.service.js} +0 -0
  225. /package/dist/{src/date-range.vo.d.ts → date-range.vo.d.ts} +0 -0
  226. /package/dist/{src/date-range.vo.js → date-range.vo.js} +0 -0
  227. /package/dist/{src/day-iso-id.vo.d.ts → day-iso-id.vo.d.ts} +0 -0
  228. /package/dist/{src/day-iso-id.vo.js → day-iso-id.vo.js} +0 -0
  229. /package/dist/{src/day.vo.d.ts → day.vo.d.ts} +0 -0
  230. /package/dist/{src/day.vo.js → day.vo.js} +0 -0
  231. /package/dist/{src/directory-path-absolute.vo.d.ts → directory-path-absolute.vo.d.ts} +0 -0
  232. /package/dist/{src/directory-path-absolute.vo.js → directory-path-absolute.vo.js} +0 -0
  233. /package/dist/{src/directory-path-relative.vo.d.ts → directory-path-relative.vo.d.ts} +0 -0
  234. /package/dist/{src/directory-path-relative.vo.js → directory-path-relative.vo.js} +0 -0
  235. /package/dist/{src/distance-value.vo.d.ts → distance-value.vo.d.ts} +0 -0
  236. /package/dist/{src/distance-value.vo.js → distance-value.vo.js} +0 -0
  237. /package/dist/{src/distance.vo.d.ts → distance.vo.d.ts} +0 -0
  238. /package/dist/{src/distance.vo.js → distance.vo.js} +0 -0
  239. /package/dist/{src/division-factor.vo.d.ts → division-factor.vo.d.ts} +0 -0
  240. /package/dist/{src/division-factor.vo.js → division-factor.vo.js} +0 -0
  241. /package/dist/{src/dll.service.d.ts → dll.service.d.ts} +0 -0
  242. /package/dist/{src/dll.service.js → dll.service.js} +0 -0
  243. /package/dist/{src/duration-ms.vo.d.ts → duration-ms.vo.d.ts} +0 -0
  244. /package/dist/{src/duration-ms.vo.js → duration-ms.vo.js} +0 -0
  245. /package/dist/{src/duration.service.d.ts → duration.service.d.ts} +0 -0
  246. /package/dist/{src/duration.service.js → duration.service.js} +0 -0
  247. /package/dist/{src/email-mask.service.d.ts → email-mask.service.d.ts} +0 -0
  248. /package/dist/{src/email-mask.service.js → email-mask.service.js} +0 -0
  249. /package/dist/{src/email.vo.d.ts → email.vo.d.ts} +0 -0
  250. /package/dist/{src/email.vo.js → email.vo.js} +0 -0
  251. /package/dist/{src/etags.vo.d.ts → etags.vo.d.ts} +0 -0
  252. /package/dist/{src/etags.vo.js → etags.vo.js} +0 -0
  253. /package/dist/{src/extension.vo.d.ts → extension.vo.d.ts} +0 -0
  254. /package/dist/{src/extension.vo.js → extension.vo.js} +0 -0
  255. /package/dist/{src/feature-flag-value.vo.d.ts → feature-flag-value.vo.d.ts} +0 -0
  256. /package/dist/{src/feature-flag-value.vo.js → feature-flag-value.vo.js} +0 -0
  257. /package/dist/{src/feature-flag.vo.d.ts → feature-flag.vo.d.ts} +0 -0
  258. /package/dist/{src/feature-flag.vo.js → feature-flag.vo.js} +0 -0
  259. /package/dist/{src/file-path-absolute-schema.vo.d.ts → file-path-absolute-schema.vo.d.ts} +0 -0
  260. /package/dist/{src/file-path-absolute-schema.vo.js → file-path-absolute-schema.vo.js} +0 -0
  261. /package/dist/{src/file-path-relative-schema.vo.d.ts → file-path-relative-schema.vo.d.ts} +0 -0
  262. /package/dist/{src/file-path-relative-schema.vo.js → file-path-relative-schema.vo.js} +0 -0
  263. /package/dist/{src/file-path.vo.d.ts → file-path.vo.d.ts} +0 -0
  264. /package/dist/{src/file-path.vo.js → file-path.vo.js} +0 -0
  265. /package/dist/{src/filename-affix.vo.d.ts → filename-affix.vo.d.ts} +0 -0
  266. /package/dist/{src/filename-affix.vo.js → filename-affix.vo.js} +0 -0
  267. /package/dist/{src/filename-from-string.vo.d.ts → filename-from-string.vo.d.ts} +0 -0
  268. /package/dist/{src/filename-from-string.vo.js → filename-from-string.vo.js} +0 -0
  269. /package/dist/{src/filename.vo.d.ts → filename.vo.d.ts} +0 -0
  270. /package/dist/{src/filename.vo.js → filename.vo.js} +0 -0
  271. /package/dist/{src/height-milimiters.vo.d.ts → height-milimiters.vo.d.ts} +0 -0
  272. /package/dist/{src/height-milimiters.vo.js → height-milimiters.vo.js} +0 -0
  273. /package/dist/{src/height.vo.d.ts → height.vo.d.ts} +0 -0
  274. /package/dist/{src/height.vo.js → height.vo.js} +0 -0
  275. /package/dist/{src/hour-value.vo.d.ts → hour-value.vo.d.ts} +0 -0
  276. /package/dist/{src/hour-value.vo.js → hour-value.vo.js} +0 -0
  277. /package/dist/{src/hour.vo.d.ts → hour.vo.d.ts} +0 -0
  278. /package/dist/{src/hour.vo.js → hour.vo.js} +0 -0
  279. /package/dist/{src/iban-mask.service.d.ts → iban-mask.service.d.ts} +0 -0
  280. /package/dist/{src/iban-mask.service.js → iban-mask.service.js} +0 -0
  281. /package/dist/{src/iban-schema.vo.d.ts → iban-schema.vo.d.ts} +0 -0
  282. /package/dist/{src/iban-schema.vo.js → iban-schema.vo.js} +0 -0
  283. /package/dist/{src/iban.vo.d.ts → iban.vo.d.ts} +0 -0
  284. /package/dist/{src/iban.vo.js → iban.vo.js} +0 -0
  285. /package/dist/{src/image.vo.d.ts → image.vo.d.ts} +0 -0
  286. /package/dist/{src/image.vo.js → image.vo.js} +0 -0
  287. /package/dist/{src/index.d.ts → index.d.ts} +0 -0
  288. /package/dist/{src/index.js → index.js} +0 -0
  289. /package/dist/{src/integer-non-negative.vo.d.ts → integer-non-negative.vo.d.ts} +0 -0
  290. /package/dist/{src/integer-non-negative.vo.js → integer-non-negative.vo.js} +0 -0
  291. /package/dist/{src/integer-positive.vo.d.ts → integer-positive.vo.d.ts} +0 -0
  292. /package/dist/{src/integer-positive.vo.js → integer-positive.vo.js} +0 -0
  293. /package/dist/{src/integer.vo.d.ts → integer.vo.d.ts} +0 -0
  294. /package/dist/{src/integer.vo.js → integer.vo.js} +0 -0
  295. /package/dist/{src/language.vo.d.ts → language.vo.d.ts} +0 -0
  296. /package/dist/{src/language.vo.js → language.vo.js} +0 -0
  297. /package/dist/{src/linear-regression.service.d.ts → linear-regression.service.d.ts} +0 -0
  298. /package/dist/{src/linear-regression.service.js → linear-regression.service.js} +0 -0
  299. /package/dist/{src/mean.service.d.ts → mean.service.d.ts} +0 -0
  300. /package/dist/{src/mean.service.js → mean.service.js} +0 -0
  301. /package/dist/{src/mime-registry-entry.vo.d.ts → mime-registry-entry.vo.d.ts} +0 -0
  302. /package/dist/{src/mime-registry-entry.vo.js → mime-registry-entry.vo.js} +0 -0
  303. /package/dist/{src/mime-registry.service.d.ts → mime-registry.service.d.ts} +0 -0
  304. /package/dist/{src/mime-registry.service.js → mime-registry.service.js} +0 -0
  305. /package/dist/{src/mime-value.vo.d.ts → mime-value.vo.d.ts} +0 -0
  306. /package/dist/{src/mime-value.vo.js → mime-value.vo.js} +0 -0
  307. /package/dist/{src/mime.vo.d.ts → mime.vo.d.ts} +0 -0
  308. /package/dist/{src/mime.vo.js → mime.vo.js} +0 -0
  309. /package/dist/{src/mimes.d.ts → mimes.d.ts} +0 -0
  310. /package/dist/{src/mimes.js → mimes.js} +0 -0
  311. /package/dist/{src/min-max-scaler.service.d.ts → min-max-scaler.service.d.ts} +0 -0
  312. /package/dist/{src/min-max-scaler.service.js → min-max-scaler.service.js} +0 -0
  313. /package/dist/{src/minute-value.vo.d.ts → minute-value.vo.d.ts} +0 -0
  314. /package/dist/{src/minute-value.vo.js → minute-value.vo.js} +0 -0
  315. /package/dist/{src/minute.vo.d.ts → minute.vo.d.ts} +0 -0
  316. /package/dist/{src/minute.vo.js → minute.vo.js} +0 -0
  317. /package/dist/{src/money-amount.vo.d.ts → money-amount.vo.d.ts} +0 -0
  318. /package/dist/{src/money-amount.vo.js → money-amount.vo.js} +0 -0
  319. /package/dist/{src/money.vo.d.ts → money.vo.d.ts} +0 -0
  320. /package/dist/{src/money.vo.js → money.vo.js} +0 -0
  321. /package/dist/{src/month-iso-id.vo.d.ts → month-iso-id.vo.d.ts} +0 -0
  322. /package/dist/{src/month-iso-id.vo.js → month-iso-id.vo.js} +0 -0
  323. /package/dist/{src/month.vo.d.ts → month.vo.d.ts} +0 -0
  324. /package/dist/{src/month.vo.js → month.vo.js} +0 -0
  325. /package/dist/{src/multiplication-factor.vo.d.ts → multiplication-factor.vo.d.ts} +0 -0
  326. /package/dist/{src/multiplication-factor.vo.js → multiplication-factor.vo.js} +0 -0
  327. /package/dist/{src/noop.service.d.ts → noop.service.d.ts} +0 -0
  328. /package/dist/{src/noop.service.js → noop.service.js} +0 -0
  329. /package/dist/{src/object-key.vo.d.ts → object-key.vo.d.ts} +0 -0
  330. /package/dist/{src/object-key.vo.js → object-key.vo.js} +0 -0
  331. /package/dist/{src/outlier-detector.service.d.ts → outlier-detector.service.d.ts} +0 -0
  332. /package/dist/{src/outlier-detector.service.js → outlier-detector.service.js} +0 -0
  333. /package/dist/{src/package-version-schema.vo.d.ts → package-version-schema.vo.d.ts} +0 -0
  334. /package/dist/{src/package-version-schema.vo.js → package-version-schema.vo.js} +0 -0
  335. /package/dist/{src/package-version.vo.d.ts → package-version.vo.d.ts} +0 -0
  336. /package/dist/{src/package-version.vo.js → package-version.vo.js} +0 -0
  337. /package/dist/{src/pagination-page.vo.d.ts → pagination-page.vo.d.ts} +0 -0
  338. /package/dist/{src/pagination-page.vo.js → pagination-page.vo.js} +0 -0
  339. /package/dist/{src/pagination-skip.vo.d.ts → pagination-skip.vo.d.ts} +0 -0
  340. /package/dist/{src/pagination-skip.vo.js → pagination-skip.vo.js} +0 -0
  341. /package/dist/{src/pagination-take.vo.d.ts → pagination-take.vo.d.ts} +0 -0
  342. /package/dist/{src/pagination-take.vo.js → pagination-take.vo.js} +0 -0
  343. /package/dist/{src/pagination.service.d.ts → pagination.service.d.ts} +0 -0
  344. /package/dist/{src/pagination.service.js → pagination.service.js} +0 -0
  345. /package/dist/{src/percentage.service.d.ts → percentage.service.d.ts} +0 -0
  346. /package/dist/{src/percentage.service.js → percentage.service.js} +0 -0
  347. /package/dist/{src/population-standard-deviation.service.d.ts → population-standard-deviation.service.d.ts} +0 -0
  348. /package/dist/{src/population-standard-deviation.service.js → population-standard-deviation.service.js} +0 -0
  349. /package/dist/{src/quarter-iso-id.vo.d.ts → quarter-iso-id.vo.d.ts} +0 -0
  350. /package/dist/{src/quarter-iso-id.vo.js → quarter-iso-id.vo.js} +0 -0
  351. /package/dist/{src/quarter.vo.d.ts → quarter.vo.d.ts} +0 -0
  352. /package/dist/{src/quarter.vo.js → quarter.vo.js} +0 -0
  353. /package/dist/{src/random.service.d.ts → random.service.d.ts} +0 -0
  354. /package/dist/{src/random.service.js → random.service.js} +0 -0
  355. /package/dist/{src/rate-limiter.service.d.ts → rate-limiter.service.d.ts} +0 -0
  356. /package/dist/{src/rate-limiter.service.js → rate-limiter.service.js} +0 -0
  357. /package/dist/{src/relative-date.vo.d.ts → relative-date.vo.d.ts} +0 -0
  358. /package/dist/{src/relative-date.vo.js → relative-date.vo.js} +0 -0
  359. /package/dist/{src/reordering-item-position-value.vo.d.ts → reordering-item-position-value.vo.d.ts} +0 -0
  360. /package/dist/{src/reordering-item-position-value.vo.js → reordering-item-position-value.vo.js} +0 -0
  361. /package/dist/{src/reordering.service.d.ts → reordering.service.d.ts} +0 -0
  362. /package/dist/{src/reordering.service.js → reordering.service.js} +0 -0
  363. /package/dist/{src/repeat.d.ts → repeat.d.ts} +0 -0
  364. /package/dist/{src/repeat.js → repeat.js} +0 -0
  365. /package/dist/{src/revision-value.vo.d.ts → revision-value.vo.d.ts} +0 -0
  366. /package/dist/{src/revision-value.vo.js → revision-value.vo.js} +0 -0
  367. /package/dist/{src/revision.vo.d.ts → revision.vo.d.ts} +0 -0
  368. /package/dist/{src/revision.vo.js → revision.vo.js} +0 -0
  369. /package/dist/{src/rounding-decimal.strategy.d.ts → rounding-decimal.strategy.d.ts} +0 -0
  370. /package/dist/{src/rounding-decimal.strategy.js → rounding-decimal.strategy.js} +0 -0
  371. /package/dist/{src/rounding-down.strategy.d.ts → rounding-down.strategy.d.ts} +0 -0
  372. /package/dist/{src/rounding-down.strategy.js → rounding-down.strategy.js} +0 -0
  373. /package/dist/{src/rounding-to-nearest.strategy.d.ts → rounding-to-nearest.strategy.d.ts} +0 -0
  374. /package/dist/{src/rounding-to-nearest.strategy.js → rounding-to-nearest.strategy.js} +0 -0
  375. /package/dist/{src/rounding-up.strategy.d.ts → rounding-up.strategy.d.ts} +0 -0
  376. /package/dist/{src/rounding-up.strategy.js → rounding-up.strategy.js} +0 -0
  377. /package/dist/{src/rounding.strategy.d.ts → rounding.strategy.d.ts} +0 -0
  378. /package/dist/{src/rounding.strategy.js → rounding.strategy.js} +0 -0
  379. /package/dist/{src/size-bytes.vo.d.ts → size-bytes.vo.d.ts} +0 -0
  380. /package/dist/{src/size-bytes.vo.js → size-bytes.vo.js} +0 -0
  381. /package/dist/{src/size.vo.d.ts → size.vo.d.ts} +0 -0
  382. /package/dist/{src/size.vo.js → size.vo.js} +0 -0
  383. /package/dist/{src/slug.service.d.ts → slug.service.d.ts} +0 -0
  384. /package/dist/{src/slug.service.js → slug.service.js} +0 -0
  385. /package/dist/{src/sum.service.d.ts → sum.service.d.ts} +0 -0
  386. /package/dist/{src/sum.service.js → sum.service.js} +0 -0
  387. /package/dist/{src/thousands-separator.service.d.ts → thousands-separator.service.d.ts} +0 -0
  388. /package/dist/{src/thousands-separator.service.js → thousands-separator.service.js} +0 -0
  389. /package/dist/{src/time-zone-offset-value.vo.d.ts → time-zone-offset-value.vo.d.ts} +0 -0
  390. /package/dist/{src/time-zone-offset-value.vo.js → time-zone-offset-value.vo.js} +0 -0
  391. /package/dist/{src/timestamp-value.vo.d.ts → timestamp-value.vo.d.ts} +0 -0
  392. /package/dist/{src/timestamp-value.vo.js → timestamp-value.vo.js} +0 -0
  393. /package/dist/{src/timestamp.vo.d.ts → timestamp.vo.d.ts} +0 -0
  394. /package/dist/{src/timestamp.vo.js → timestamp.vo.js} +0 -0
  395. /package/dist/{src/timezone.vo.d.ts → timezone.vo.d.ts} +0 -0
  396. /package/dist/{src/timezone.vo.js → timezone.vo.js} +0 -0
  397. /package/dist/{src/ts-utils.d.ts → ts-utils.d.ts} +0 -0
  398. /package/dist/{src/ts-utils.js → ts-utils.js} +0 -0
  399. /package/dist/{src/url-with-slash.vo.d.ts → url-with-slash.vo.d.ts} +0 -0
  400. /package/dist/{src/url-with-slash.vo.js → url-with-slash.vo.js} +0 -0
  401. /package/dist/{src/url-without-slash.vo.d.ts → url-without-slash.vo.d.ts} +0 -0
  402. /package/dist/{src/url-without-slash.vo.js → url-without-slash.vo.js} +0 -0
  403. /package/dist/{src/visually-unambiguous-characters-generator.service.d.ts → visually-unambiguous-characters-generator.service.d.ts} +0 -0
  404. /package/dist/{src/visually-unambiguous-characters-generator.service.js → visually-unambiguous-characters-generator.service.js} +0 -0
  405. /package/dist/{src/week-iso-id.vo.d.ts → week-iso-id.vo.d.ts} +0 -0
  406. /package/dist/{src/week-iso-id.vo.js → week-iso-id.vo.js} +0 -0
  407. /package/dist/{src/week.vo.d.ts → week.vo.d.ts} +0 -0
  408. /package/dist/{src/week.vo.js → week.vo.js} +0 -0
  409. /package/dist/{src/weekday-iso-id.vo.d.ts → weekday-iso-id.vo.d.ts} +0 -0
  410. /package/dist/{src/weekday-iso-id.vo.js → weekday-iso-id.vo.js} +0 -0
  411. /package/dist/{src/weekday.vo.d.ts → weekday.vo.d.ts} +0 -0
  412. /package/dist/{src/weekday.vo.js → weekday.vo.js} +0 -0
  413. /package/dist/{src/weight-grams.vo.d.ts → weight-grams.vo.d.ts} +0 -0
  414. /package/dist/{src/weight-grams.vo.js → weight-grams.vo.js} +0 -0
  415. /package/dist/{src/weight.vo.d.ts → weight.vo.d.ts} +0 -0
  416. /package/dist/{src/weight.vo.js → weight.vo.js} +0 -0
  417. /package/dist/{src/year-iso-id.vo.d.ts → year-iso-id.vo.d.ts} +0 -0
  418. /package/dist/{src/year-iso-id.vo.js → year-iso-id.vo.js} +0 -0
  419. /package/dist/{src/year.vo.d.ts → year.vo.d.ts} +0 -0
  420. /package/dist/{src/year.vo.js → year.vo.js} +0 -0
  421. /package/dist/{src/z-score.service.d.ts → z-score.service.d.ts} +0 -0
  422. /package/dist/{src/z-score.service.js → z-score.service.js} +0 -0
@@ -1,39 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { Duration } from "../src/duration.service";
3
- import { RateLimiter } from "../src/rate-limiter.service";
4
- import { Timestamp } from "../src/timestamp.vo";
5
- import * as mocks from "./mocks";
6
- const duration = Duration.Ms(1000);
7
- const currentTimestampMs = Timestamp.fromNumber(0);
8
- describe("RateLimiter", () => {
9
- test("first invocation", () => {
10
- expect(new RateLimiter(duration).verify(currentTimestampMs).allowed).toEqual(true);
11
- });
12
- test("rejects invocations within the rate limit", () => {
13
- const rateLimiter = new RateLimiter(duration);
14
- const first = rateLimiter.verify(currentTimestampMs);
15
- expect(first.allowed).toEqual(true);
16
- const second = rateLimiter.verify(currentTimestampMs.add(duration).subtract(mocks.epsilon));
17
- expect(second.allowed).toEqual(false);
18
- // @ts-expect-error
19
- expect(second.remaining).toEqual(mocks.epsilon);
20
- });
21
- test("allows invocations at the limit boundary", () => {
22
- const rateLimiter = new RateLimiter(duration);
23
- const first = rateLimiter.verify(currentTimestampMs);
24
- expect(first.allowed).toEqual(true);
25
- const second = rateLimiter.verify(currentTimestampMs.add(duration));
26
- expect(second.allowed).toEqual(true);
27
- });
28
- test("rejects invocations around the boundaries", () => {
29
- const rateLimiter = new RateLimiter(duration);
30
- const first = rateLimiter.verify(currentTimestampMs);
31
- expect(first.allowed).toEqual(true);
32
- const second = rateLimiter.verify(currentTimestampMs.add(duration));
33
- expect(second.allowed).toEqual(true);
34
- const third = rateLimiter.verify(currentTimestampMs.add(duration).add(mocks.epsilon));
35
- expect(third.allowed).toEqual(false);
36
- const fourth = rateLimiter.verify(currentTimestampMs.add(duration).add(Duration.Ms(2)));
37
- expect(fourth.allowed).toEqual(false);
38
- });
39
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,22 +0,0 @@
1
- import { afterEach, beforeEach, describe, expect, jest, test } from "bun:test";
2
- import { RelativeDate } from "../src/relative-date.vo";
3
- import { Timestamp } from "../src/timestamp.vo";
4
- describe("RelativeDate", () => {
5
- const timestamp = Timestamp.fromNumber(new Date("2024-06-01T12:00:00Z").getTime());
6
- beforeEach(() => jest.setSystemTime(new Date("2024-06-01T12:05:00Z")));
7
- afterEach(() => jest.setSystemTime());
8
- describe("truthy", () => {
9
- test("formats a timestamp into relative format", () => {
10
- expect(RelativeDate.truthy(timestamp)).toEqual({ raw: timestamp.ms, relative: "5 minutes ago" });
11
- });
12
- });
13
- describe("falsy", () => {
14
- test("returns null for falsy value", () => {
15
- expect(RelativeDate.falsy(undefined)).toEqual(null);
16
- expect(RelativeDate.falsy(null)).toEqual(null);
17
- });
18
- test("formats a valid timestamp", () => {
19
- expect(RelativeDate.falsy(timestamp)).toEqual({ raw: timestamp.ms, relative: "5 minutes ago" });
20
- });
21
- });
22
- });
@@ -1,21 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import * as v from "valibot";
3
- import { ReorderingItemPositionValue } from "../src/reordering-item-position-value.vo";
4
- describe("ReorderingItemPositionValue", () => {
5
- test("happy path", () => {
6
- expect(v.safeParse(ReorderingItemPositionValue, 0).success).toEqual(true);
7
- expect(v.safeParse(ReorderingItemPositionValue, 1).success).toEqual(true);
8
- });
9
- test("rejects non-number - null", () => {
10
- expect(() => v.parse(ReorderingItemPositionValue, null)).toThrow("reordering.position.type");
11
- });
12
- test("rejects non-number - string", () => {
13
- expect(() => v.parse(ReorderingItemPositionValue, "123")).toThrow("reordering.position.type");
14
- });
15
- test("rejects negative numbers", () => {
16
- expect(() => v.parse(ReorderingItemPositionValue, -1)).toThrow("reordering.position.type");
17
- });
18
- test("rejects fractions", () => {
19
- expect(() => v.parse(ReorderingItemPositionValue, 1.5)).toThrow("reordering.position.type");
20
- });
21
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,76 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { ReorderingCalculator, ReorderingTransfer } from "../src/reordering.service";
3
- describe("Reordering", () => {
4
- test("add", () => {
5
- const calculator = new ReorderingCalculator();
6
- for (const id of ["a", "b", "c"])
7
- calculator.add(id);
8
- calculator.transfer(new ReorderingTransfer({ id: "c", to: 1 }));
9
- expect(calculator.read().ids).toEqual(["a", "c", "b"]);
10
- });
11
- test("delete", () => {
12
- const calculator = ReorderingCalculator.fromArray(["a", "b", "c"]);
13
- calculator.delete("b");
14
- expect(calculator.read().ids).toEqual(["a", "c"]);
15
- });
16
- test("delete - throws when item is not found", () => {
17
- expect(() => ReorderingCalculator.fromArray(["a", "b", "c"]).delete("d")).toThrow("reordering.cannot.find.item");
18
- });
19
- test("transfer - noop", () => {
20
- const calculator = ReorderingCalculator.fromArray(["aaa", "bbb", "ccc"]);
21
- calculator.transfer(new ReorderingTransfer({ id: "ccc", to: 2 }));
22
- expect(calculator.read().ids).toEqual(["aaa", "bbb", "ccc"]);
23
- });
24
- test("transfer - from end to middle", () => {
25
- const calculator = ReorderingCalculator.fromArray(["aaa", "bbb", "ccc"]);
26
- calculator.transfer(new ReorderingTransfer({ id: "ccc", to: 1 }));
27
- expect(calculator.read().ids).toEqual(["aaa", "ccc", "bbb"]);
28
- });
29
- test("transfer - from end to start", () => {
30
- const calculator = ReorderingCalculator.fromArray(["aaa", "bbb", "ccc"]);
31
- calculator.transfer(new ReorderingTransfer({ id: "ccc", to: 0 }));
32
- expect(calculator.read().ids).toEqual(["ccc", "aaa", "bbb"]);
33
- });
34
- test("transfer - from middle to start", () => {
35
- const calculator = ReorderingCalculator.fromArray(["aaa", "bbb", "ccc"]);
36
- calculator.transfer(new ReorderingTransfer({ id: "bbb", to: 0 }));
37
- expect(calculator.read().ids).toEqual(["bbb", "aaa", "ccc"]);
38
- });
39
- test("transfer - from middle to end", () => {
40
- const calculator = ReorderingCalculator.fromArray(["aaa", "bbb", "ccc"]);
41
- calculator.transfer(new ReorderingTransfer({ id: "bbb", to: 2 }));
42
- expect(calculator.read().ids).toEqual(["aaa", "ccc", "bbb"]);
43
- });
44
- test("transfer - from start to middle", () => {
45
- const calculator = ReorderingCalculator.fromArray(["aaa", "bbb", "ccc"]);
46
- calculator.transfer(new ReorderingTransfer({ id: "aaa", to: 1 }));
47
- expect(calculator.read().ids).toEqual(["bbb", "aaa", "ccc"]);
48
- });
49
- test("transfer - from start to end", () => {
50
- const calculator = ReorderingCalculator.fromArray(["aaa", "bbb", "ccc"]);
51
- calculator.transfer(new ReorderingTransfer({ id: "aaa", to: 2 }));
52
- expect(calculator.read().ids).toEqual(["bbb", "ccc", "aaa"]);
53
- });
54
- test("transfer - to back and to start", () => {
55
- const toEnd = new ReorderingTransfer({ id: "aaa", to: 2 });
56
- const toStart = new ReorderingTransfer({ id: "aaa", to: 0 });
57
- const calculator = ReorderingCalculator.fromArray(["aaa", "bbb", "ccc"]);
58
- calculator.transfer(toEnd);
59
- expect(calculator.read().ids).toEqual(["bbb", "ccc", "aaa"]);
60
- calculator.transfer(toStart);
61
- expect(calculator.read().ids).toEqual(["aaa", "bbb", "ccc"]);
62
- });
63
- test("transfer - error - cannot find current", () => {
64
- const calculator = ReorderingCalculator.fromArray(["aaa", "bbb", "ccc"]);
65
- expect(() => calculator.transfer(new ReorderingTransfer({ id: "ddd", to: 1 }))).toThrow("reordering.cannot.find.current");
66
- });
67
- test("transfer - error - cannot find target", () => {
68
- const calculator = ReorderingCalculator.fromArray(["aaa", "bbb", "ccc"]);
69
- expect(() => calculator.transfer(new ReorderingTransfer({ id: "ccc", to: 4 }))).toThrow("reordering.cannot.find.target");
70
- });
71
- test("transfer - 10 elements", () => {
72
- const calculator = ReorderingCalculator.fromArray(["a", "b", "c", "d", "e", "f", "g", "h", "i", "j"]);
73
- calculator.transfer(new ReorderingTransfer({ id: "h", to: 1 }));
74
- expect(calculator.read().ids).toEqual(["a", "h", "b", "c", "d", "e", "f", "g", "i", "j"]);
75
- });
76
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,8 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { repeat } from "../src/repeat";
3
- describe("repeat", () => {
4
- test("happy path", () => {
5
- const value = "abc";
6
- expect(repeat(value, 3)).toEqual([value, value, value]);
7
- });
8
- });
@@ -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 { RevisionValue } from "../src/revision-value.vo";
4
- describe("RevisionValue", () => {
5
- test("happy path", () => {
6
- expect(v.safeParse(RevisionValue, 0).success).toEqual(true);
7
- expect(v.safeParse(RevisionValue, 1).success).toEqual(true);
8
- });
9
- test("rejects non-number - null", () => {
10
- expect(() => v.parse(RevisionValue, null)).toThrow("revision.value.type");
11
- });
12
- test("rejects non-number - string", () => {
13
- expect(() => v.parse(RevisionValue, "123")).toThrow("revision.value.type");
14
- });
15
- test("rejects fractions", () => {
16
- expect(() => v.parse(RevisionValue, 1.5)).toThrow("revision.value.type");
17
- });
18
- test("rejects negative numbers", () => {
19
- expect(() => v.parse(RevisionValue, -1)).toThrow("revision.value.invalid");
20
- });
21
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,52 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import * as v from "valibot";
3
- import { ETag, WeakETag } from "../src/etags.vo";
4
- import { Revision } from "../src/revision.vo";
5
- import { RevisionValue } from "../src/revision-value.vo";
6
- describe("Revision", () => {
7
- test("happy path", () => {
8
- const value = v.parse(RevisionValue, 0);
9
- const revision = new Revision(value);
10
- expect(revision.value).toEqual(value);
11
- });
12
- test("throws for invalid input", () => {
13
- expect(() => new Revision("invalid")).toThrow("revision.value.type");
14
- });
15
- test("fromETag", () => {
16
- const etag = ETag.fromHeader("123");
17
- const revision = Revision.fromETag(etag);
18
- expect(revision.value).toEqual(v.parse(RevisionValue, 123));
19
- });
20
- test("fromETag - throws for null", () => {
21
- expect(() => Revision.fromETag(null)).toThrow("revision.missing");
22
- });
23
- test("fromWeakETag", () => {
24
- const weak = WeakETag.fromHeader("W/123");
25
- const revision = Revision.fromWeakETag(weak);
26
- expect(revision.value).toEqual(v.parse(RevisionValue, 123));
27
- });
28
- test("fromWeakETag - throws for null", () => {
29
- expect(() => Revision.fromWeakETag(null)).toThrow("revision.missing");
30
- });
31
- test("equals", () => {
32
- expect(new Revision(123).equals(new Revision(123).value)).toEqual(true);
33
- expect(new Revision(123).equals(new Revision(456).value)).toEqual(false);
34
- });
35
- test("validate success", () => {
36
- expect(() => new Revision(123).validate(new Revision(123).value)).not.toThrow();
37
- });
38
- test("validate - throws mismatch", () => {
39
- expect(() => new Revision(123).validate(new Revision(456).value)).toThrow("revision.mismatch");
40
- });
41
- test("next - returns a new revision with incremented value", () => {
42
- const revision = new Revision(123);
43
- const incremented = revision.next();
44
- expect(incremented.value).toEqual(v.parse(RevisionValue, revision.value + 1));
45
- });
46
- test("toString", () => {
47
- expect(new Revision(1).toString()).toEqual("1");
48
- });
49
- test("toJSON", () => {
50
- expect(new Revision(1).toJSON()).toEqual(1);
51
- });
52
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,17 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { RoundingDecimalStrategy } from "../src/rounding-decimal.strategy";
3
- describe("RoundingDecimalStrategy", () => {
4
- test("happy path", () => {
5
- const rounding = new RoundingDecimalStrategy(2);
6
- expect(rounding.round(5.678)).toEqual(5.68);
7
- expect(rounding.round(3.245)).toEqual(3.25);
8
- });
9
- test("invalid", () => {
10
- // @ts-expect-error
11
- expect(() => new RoundingDecimalStrategy("")).toThrow("rounding.decimal.type");
12
- expect(() => new RoundingDecimalStrategy(-1)).toThrow("rounding.decimal.invalid");
13
- expect(() => new RoundingDecimalStrategy(0)).toThrow("rounding.decimal.invalid");
14
- expect(() => new RoundingDecimalStrategy(1.5)).toThrow("rounding.decimal.invalid");
15
- expect(() => new RoundingDecimalStrategy(101)).toThrow("rounding.decimal.invalid");
16
- });
17
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,9 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { RoundingDownStrategy } from "../src/rounding-down.strategy";
3
- describe("RoundingDownStrategy", () => {
4
- test("happy path", () => {
5
- const rounding = new RoundingDownStrategy();
6
- expect(rounding.round(5.6)).toEqual(5);
7
- expect(rounding.round(3.2)).toEqual(3);
8
- });
9
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,9 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { RoundingToNearestStrategy } from "../src/rounding-to-nearest.strategy";
3
- describe("RoundingToNearestStrategy", () => {
4
- test("happy path", () => {
5
- const rounding = new RoundingToNearestStrategy();
6
- expect(rounding.round(5.6)).toEqual(6);
7
- expect(rounding.round(3.2)).toEqual(3);
8
- });
9
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,9 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { RoundingUpStrategy } from "../src/rounding-up.strategy";
3
- describe("RoundingUpStrategy", () => {
4
- test("happy path", () => {
5
- const rounding = new RoundingUpStrategy();
6
- expect(rounding.round(5.6)).toEqual(6);
7
- expect(rounding.round(3.2)).toEqual(4);
8
- });
9
- });
@@ -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 { SizeBytes } from "../src/size-bytes.vo";
4
- describe("SizeBytes", () => {
5
- test("happy path", () => {
6
- expect(v.safeParse(SizeBytes, 0).success).toEqual(true);
7
- expect(v.safeParse(SizeBytes, 123).success).toEqual(true);
8
- });
9
- test("rejects non-number - null", () => {
10
- expect(() => v.parse(SizeBytes, null)).toThrow("size.bytes.invalid");
11
- });
12
- test("rejects non-number - string", () => {
13
- expect(() => v.parse(SizeBytes, "123")).toThrow("size.bytes.invalid");
14
- });
15
- test("rejects negative numbers", () => {
16
- expect(() => v.parse(SizeBytes, -1)).toThrow("size.bytes.invalid");
17
- });
18
- test("rejects fractions", () => {
19
- expect(() => v.parse(SizeBytes, 1.5)).toThrow("size.bytes.invalid");
20
- });
21
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,93 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import * as v from "valibot";
3
- import { Size } from "../src/size.vo";
4
- import { SizeBytes } from "../src/size-bytes.vo";
5
- describe("Size", () => {
6
- test("happy path", () => {
7
- expect(Size.fromBytes(500).toString()).toEqual("500 b");
8
- expect(Size.fromKb(500).toString()).toEqual("500 kB");
9
- expect(Size.fromMB(2).toString()).toEqual("2 MB");
10
- expect(Size.fromGB(2).toString()).toEqual("2 GB");
11
- });
12
- test("rejects invalid values", () => {
13
- expect(() => Size.fromKb(1.555)).toThrow("size.bytes.invalid");
14
- });
15
- test("convert - bytes to bytes", () => {
16
- expect(Size.fromBytes(4096).toBytes()).toEqual(v.parse(SizeBytes, 4096));
17
- });
18
- test("convert - kB to bytes", () => {
19
- expect(Size.fromKb(512).toBytes()).toEqual(v.parse(SizeBytes, 524288));
20
- });
21
- test("convert - MB to bytes", () => {
22
- expect(Size.fromMB(1.5).toBytes()).toEqual(v.parse(SizeBytes, 1572864));
23
- });
24
- test("convert - GB to bytes", () => {
25
- expect(Size.fromGB(1.5).toBytes()).toEqual(v.parse(SizeBytes, 1610612736));
26
- });
27
- test("tokB", () => {
28
- expect(Size.fromBytes(1023).tokB()).toEqual(1);
29
- expect(Size.fromBytes(1024).tokB()).toEqual(1);
30
- expect(Size.fromBytes(1025).tokB()).toEqual(2);
31
- });
32
- test("toMB", () => {
33
- expect(Size.fromKb(1023).toMB()).toEqual(1);
34
- expect(Size.fromKb(1024).toMB()).toEqual(1);
35
- expect(Size.fromKb(1025).toMB()).toEqual(2);
36
- });
37
- test("toGB", () => {
38
- expect(Size.fromMB(1023).toGB()).toEqual(1);
39
- expect(Size.fromMB(1024).toGB()).toEqual(1);
40
- expect(Size.fromMB(1025).toGB()).toEqual(2);
41
- });
42
- test("equals", () => {
43
- expect(Size.fromGB(1).equals(Size.fromGB(1))).toEqual(true);
44
- expect(Size.fromMB(1).equals(Size.fromMB(2))).toEqual(false);
45
- });
46
- test("isSmallerThan", () => {
47
- expect(Size.fromMB(1).isSmallerThan(Size.fromGB(1))).toEqual(true);
48
- expect(Size.fromMB(1).isSmallerThan(Size.fromMB(1))).toEqual(false);
49
- expect(Size.fromGB(2).isSmallerThan(Size.fromGB(1))).toEqual(false);
50
- });
51
- test("isGreaterThan", () => {
52
- expect(Size.fromGB(1).isGreaterThan(Size.fromMB(1))).toEqual(true);
53
- expect(Size.fromMB(1).isGreaterThan(Size.fromMB(1))).toEqual(false);
54
- expect(Size.fromMB(1).isGreaterThan(Size.fromMB(2))).toEqual(false);
55
- });
56
- test("format - bytes source", () => {
57
- const value = Size.fromBytes(1024);
58
- expect(value.format(Size.unit.b)).toEqual("1024 b");
59
- expect(value.format(Size.unit.kB)).toEqual("1 kB");
60
- expect(value.format(Size.unit.MB)).toEqual("0 MB");
61
- expect(value.format(Size.unit.GB)).toEqual("0 GB");
62
- });
63
- test("format - kB source", () => {
64
- const value = Size.fromKb(512);
65
- expect(value.format(Size.unit.b)).toEqual("524288 b");
66
- expect(value.format(Size.unit.kB)).toEqual("512 kB");
67
- expect(value.format(Size.unit.MB)).toEqual("0.5 MB");
68
- expect(value.format(Size.unit.GB)).toEqual("0 GB");
69
- });
70
- test("format - MB source", () => {
71
- const value = Size.fromMB(128);
72
- expect(value.format(Size.unit.b)).toEqual("134217728 b");
73
- expect(value.format(Size.unit.kB)).toEqual("131072 kB");
74
- expect(value.format(Size.unit.MB)).toEqual("128 MB");
75
- expect(value.format(Size.unit.GB)).toEqual("0.13 GB");
76
- });
77
- test("format - GB source", () => {
78
- const value = Size.fromGB(2);
79
- expect(value.format(Size.unit.b)).toEqual("2147483648 b");
80
- expect(value.format(Size.unit.kB)).toEqual("2097152 kB");
81
- expect(value.format(Size.unit.MB)).toEqual("2048 MB");
82
- expect(value.format(Size.unit.GB)).toEqual("2 GB");
83
- });
84
- test("toBytes", () => {
85
- expect(Size.toBytes({ unit: Size.unit.GB, value: 1 })).toEqual(v.parse(SizeBytes, 1073741824));
86
- });
87
- test("toString", () => {
88
- expect(Size.fromGB(1).toString()).toEqual("1 GB");
89
- });
90
- test("toJSON", () => {
91
- expect(Size.fromGB(1).toJSON()).toEqual({ bytes: 1073741824 });
92
- });
93
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,45 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { Slug } from "../src/slug.service";
3
- describe("Slug", () => {
4
- test("happy path", () => {
5
- expect(Slug.generate("input")).toEqual("input");
6
- expect(Slug.generate("file123")).toEqual("file123");
7
- });
8
- test("spaces and punctuation", () => {
9
- expect(Slug.generate("happy path")).toEqual("happy-path");
10
- expect(Slug.generate("hello, world!")).toEqual("hello-world");
11
- expect(Slug.generate("don't stop")).toEqual("don-t-stop");
12
- expect(Slug.generate("price: $100")).toEqual("price-100");
13
- expect(Slug.generate("Product: Foo Bar™ (v2.0)")).toEqual("product-foo-bar-v2-0");
14
- expect(Slug.generate("Hello... World???")).toEqual("hello-world");
15
- expect(Slug.generate("__private__field__")).toEqual("private-field");
16
- });
17
- test("collapses multiple consecutive separators", () => {
18
- expect(Slug.generate("hello!!world")).toEqual("hello-world");
19
- expect(Slug.generate("a b c")).toEqual("a-b-c");
20
- expect(Slug.generate("x---y----z")).toEqual("x-y-z");
21
- });
22
- test("trims leading and trailing separators", () => {
23
- expect(Slug.generate("-input")).toEqual("input");
24
- expect(Slug.generate("input-")).toEqual("input");
25
- expect(Slug.generate("--input--")).toEqual("input");
26
- expect(Slug.generate("!!!input!!!")).toEqual("input");
27
- });
28
- test("various letters", () => {
29
- expect(Slug.generate("bądź sobą")).toEqual("bądź-sobą");
30
- expect(Slug.generate("你好世界")).toEqual("你好世界");
31
- expect(Slug.generate("مرحبا بالعالم")).toEqual("مرحبا-بالعالم");
32
- expect(Slug.generate("Αγία Σοφία")).toEqual("αγία-σοφία");
33
- expect(Slug.generate("Café au lait")).toEqual("café-au-lait");
34
- });
35
- test("custom separators", () => {
36
- expect(Slug.generate("hello world", "_")).toEqual("hello_world");
37
- expect(Slug.generate("a b c", "+")).toEqual("a+b+c");
38
- });
39
- test("empty cases", () => {
40
- expect(Slug.generate("")).toEqual("");
41
- expect(Slug.generate("!!!")).toEqual("");
42
- expect(Slug.generate("---")).toEqual("");
43
- expect(Slug.generate(" ")).toEqual("");
44
- });
45
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,22 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { Sum } from "../src/sum.service";
3
- describe("Sum", () => {
4
- describe("naive", () => {
5
- expect(Sum.of([1])).toEqual(1);
6
- expect(Sum.of([1, 2])).toEqual(3);
7
- expect(Sum.of([1, 3, 6])).toEqual(10);
8
- expect(Sum.of([0, 0, 0])).toEqual(0);
9
- expect(Sum.of([])).toEqual(0);
10
- expect(Sum.of([5, -2, -3])).toEqual(0);
11
- expect(Sum.of([0.1, 0.2])).toBeCloseTo(0.3, 12);
12
- });
13
- test("precise", () => {
14
- const values = [1e12, ...Array.from({ length: 1000 }, () => 1e-3)];
15
- const naive = Sum.of(values);
16
- const expected = 1e12 + 1;
17
- const precise = Sum.precise(values);
18
- expect(precise).toBeCloseTo(expected, 9);
19
- expect(naive).toBeCloseTo(expected, 1);
20
- expect(Math.abs(precise - expected)).toBeLessThanOrEqual(Math.abs(naive - expected));
21
- });
22
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,27 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import { ThousandsSeparator } from "../src/thousands-separator.service";
3
- describe("ThousandsSeparator", () => {
4
- test("default separator", () => {
5
- const cases = [
6
- [999, "999"],
7
- [999.5, "999.5"],
8
- [1000, "1 000"],
9
- [1000.99, "1 000.99"],
10
- [15000, "15 000"],
11
- [15000.5, "15 000.5"],
12
- [150000, "150 000"],
13
- [150000.99, "150 000.99"],
14
- [1500000, "1 500 000"],
15
- [1500000.99, "1 500 000.99"],
16
- [-1000, "-1 000"],
17
- [-1500000.5, "-1 500 000.5"],
18
- ];
19
- for (const [value, expected] of cases) {
20
- expect(ThousandsSeparator.format(value)).toEqual(expected);
21
- }
22
- });
23
- test("custom separator", () => {
24
- expect(ThousandsSeparator.format(150000.99, "_")).toEqual("150_000.99");
25
- expect(ThousandsSeparator.format(-1234567.89, ",")).toEqual("-1,234,567.89");
26
- });
27
- });
@@ -1 +0,0 @@
1
- export {};
@@ -1,27 +0,0 @@
1
- import { describe, expect, test } from "bun:test";
2
- import * as v from "valibot";
3
- import { TimeZoneOffsetValue } from "../src/time-zone-offset-value.vo";
4
- describe("TimeZoneOffsetValue", () => {
5
- test("happy path", () => {
6
- expect(v.safeParse(TimeZoneOffsetValue, "720").success).toEqual(true);
7
- expect(v.safeParse(TimeZoneOffsetValue, "-840").success).toEqual(true);
8
- expect(v.safeParse(TimeZoneOffsetValue, "0").success).toEqual(true);
9
- });
10
- test("rejects - fractions", () => {
11
- expect(() => v.parse(TimeZoneOffsetValue, "2.5")).toThrow("time.zone.offset.value.type");
12
- });
13
- test("rejects - min", () => {
14
- expect(() => v.parse(TimeZoneOffsetValue, "-841")).toThrow("time.zone.offset.value.min");
15
- });
16
- test("rejects - max", () => {
17
- expect(() => v.parse(TimeZoneOffsetValue, "721")).toThrow("time.zone.offset.value.max");
18
- });
19
- test("transforms invalid values to 0", () => {
20
- // @ts-expect-error Value comparison
21
- expect(v.parse(TimeZoneOffsetValue, undefined)).toEqual(0);
22
- // @ts-expect-error Value comparison
23
- expect(v.parse(TimeZoneOffsetValue, null)).toEqual(0);
24
- // @ts-expect-error Value comparison
25
- expect(v.parse(TimeZoneOffsetValue, "")).toEqual(0);
26
- });
27
- });
@@ -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 { TimestampValue } from "../src/timestamp-value.vo";
4
- describe("TimestampValue", () => {
5
- test("happy path", () => {
6
- expect(v.safeParse(TimestampValue, 0).success).toEqual(true);
7
- expect(v.safeParse(TimestampValue, Date.now()).success).toEqual(true);
8
- });
9
- test("rejects non-number - null", () => {
10
- expect(() => v.parse(TimestampValue, null)).toThrow("timestamp.invalid");
11
- });
12
- test("rejects non-number - string", () => {
13
- expect(() => v.parse(TimestampValue, "123")).toThrow("timestamp.invalid");
14
- });
15
- test("rejects negative numbers", () => {
16
- expect(() => v.parse(TimestampValue, -1)).toThrow("timestamp.invalid");
17
- });
18
- test("rejects fractions", () => {
19
- expect(() => v.parse(TimestampValue, 1.5)).toThrow("timestamp.invalid");
20
- });
21
- });
@@ -1 +0,0 @@
1
- export {};