@haskou/value-objects 1.1.1 → 1.1.3

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 (464) hide show
  1. package/dist/src/errors/BaseError.d.ts +8 -0
  2. package/dist/src/errors/BaseError.d.ts.map +1 -0
  3. package/dist/src/errors/BaseError.js +22 -0
  4. package/dist/src/errors/BaseError.js.map +1 -0
  5. package/dist/src/errors/DomainError.d.ts +7 -0
  6. package/dist/src/errors/DomainError.d.ts.map +1 -0
  7. package/dist/src/errors/DomainError.js +15 -0
  8. package/dist/src/errors/DomainError.js.map +1 -0
  9. package/dist/src/errors/InvalidColorError.d.ts +5 -0
  10. package/dist/src/errors/InvalidColorError.d.ts.map +1 -0
  11. package/dist/src/errors/InvalidColorError.js +11 -0
  12. package/dist/src/errors/InvalidColorError.js.map +1 -0
  13. package/dist/src/errors/InvalidDayError.d.ts +5 -0
  14. package/dist/src/errors/InvalidDayError.d.ts.map +1 -0
  15. package/dist/src/errors/InvalidDayError.js +11 -0
  16. package/dist/src/errors/InvalidDayError.js.map +1 -0
  17. package/dist/src/errors/InvalidDayFormatError.d.ts +5 -0
  18. package/dist/src/errors/InvalidDayFormatError.d.ts.map +1 -0
  19. package/dist/src/errors/InvalidDayFormatError.js +11 -0
  20. package/dist/src/errors/InvalidDayFormatError.js.map +1 -0
  21. package/dist/src/errors/InvalidEmailError.d.ts +5 -0
  22. package/dist/src/errors/InvalidEmailError.d.ts.map +1 -0
  23. package/dist/src/errors/InvalidEmailError.js +11 -0
  24. package/dist/src/errors/InvalidEmailError.js.map +1 -0
  25. package/dist/src/errors/InvalidFormatError.d.ts +5 -0
  26. package/dist/src/errors/InvalidFormatError.d.ts.map +1 -0
  27. package/dist/src/errors/InvalidFormatError.js +11 -0
  28. package/dist/src/errors/InvalidFormatError.js.map +1 -0
  29. package/dist/src/errors/InvalidHashError.d.ts +5 -0
  30. package/dist/src/errors/InvalidHashError.d.ts.map +1 -0
  31. package/dist/src/errors/InvalidHashError.js +11 -0
  32. package/dist/src/errors/InvalidHashError.js.map +1 -0
  33. package/dist/src/errors/InvalidHourError.d.ts +5 -0
  34. package/dist/src/errors/InvalidHourError.d.ts.map +1 -0
  35. package/dist/src/errors/InvalidHourError.js +11 -0
  36. package/dist/src/errors/InvalidHourError.js.map +1 -0
  37. package/dist/src/errors/InvalidIntegerError.d.ts +5 -0
  38. package/dist/src/errors/InvalidIntegerError.d.ts.map +1 -0
  39. package/dist/src/errors/InvalidIntegerError.js +11 -0
  40. package/dist/src/errors/InvalidIntegerError.js.map +1 -0
  41. package/dist/src/errors/InvalidLatitudeError.d.ts +5 -0
  42. package/dist/src/errors/InvalidLatitudeError.d.ts.map +1 -0
  43. package/dist/src/errors/InvalidLatitudeError.js +11 -0
  44. package/dist/src/errors/InvalidLatitudeError.js.map +1 -0
  45. package/dist/src/errors/InvalidLengthError.d.ts +5 -0
  46. package/dist/src/errors/InvalidLengthError.d.ts.map +1 -0
  47. package/dist/src/errors/InvalidLengthError.js +11 -0
  48. package/dist/src/errors/InvalidLengthError.js.map +1 -0
  49. package/dist/src/errors/InvalidLongitudeError.d.ts +5 -0
  50. package/dist/src/errors/InvalidLongitudeError.d.ts.map +1 -0
  51. package/dist/src/errors/InvalidLongitudeError.js +11 -0
  52. package/dist/src/errors/InvalidLongitudeError.js.map +1 -0
  53. package/dist/src/errors/InvalidMinutesError.d.ts +5 -0
  54. package/dist/src/errors/InvalidMinutesError.d.ts.map +1 -0
  55. package/dist/src/errors/InvalidMinutesError.js +11 -0
  56. package/dist/src/errors/InvalidMinutesError.js.map +1 -0
  57. package/dist/src/errors/InvalidNumberError.d.ts +5 -0
  58. package/dist/src/errors/InvalidNumberError.d.ts.map +1 -0
  59. package/dist/src/errors/InvalidNumberError.js +11 -0
  60. package/dist/src/errors/InvalidNumberError.js.map +1 -0
  61. package/dist/src/errors/InvalidPositiveNumberError.d.ts +5 -0
  62. package/dist/src/errors/InvalidPositiveNumberError.d.ts.map +1 -0
  63. package/dist/src/errors/InvalidPositiveNumberError.js +11 -0
  64. package/dist/src/errors/InvalidPositiveNumberError.js.map +1 -0
  65. package/dist/src/errors/InvalidStringLengthError.d.ts +5 -0
  66. package/dist/src/errors/InvalidStringLengthError.d.ts.map +1 -0
  67. package/dist/src/errors/InvalidStringLengthError.js +11 -0
  68. package/dist/src/errors/InvalidStringLengthError.js.map +1 -0
  69. package/dist/src/errors/InvalidTimestampIntervalError.d.ts +6 -0
  70. package/dist/src/errors/InvalidTimestampIntervalError.d.ts.map +1 -0
  71. package/dist/src/errors/InvalidTimestampIntervalError.js +11 -0
  72. package/dist/src/errors/InvalidTimestampIntervalError.js.map +1 -0
  73. package/dist/src/errors/InvalidValueError.d.ts +5 -0
  74. package/dist/src/errors/InvalidValueError.d.ts.map +1 -0
  75. package/dist/src/errors/InvalidValueError.js +11 -0
  76. package/dist/src/errors/InvalidValueError.js.map +1 -0
  77. package/dist/src/errors/NullObjectError.d.ts +5 -0
  78. package/dist/src/errors/NullObjectError.d.ts.map +1 -0
  79. package/dist/src/errors/NullObjectError.js +12 -0
  80. package/dist/src/errors/NullObjectError.js.map +1 -0
  81. package/dist/src/errors/ValueNotInEnumError.d.ts +5 -0
  82. package/dist/src/errors/ValueNotInEnumError.d.ts.map +1 -0
  83. package/dist/src/errors/ValueNotInEnumError.js +11 -0
  84. package/dist/src/errors/ValueNotInEnumError.js.map +1 -0
  85. package/{src/errors/index.ts → dist/src/errors/index.d.ts} +1 -0
  86. package/dist/src/errors/index.d.ts.map +1 -0
  87. package/dist/src/errors/index.js +24 -0
  88. package/dist/src/errors/index.js.map +1 -0
  89. package/{src/index.ts → dist/src/index.d.ts} +1 -0
  90. package/dist/src/index.d.ts.map +1 -0
  91. package/dist/src/index.js +9 -0
  92. package/dist/src/index.js.map +1 -0
  93. package/dist/src/interfaces/PrimitiveOf.d.ts +5 -0
  94. package/dist/src/interfaces/PrimitiveOf.d.ts.map +1 -0
  95. package/dist/src/interfaces/PrimitiveOf.js +3 -0
  96. package/dist/src/interfaces/PrimitiveOf.js.map +1 -0
  97. package/dist/src/interfaces/index.d.ts +2 -0
  98. package/dist/src/interfaces/index.d.ts.map +1 -0
  99. package/dist/src/interfaces/index.js +5 -0
  100. package/dist/src/interfaces/index.js.map +1 -0
  101. package/dist/src/patterns/Assert.d.ts +5 -0
  102. package/dist/src/patterns/Assert.d.ts.map +1 -0
  103. package/dist/src/patterns/Assert.js +11 -0
  104. package/dist/src/patterns/Assert.js.map +1 -0
  105. package/dist/src/patterns/index.d.ts +2 -0
  106. package/dist/src/patterns/index.d.ts.map +1 -0
  107. package/dist/src/patterns/index.js +5 -0
  108. package/dist/src/patterns/index.js.map +1 -0
  109. package/{src/types/Nullish.ts → dist/src/types/Nullish.d.ts} +1 -0
  110. package/dist/src/types/Nullish.d.ts.map +1 -0
  111. package/dist/src/types/Nullish.js +3 -0
  112. package/dist/src/types/Nullish.js.map +1 -0
  113. package/{src/types/Primitive.ts → dist/src/types/Primitive.d.ts} +1 -0
  114. package/dist/src/types/Primitive.d.ts.map +1 -0
  115. package/dist/src/types/Primitive.js +3 -0
  116. package/dist/src/types/Primitive.js.map +1 -0
  117. package/{src/types/index.ts → dist/src/types/index.d.ts} +1 -0
  118. package/dist/src/types/index.d.ts.map +1 -0
  119. package/dist/src/types/index.js +6 -0
  120. package/dist/src/types/index.js.map +1 -0
  121. package/dist/src/value-objects/Color.d.ts +19 -0
  122. package/dist/src/value-objects/Color.d.ts.map +1 -0
  123. package/dist/src/value-objects/Color.js +37 -0
  124. package/dist/src/value-objects/Color.js.map +1 -0
  125. package/dist/src/value-objects/Email.d.ts +6 -0
  126. package/dist/src/value-objects/Email.d.ts.map +1 -0
  127. package/dist/src/value-objects/Email.js +21 -0
  128. package/dist/src/value-objects/Email.js.map +1 -0
  129. package/dist/src/value-objects/Enum.d.ts +9 -0
  130. package/dist/src/value-objects/Enum.d.ts.map +1 -0
  131. package/dist/src/value-objects/Enum.js +24 -0
  132. package/dist/src/value-objects/Enum.js.map +1 -0
  133. package/dist/src/value-objects/Integer.d.ts +6 -0
  134. package/dist/src/value-objects/Integer.d.ts.map +1 -0
  135. package/dist/src/value-objects/Integer.js +21 -0
  136. package/dist/src/value-objects/Integer.js.map +1 -0
  137. package/dist/src/value-objects/NullObject.d.ts +8 -0
  138. package/dist/src/value-objects/NullObject.d.ts.map +1 -0
  139. package/dist/src/value-objects/NullObject.js +43 -0
  140. package/dist/src/value-objects/NullObject.js.map +1 -0
  141. package/dist/src/value-objects/NumberValueObject.d.ts +15 -0
  142. package/dist/src/value-objects/NumberValueObject.d.ts.map +1 -0
  143. package/dist/src/value-objects/NumberValueObject.js +48 -0
  144. package/dist/src/value-objects/NumberValueObject.js.map +1 -0
  145. package/dist/src/value-objects/PositiveNumber.d.ts +6 -0
  146. package/dist/src/value-objects/PositiveNumber.d.ts.map +1 -0
  147. package/dist/src/value-objects/PositiveNumber.js +21 -0
  148. package/dist/src/value-objects/PositiveNumber.js.map +1 -0
  149. package/dist/src/value-objects/StringValueObject.d.ts +7 -0
  150. package/dist/src/value-objects/StringValueObject.d.ts.map +1 -0
  151. package/dist/src/value-objects/StringValueObject.js +24 -0
  152. package/dist/src/value-objects/StringValueObject.js.map +1 -0
  153. package/dist/src/value-objects/ValueObject.d.ts +12 -0
  154. package/dist/src/value-objects/ValueObject.d.ts.map +1 -0
  155. package/dist/src/value-objects/ValueObject.js +33 -0
  156. package/dist/src/value-objects/ValueObject.js.map +1 -0
  157. package/dist/src/value-objects/coordinates/Coordinates.d.ts +12 -0
  158. package/dist/src/value-objects/coordinates/Coordinates.d.ts.map +1 -0
  159. package/dist/src/value-objects/coordinates/Coordinates.js +28 -0
  160. package/dist/src/value-objects/coordinates/Coordinates.js.map +1 -0
  161. package/dist/src/value-objects/coordinates/Latitude.d.ts +8 -0
  162. package/dist/src/value-objects/coordinates/Latitude.d.ts.map +1 -0
  163. package/dist/src/value-objects/coordinates/Latitude.js +21 -0
  164. package/dist/src/value-objects/coordinates/Latitude.js.map +1 -0
  165. package/dist/src/value-objects/coordinates/Longitude.d.ts +8 -0
  166. package/dist/src/value-objects/coordinates/Longitude.d.ts.map +1 -0
  167. package/dist/src/value-objects/coordinates/Longitude.js +21 -0
  168. package/dist/src/value-objects/coordinates/Longitude.js.map +1 -0
  169. package/{src/value-objects/coordinates/index.ts → dist/src/value-objects/coordinates/index.d.ts} +1 -0
  170. package/dist/src/value-objects/coordinates/index.d.ts.map +1 -0
  171. package/dist/src/value-objects/coordinates/index.js +7 -0
  172. package/dist/src/value-objects/coordinates/index.js.map +1 -0
  173. package/dist/src/value-objects/hashes/Hash.d.ts +7 -0
  174. package/dist/src/value-objects/hashes/Hash.d.ts.map +1 -0
  175. package/dist/src/value-objects/hashes/Hash.js +19 -0
  176. package/dist/src/value-objects/hashes/Hash.js.map +1 -0
  177. package/dist/src/value-objects/hashes/MD5Hash.d.ts +8 -0
  178. package/dist/src/value-objects/hashes/MD5Hash.d.ts.map +1 -0
  179. package/dist/src/value-objects/hashes/MD5Hash.js +26 -0
  180. package/dist/src/value-objects/hashes/MD5Hash.js.map +1 -0
  181. package/dist/src/value-objects/hashes/SHA256Hash.d.ts +9 -0
  182. package/dist/src/value-objects/hashes/SHA256Hash.d.ts.map +1 -0
  183. package/dist/src/value-objects/hashes/SHA256Hash.js +29 -0
  184. package/dist/src/value-objects/hashes/SHA256Hash.js.map +1 -0
  185. package/dist/src/value-objects/hashes/SHA512Hash.d.ts +9 -0
  186. package/dist/src/value-objects/hashes/SHA512Hash.d.ts.map +1 -0
  187. package/dist/src/value-objects/hashes/SHA512Hash.js +29 -0
  188. package/dist/src/value-objects/hashes/SHA512Hash.js.map +1 -0
  189. package/{src/value-objects/hashes/index.ts → dist/src/value-objects/hashes/index.d.ts} +1 -0
  190. package/dist/src/value-objects/hashes/index.d.ts.map +1 -0
  191. package/dist/src/value-objects/hashes/index.js +8 -0
  192. package/dist/src/value-objects/hashes/index.js.map +1 -0
  193. package/dist/src/value-objects/ids/ShortId.d.ts +10 -0
  194. package/dist/src/value-objects/ids/ShortId.d.ts.map +1 -0
  195. package/dist/src/value-objects/ids/ShortId.js +30 -0
  196. package/dist/src/value-objects/ids/ShortId.js.map +1 -0
  197. package/dist/src/value-objects/ids/UUID.d.ts +10 -0
  198. package/dist/src/value-objects/ids/UUID.d.ts.map +1 -0
  199. package/dist/src/value-objects/ids/UUID.js +29 -0
  200. package/dist/src/value-objects/ids/UUID.js.map +1 -0
  201. package/{src/value-objects/ids/index.ts → dist/src/value-objects/ids/index.d.ts} +1 -0
  202. package/dist/src/value-objects/ids/index.d.ts.map +1 -0
  203. package/dist/src/value-objects/ids/index.js +6 -0
  204. package/dist/src/value-objects/ids/index.js.map +1 -0
  205. package/{src/value-objects/index.ts → dist/src/value-objects/index.d.ts} +1 -0
  206. package/dist/src/value-objects/index.d.ts.map +1 -0
  207. package/dist/src/value-objects/index.js +16 -0
  208. package/dist/src/value-objects/index.js.map +1 -0
  209. package/dist/src/value-objects/time/CalendarDay.d.ts +25 -0
  210. package/dist/src/value-objects/time/CalendarDay.d.ts.map +1 -0
  211. package/dist/src/value-objects/time/CalendarDay.js +74 -0
  212. package/dist/src/value-objects/time/CalendarDay.js.map +1 -0
  213. package/dist/src/value-objects/time/Day.d.ts +7 -0
  214. package/dist/src/value-objects/time/Day.d.ts.map +1 -0
  215. package/dist/src/value-objects/time/Day.js +18 -0
  216. package/dist/src/value-objects/time/Day.js.map +1 -0
  217. package/dist/src/value-objects/time/DayOfWeek.d.ts +34 -0
  218. package/dist/src/value-objects/time/DayOfWeek.d.ts.map +1 -0
  219. package/dist/src/value-objects/time/DayOfWeek.js +52 -0
  220. package/dist/src/value-objects/time/DayOfWeek.js.map +1 -0
  221. package/dist/src/value-objects/time/Duration.d.ts +23 -0
  222. package/dist/src/value-objects/time/Duration.d.ts.map +1 -0
  223. package/dist/src/value-objects/time/Duration.js +79 -0
  224. package/dist/src/value-objects/time/Duration.js.map +1 -0
  225. package/dist/src/value-objects/time/Hour.d.ts +15 -0
  226. package/dist/src/value-objects/time/Hour.d.ts.map +1 -0
  227. package/dist/src/value-objects/time/Hour.js +81 -0
  228. package/dist/src/value-objects/time/Hour.js.map +1 -0
  229. package/dist/src/value-objects/time/Month.d.ts +18 -0
  230. package/dist/src/value-objects/time/Month.d.ts.map +1 -0
  231. package/dist/src/value-objects/time/Month.js +41 -0
  232. package/dist/src/value-objects/time/Month.js.map +1 -0
  233. package/dist/src/value-objects/time/MonthOfYear.d.ts +17 -0
  234. package/dist/src/value-objects/time/MonthOfYear.d.ts.map +1 -0
  235. package/dist/src/value-objects/time/MonthOfYear.js +45 -0
  236. package/dist/src/value-objects/time/MonthOfYear.js.map +1 -0
  237. package/dist/src/value-objects/time/Timestamp.d.ts +51 -0
  238. package/dist/src/value-objects/time/Timestamp.d.ts.map +1 -0
  239. package/dist/src/value-objects/time/Timestamp.js +156 -0
  240. package/dist/src/value-objects/time/Timestamp.js.map +1 -0
  241. package/dist/src/value-objects/time/TimestampInterval.d.ts +26 -0
  242. package/dist/src/value-objects/time/TimestampInterval.d.ts.map +1 -0
  243. package/dist/src/value-objects/time/TimestampInterval.js +88 -0
  244. package/dist/src/value-objects/time/TimestampInterval.js.map +1 -0
  245. package/dist/src/value-objects/time/Year.d.ts +10 -0
  246. package/dist/src/value-objects/time/Year.d.ts.map +1 -0
  247. package/dist/src/value-objects/time/Year.js +26 -0
  248. package/dist/src/value-objects/time/Year.js.map +1 -0
  249. package/{src/value-objects/time/index.ts → dist/src/value-objects/time/index.d.ts} +1 -0
  250. package/dist/src/value-objects/time/index.d.ts.map +1 -0
  251. package/dist/src/value-objects/time/index.js +14 -0
  252. package/dist/src/value-objects/time/index.js.map +1 -0
  253. package/dist/tests/errors/BaseError.spec.d.ts +2 -0
  254. package/dist/tests/errors/BaseError.spec.d.ts.map +1 -0
  255. package/dist/tests/errors/BaseError.spec.js +54 -0
  256. package/dist/tests/errors/BaseError.spec.js.map +1 -0
  257. package/dist/tests/errors/DomainError.spec.d.ts +2 -0
  258. package/dist/tests/errors/DomainError.spec.d.ts.map +1 -0
  259. package/dist/tests/errors/DomainError.spec.js +47 -0
  260. package/dist/tests/errors/DomainError.spec.js.map +1 -0
  261. package/dist/tests/patterns/Assert.spec.d.ts +2 -0
  262. package/dist/tests/patterns/Assert.spec.d.ts.map +1 -0
  263. package/dist/tests/patterns/Assert.spec.js +27 -0
  264. package/dist/tests/patterns/Assert.spec.js.map +1 -0
  265. package/dist/tests/setup.jest.d.ts +2 -0
  266. package/dist/tests/setup.jest.d.ts.map +1 -0
  267. package/dist/tests/setup.jest.js +6 -0
  268. package/dist/tests/setup.jest.js.map +1 -0
  269. package/dist/tests/value-objects/Color.spec.d.ts +2 -0
  270. package/dist/tests/value-objects/Color.spec.d.ts.map +1 -0
  271. package/dist/tests/value-objects/Color.spec.js +171 -0
  272. package/dist/tests/value-objects/Color.spec.js.map +1 -0
  273. package/dist/tests/value-objects/Email.spec.d.ts +2 -0
  274. package/dist/tests/value-objects/Email.spec.d.ts.map +1 -0
  275. package/dist/tests/value-objects/Email.spec.js +117 -0
  276. package/dist/tests/value-objects/Email.spec.js.map +1 -0
  277. package/dist/tests/value-objects/Enum.spec.d.ts +2 -0
  278. package/dist/tests/value-objects/Enum.spec.d.ts.map +1 -0
  279. package/dist/tests/value-objects/Enum.spec.js +233 -0
  280. package/dist/tests/value-objects/Enum.spec.js.map +1 -0
  281. package/dist/tests/value-objects/Integer.spec.d.ts +2 -0
  282. package/dist/tests/value-objects/Integer.spec.d.ts.map +1 -0
  283. package/dist/tests/value-objects/Integer.spec.js +31 -0
  284. package/dist/tests/value-objects/Integer.spec.js.map +1 -0
  285. package/dist/tests/value-objects/NullObject.spec.d.ts +2 -0
  286. package/dist/tests/value-objects/NullObject.spec.d.ts.map +1 -0
  287. package/dist/tests/value-objects/NullObject.spec.js +48 -0
  288. package/dist/tests/value-objects/NullObject.spec.js.map +1 -0
  289. package/dist/tests/value-objects/NumberValueObject.spec.d.ts +2 -0
  290. package/dist/tests/value-objects/NumberValueObject.spec.d.ts.map +1 -0
  291. package/dist/tests/value-objects/NumberValueObject.spec.js +333 -0
  292. package/dist/tests/value-objects/NumberValueObject.spec.js.map +1 -0
  293. package/dist/tests/value-objects/PositiveNumber.spec.d.ts +2 -0
  294. package/dist/tests/value-objects/PositiveNumber.spec.d.ts.map +1 -0
  295. package/dist/tests/value-objects/PositiveNumber.spec.js +209 -0
  296. package/dist/tests/value-objects/PositiveNumber.spec.js.map +1 -0
  297. package/dist/tests/value-objects/StringValueObject.spec.d.ts +2 -0
  298. package/dist/tests/value-objects/StringValueObject.spec.d.ts.map +1 -0
  299. package/dist/tests/value-objects/StringValueObject.spec.js +104 -0
  300. package/dist/tests/value-objects/StringValueObject.spec.js.map +1 -0
  301. package/dist/tests/value-objects/coordinates/Coordinates.spec.d.ts +2 -0
  302. package/dist/tests/value-objects/coordinates/Coordinates.spec.d.ts.map +1 -0
  303. package/dist/tests/value-objects/coordinates/Coordinates.spec.js +76 -0
  304. package/dist/tests/value-objects/coordinates/Coordinates.spec.js.map +1 -0
  305. package/dist/tests/value-objects/coordinates/Latitude.spec.d.ts +2 -0
  306. package/dist/tests/value-objects/coordinates/Latitude.spec.d.ts.map +1 -0
  307. package/dist/tests/value-objects/coordinates/Latitude.spec.js +23 -0
  308. package/dist/tests/value-objects/coordinates/Latitude.spec.js.map +1 -0
  309. package/dist/tests/value-objects/coordinates/Longitude.spec.d.ts +2 -0
  310. package/dist/tests/value-objects/coordinates/Longitude.spec.d.ts.map +1 -0
  311. package/dist/tests/value-objects/coordinates/Longitude.spec.js +23 -0
  312. package/dist/tests/value-objects/coordinates/Longitude.spec.js.map +1 -0
  313. package/dist/tests/value-objects/hashes/Hashes.spec.d.ts +2 -0
  314. package/dist/tests/value-objects/hashes/Hashes.spec.d.ts.map +1 -0
  315. package/dist/tests/value-objects/hashes/Hashes.spec.js +107 -0
  316. package/dist/tests/value-objects/hashes/Hashes.spec.js.map +1 -0
  317. package/dist/tests/value-objects/hashes/MD5Hash.spec.d.ts +2 -0
  318. package/dist/tests/value-objects/hashes/MD5Hash.spec.d.ts.map +1 -0
  319. package/dist/tests/value-objects/hashes/MD5Hash.spec.js +147 -0
  320. package/dist/tests/value-objects/hashes/MD5Hash.spec.js.map +1 -0
  321. package/dist/tests/value-objects/hashes/SHA256Hash.spec.d.ts +2 -0
  322. package/dist/tests/value-objects/hashes/SHA256Hash.spec.d.ts.map +1 -0
  323. package/dist/tests/value-objects/hashes/SHA256Hash.spec.js +147 -0
  324. package/dist/tests/value-objects/hashes/SHA256Hash.spec.js.map +1 -0
  325. package/dist/tests/value-objects/hashes/SHA512Hash.spec.d.ts +2 -0
  326. package/dist/tests/value-objects/hashes/SHA512Hash.spec.d.ts.map +1 -0
  327. package/dist/tests/value-objects/hashes/SHA512Hash.spec.js +147 -0
  328. package/dist/tests/value-objects/hashes/SHA512Hash.spec.js.map +1 -0
  329. package/dist/tests/value-objects/ids/ShortId.spec.d.ts +2 -0
  330. package/dist/tests/value-objects/ids/ShortId.spec.d.ts.map +1 -0
  331. package/dist/tests/value-objects/ids/ShortId.spec.js +30 -0
  332. package/dist/tests/value-objects/ids/ShortId.spec.js.map +1 -0
  333. package/dist/tests/value-objects/ids/UUID.spec.d.ts +2 -0
  334. package/dist/tests/value-objects/ids/UUID.spec.d.ts.map +1 -0
  335. package/dist/tests/value-objects/ids/UUID.spec.js +30 -0
  336. package/dist/tests/value-objects/ids/UUID.spec.js.map +1 -0
  337. package/dist/tests/value-objects/time/CalendarDay.spec.d.ts +2 -0
  338. package/dist/tests/value-objects/time/CalendarDay.spec.d.ts.map +1 -0
  339. package/dist/tests/value-objects/time/CalendarDay.spec.js +149 -0
  340. package/dist/tests/value-objects/time/CalendarDay.spec.js.map +1 -0
  341. package/dist/tests/value-objects/time/Day.spec.d.ts +2 -0
  342. package/dist/tests/value-objects/time/Day.spec.d.ts.map +1 -0
  343. package/dist/tests/value-objects/time/Day.spec.js +28 -0
  344. package/dist/tests/value-objects/time/Day.spec.js.map +1 -0
  345. package/dist/tests/value-objects/time/DayOfWeek.spec.d.ts +2 -0
  346. package/dist/tests/value-objects/time/DayOfWeek.spec.d.ts.map +1 -0
  347. package/dist/tests/value-objects/time/DayOfWeek.spec.js +44 -0
  348. package/dist/tests/value-objects/time/DayOfWeek.spec.js.map +1 -0
  349. package/dist/tests/value-objects/time/Duration.spec.d.ts +2 -0
  350. package/dist/tests/value-objects/time/Duration.spec.d.ts.map +1 -0
  351. package/dist/tests/value-objects/time/Duration.spec.js +255 -0
  352. package/dist/tests/value-objects/time/Duration.spec.js.map +1 -0
  353. package/dist/tests/value-objects/time/Hour.spec.d.ts +2 -0
  354. package/dist/tests/value-objects/time/Hour.spec.d.ts.map +1 -0
  355. package/dist/tests/value-objects/time/Hour.spec.js +168 -0
  356. package/dist/tests/value-objects/time/Hour.spec.js.map +1 -0
  357. package/dist/tests/value-objects/time/MonthOfYear.spec.d.ts +2 -0
  358. package/dist/tests/value-objects/time/MonthOfYear.spec.d.ts.map +1 -0
  359. package/dist/tests/value-objects/time/MonthOfYear.spec.js +93 -0
  360. package/dist/tests/value-objects/time/MonthOfYear.spec.js.map +1 -0
  361. package/dist/tests/value-objects/time/Timestamp.spec.d.ts +2 -0
  362. package/dist/tests/value-objects/time/Timestamp.spec.d.ts.map +1 -0
  363. package/dist/tests/value-objects/time/Timestamp.spec.js +391 -0
  364. package/dist/tests/value-objects/time/Timestamp.spec.js.map +1 -0
  365. package/dist/tests/value-objects/time/TimestampInterval.spec.d.ts +2 -0
  366. package/dist/tests/value-objects/time/TimestampInterval.spec.d.ts.map +1 -0
  367. package/dist/tests/value-objects/time/TimestampInterval.spec.js +270 -0
  368. package/dist/tests/value-objects/time/TimestampInterval.spec.js.map +1 -0
  369. package/dist/tests/value-objects/time/Year.spec.d.ts +2 -0
  370. package/dist/tests/value-objects/time/Year.spec.d.ts.map +1 -0
  371. package/dist/tests/value-objects/time/Year.spec.js +41 -0
  372. package/dist/tests/value-objects/time/Year.spec.js.map +1 -0
  373. package/package.json +9 -5
  374. package/.editorconfig +0 -15
  375. package/.eslintignore +0 -3
  376. package/.eslintrc.json +0 -218
  377. package/.prettierrc.json +0 -13
  378. package/TECHNICAL_DOCUMENTATION.md +0 -1257
  379. package/jest.config.ts +0 -30
  380. package/src/errors/BaseError.ts +0 -20
  381. package/src/errors/DomainError.ts +0 -12
  382. package/src/errors/InvalidColorError.ts +0 -7
  383. package/src/errors/InvalidDayError.ts +0 -7
  384. package/src/errors/InvalidDayFormatError.ts +0 -7
  385. package/src/errors/InvalidEmailError.ts +0 -7
  386. package/src/errors/InvalidFormatError.ts +0 -7
  387. package/src/errors/InvalidHashError.ts +0 -7
  388. package/src/errors/InvalidHourError.ts +0 -7
  389. package/src/errors/InvalidIntegerError.ts +0 -7
  390. package/src/errors/InvalidLatitudeError.ts +0 -7
  391. package/src/errors/InvalidLengthError.ts +0 -9
  392. package/src/errors/InvalidLongitudeError.ts +0 -7
  393. package/src/errors/InvalidMinutesError.ts +0 -7
  394. package/src/errors/InvalidNumberError.ts +0 -7
  395. package/src/errors/InvalidPositiveNumberError.ts +0 -7
  396. package/src/errors/InvalidStringLengthError.ts +0 -9
  397. package/src/errors/InvalidTimestampIntervalError.ts +0 -10
  398. package/src/errors/InvalidValueError.ts +0 -7
  399. package/src/errors/NullObjectError.ts +0 -8
  400. package/src/errors/ValueNotInEnumError.ts +0 -9
  401. package/src/interfaces/PrimitiveOf.ts +0 -5
  402. package/src/interfaces/index.ts +0 -1
  403. package/src/patterns/Assert.ts +0 -15
  404. package/src/patterns/index.ts +0 -1
  405. package/src/value-objects/Color.ts +0 -39
  406. package/src/value-objects/Email.ts +0 -23
  407. package/src/value-objects/Enum.ts +0 -31
  408. package/src/value-objects/Integer.ts +0 -22
  409. package/src/value-objects/NullObject.ts +0 -60
  410. package/src/value-objects/NumberValueObject.ts +0 -56
  411. package/src/value-objects/PositiveNumber.ts +0 -20
  412. package/src/value-objects/StringValueObject.ts +0 -27
  413. package/src/value-objects/ValueObject.ts +0 -39
  414. package/src/value-objects/coordinates/Coordinates.ts +0 -30
  415. package/src/value-objects/coordinates/Latitude.ts +0 -22
  416. package/src/value-objects/coordinates/Longitude.ts +0 -25
  417. package/src/value-objects/hashes/Hash.ts +0 -19
  418. package/src/value-objects/hashes/MD5Hash.ts +0 -32
  419. package/src/value-objects/hashes/SHA256Hash.ts +0 -38
  420. package/src/value-objects/hashes/SHA512Hash.ts +0 -38
  421. package/src/value-objects/ids/ShortId.ts +0 -34
  422. package/src/value-objects/ids/UUID.ts +0 -34
  423. package/src/value-objects/time/CalendarDay.ts +0 -91
  424. package/src/value-objects/time/Day.ts +0 -17
  425. package/src/value-objects/time/DayOfWeek.ts +0 -60
  426. package/src/value-objects/time/Duration.ts +0 -142
  427. package/src/value-objects/time/Hour.ts +0 -105
  428. package/src/value-objects/time/Month.ts +0 -39
  429. package/src/value-objects/time/MonthOfYear.ts +0 -52
  430. package/src/value-objects/time/Timestamp.ts +0 -208
  431. package/src/value-objects/time/TimestampInterval.ts +0 -122
  432. package/src/value-objects/time/Year.ts +0 -27
  433. package/tests/errors/BaseError.spec.ts +0 -63
  434. package/tests/errors/DomainError.spec.ts +0 -52
  435. package/tests/patterns/Assert.spec.ts +0 -29
  436. package/tests/setup.jest.ts +0 -2
  437. package/tests/value-objects/Color.spec.ts +0 -214
  438. package/tests/value-objects/Email.spec.ts +0 -141
  439. package/tests/value-objects/Enum.spec.ts +0 -293
  440. package/tests/value-objects/Integer.spec.ts +0 -38
  441. package/tests/value-objects/NullObject.spec.ts +0 -55
  442. package/tests/value-objects/NumberValueObject.spec.ts +0 -446
  443. package/tests/value-objects/PositiveNumber.spec.ts +0 -274
  444. package/tests/value-objects/StringValueObject.spec.ts +0 -135
  445. package/tests/value-objects/coordinates/Coordinates.spec.ts +0 -90
  446. package/tests/value-objects/coordinates/Latitude.spec.ts +0 -24
  447. package/tests/value-objects/coordinates/Longitude.spec.ts +0 -24
  448. package/tests/value-objects/hashes/Hashes.spec.ts +0 -139
  449. package/tests/value-objects/hashes/MD5Hash.spec.ts +0 -187
  450. package/tests/value-objects/hashes/SHA256Hash.spec.ts +0 -220
  451. package/tests/value-objects/hashes/SHA512Hash.spec.ts +0 -220
  452. package/tests/value-objects/ids/ShortId.spec.ts +0 -34
  453. package/tests/value-objects/ids/UUID.spec.ts +0 -37
  454. package/tests/value-objects/time/CalendarDay.spec.ts +0 -182
  455. package/tests/value-objects/time/Day.spec.ts +0 -29
  456. package/tests/value-objects/time/DayOfWeek.spec.ts +0 -71
  457. package/tests/value-objects/time/Duration.spec.ts +0 -278
  458. package/tests/value-objects/time/Hour.spec.ts +0 -197
  459. package/tests/value-objects/time/MonthOfYear.spec.ts +0 -111
  460. package/tests/value-objects/time/Timestamp.spec.ts +0 -497
  461. package/tests/value-objects/time/TimestampInterval.spec.ts +0 -383
  462. package/tests/value-objects/time/Year.spec.ts +0 -48
  463. package/tsconfig.jest.json +0 -33
  464. package/tsconfig.json +0 -42
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const src_1 = require("../../src");
4
+ /* eslint-disable no-unused-expressions */
5
+ describe('NullObject', () => {
6
+ class TestNullObject {
7
+ uid;
8
+ constructor(uid) {
9
+ this.uid = uid;
10
+ }
11
+ getUid() {
12
+ return 'uid';
13
+ }
14
+ getName() {
15
+ return 'name';
16
+ }
17
+ valueOf() {
18
+ return this.getUid();
19
+ }
20
+ }
21
+ let test;
22
+ beforeEach(() => {
23
+ test = src_1.NullObject.new(TestNullObject);
24
+ });
25
+ it('should replace all methods with fake methods throwing NullObjectError', () => {
26
+ expect(() => test.getUid()).toThrow(src_1.NullObjectError);
27
+ expect(() => test.getName()).toThrow(src_1.NullObjectError);
28
+ });
29
+ it('should replace valueOf with undefined ', () => {
30
+ expect(test.valueOf()).toBeUndefined();
31
+ });
32
+ it('should return true when checking if it is a null object', () => {
33
+ expect(src_1.NullObject.isNullObject(test)).toBeTrue();
34
+ });
35
+ it('should return false when checking if empty object it is a null object', () => {
36
+ expect(src_1.NullObject.isNullObject({})).toBeFalse();
37
+ });
38
+ it('should return false when checking if null it is a null object', () => {
39
+ expect(src_1.NullObject.isNullObject(null)).toBeFalse();
40
+ });
41
+ it('should return false when checking if undefined it is a null object', () => {
42
+ expect(src_1.NullObject.isNullObject(undefined)).toBeFalse();
43
+ });
44
+ it('should return false when checking if NaN it is a null object', () => {
45
+ expect(src_1.NullObject.isNullObject(NaN)).toBeFalse();
46
+ });
47
+ });
48
+ //# sourceMappingURL=NullObject.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NullObject.spec.js","sourceRoot":"","sources":["../../../tests/value-objects/NullObject.spec.ts"],"names":[],"mappings":";;AAAA,mCAAwD;AAExD,0CAA0C;AAC1C,QAAQ,CAAC,YAAY,EAAE,GAAG,EAAE;IAC1B,MAAM,cAAc;QACW;QAA7B,YAA6B,GAAW;YAAX,QAAG,GAAH,GAAG,CAAQ;QAAG,CAAC;QAErC,MAAM;YACX,OAAO,KAAK,CAAC;QACf,CAAC;QAEM,OAAO;YACZ,OAAO,MAAM,CAAC;QAChB,CAAC;QAEM,OAAO;YACZ,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,CAAC;KACF;IAED,IAAI,IAAoB,CAAC;IAEzB,UAAU,CAAC,GAAG,EAAE;QACd,IAAI,GAAG,gBAAU,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAe,CAAC,CAAC;QACrD,MAAM,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,qBAAe,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,aAAa,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yDAAyD,EAAE,GAAG,EAAE;QACjE,MAAM,CAAC,gBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uEAAuE,EAAE,GAAG,EAAE;QAC/E,MAAM,CAAC,gBAAU,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,+DAA+D,EAAE,GAAG,EAAE;QACvE,MAAM,CAAC,gBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oEAAoE,EAAE,GAAG,EAAE;QAC5E,MAAM,CAAC,gBAAU,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACzD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,8DAA8D,EAAE,GAAG,EAAE;QACtE,MAAM,CAAC,gBAAU,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,EAAE,CAAC;IACnD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=NumberValueObject.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberValueObject.spec.d.ts","sourceRoot":"","sources":["../../../tests/value-objects/NumberValueObject.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,333 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const src_1 = require("../../src");
4
+ describe('NumberValueObject', () => {
5
+ describe('constructor', () => {
6
+ it('should return a NullValueObject when a Nullish is received', () => {
7
+ expect(() => new src_1.NumberValueObject(undefined)).not.toThrow();
8
+ expect(src_1.NullObject.isNullObject(new src_1.NumberValueObject(undefined))).toBeTrue();
9
+ expect(src_1.NullObject.isNullObject(new src_1.NumberValueObject(null))).toBeTrue();
10
+ });
11
+ it('should throw InvalidNumberError for NaN', () => {
12
+ const value = NaN;
13
+ expect(() => new src_1.NumberValueObject(value)).toThrow(src_1.InvalidNumberError);
14
+ expect(() => new src_1.NumberValueObject(value)).toThrow(`Invalid number ${value}`);
15
+ });
16
+ it('should throw InvalidNumberError for a parsed string', () => {
17
+ const value = parseInt('Not a number');
18
+ expect(() => new src_1.NumberValueObject(value)).toThrow(src_1.InvalidNumberError);
19
+ expect(() => new src_1.NumberValueObject(value)).toThrow(`Invalid number ${value}`);
20
+ });
21
+ });
22
+ describe('isZero', () => {
23
+ it('should return true when value is 0', () => {
24
+ expect(new src_1.NumberValueObject(0).isZero()).toBeTrue();
25
+ });
26
+ it('should return false when value is not 0', () => {
27
+ expect(new src_1.NumberValueObject(1).isZero()).toBeFalse();
28
+ });
29
+ });
30
+ describe('isGreaterThan', () => {
31
+ it('should return true when value is greater than other', () => {
32
+ expect(new src_1.NumberValueObject(1).isGreaterThan(new src_1.NumberValueObject(0))).toBeTrue();
33
+ });
34
+ it('should return false when value is not greater than other', () => {
35
+ expect(new src_1.NumberValueObject(0).isGreaterThan(new src_1.NumberValueObject(1))).toBeFalse();
36
+ });
37
+ });
38
+ describe('isGreaterOrEqualThan', () => {
39
+ it('should return true when value is greater than other', () => {
40
+ expect(new src_1.NumberValueObject(1).isGreaterOrEqualThan(new src_1.NumberValueObject(0))).toBeTrue();
41
+ });
42
+ it('should return true when value is the equal than other', () => {
43
+ expect(new src_1.NumberValueObject(1).isGreaterOrEqualThan(new src_1.NumberValueObject(1))).toBeTrue();
44
+ });
45
+ it('should return false when value is not greater than other', () => {
46
+ expect(new src_1.NumberValueObject(0).isGreaterOrEqualThan(new src_1.NumberValueObject(1))).toBeFalse();
47
+ });
48
+ });
49
+ describe('isLessThan', () => {
50
+ it('should return true when value is less than other', () => {
51
+ expect(new src_1.NumberValueObject(0).isLessThan(new src_1.NumberValueObject(1))).toBeTrue();
52
+ });
53
+ it('should return false when value is not less than other', () => {
54
+ expect(new src_1.NumberValueObject(1).isLessThan(new src_1.NumberValueObject(0))).toBeFalse();
55
+ });
56
+ });
57
+ describe('isLessOrEqualThan', () => {
58
+ it('should return true when value is less than other', () => {
59
+ expect(new src_1.NumberValueObject(0).isLessOrEqualThan(new src_1.NumberValueObject(1))).toBeTrue();
60
+ });
61
+ it('should return true when value is equal than other', () => {
62
+ expect(new src_1.NumberValueObject(1).isLessOrEqualThan(new src_1.NumberValueObject(1))).toBeTrue();
63
+ });
64
+ it('should return false when value is not less than other', () => {
65
+ expect(new src_1.NumberValueObject(1).isLessOrEqualThan(new src_1.NumberValueObject(0))).toBeFalse();
66
+ });
67
+ });
68
+ describe('add', () => {
69
+ it('should return a new NumberValueObject with the sum of the two values', () => {
70
+ const value = new src_1.NumberValueObject(1);
71
+ const other = new src_1.NumberValueObject(2);
72
+ const result = value.add(other);
73
+ expect(result.valueOf()).toEqual(3);
74
+ });
75
+ it('should not mutate original objects when adding', () => {
76
+ const original = new src_1.NumberValueObject(10);
77
+ const other = new src_1.NumberValueObject(5);
78
+ const originalValue = original.valueOf();
79
+ const otherValue = other.valueOf();
80
+ const result = original.add(other);
81
+ // Original objects should remain unchanged
82
+ expect(original.valueOf()).toBe(originalValue);
83
+ expect(original.valueOf()).toBe(10);
84
+ expect(other.valueOf()).toBe(otherValue);
85
+ expect(other.valueOf()).toBe(5);
86
+ // Result should be a new instance
87
+ expect(result.valueOf()).toBe(15);
88
+ expect(result).not.toBe(original);
89
+ expect(result).not.toBe(other);
90
+ });
91
+ it('should work with primitive numbers and maintain immutability', () => {
92
+ const original = new src_1.NumberValueObject(15);
93
+ const originalValue = original.valueOf();
94
+ const result = original.add(5);
95
+ // Original should remain unchanged
96
+ expect(original.valueOf()).toBe(originalValue);
97
+ expect(original.valueOf()).toBe(15);
98
+ // Result should be correct and a new instance
99
+ expect(result.valueOf()).toBe(20);
100
+ expect(result).not.toBe(original);
101
+ });
102
+ it('should maintain immutability when adding zero', () => {
103
+ const original = new src_1.NumberValueObject(42);
104
+ const zero = new src_1.NumberValueObject(0);
105
+ const originalValue = original.valueOf();
106
+ const result = original.add(zero);
107
+ // Original should remain unchanged
108
+ expect(original.valueOf()).toBe(originalValue);
109
+ expect(original.valueOf()).toBe(42);
110
+ expect(zero.valueOf()).toBe(0);
111
+ // Result should be correct and a new instance
112
+ expect(result.valueOf()).toBe(42);
113
+ expect(result).not.toBe(original);
114
+ });
115
+ });
116
+ describe('subtract', () => {
117
+ it('should return a new NumberValueObject with the difference of the two values', () => {
118
+ const value = new src_1.NumberValueObject(1);
119
+ const other = new src_1.NumberValueObject(2);
120
+ const result = value.subtract(other);
121
+ expect(result.valueOf()).toEqual(-1);
122
+ });
123
+ it('should not mutate original objects when subtracting', () => {
124
+ const original = new src_1.NumberValueObject(10);
125
+ const other = new src_1.NumberValueObject(3);
126
+ const originalValue = original.valueOf();
127
+ const otherValue = other.valueOf();
128
+ const result = original.subtract(other);
129
+ // Original objects should remain unchanged
130
+ expect(original.valueOf()).toBe(originalValue);
131
+ expect(original.valueOf()).toBe(10);
132
+ expect(other.valueOf()).toBe(otherValue);
133
+ expect(other.valueOf()).toBe(3);
134
+ // Result should be a new instance
135
+ expect(result.valueOf()).toBe(7);
136
+ expect(result).not.toBe(original);
137
+ expect(result).not.toBe(other);
138
+ });
139
+ it('should work with primitive numbers and maintain immutability', () => {
140
+ const original = new src_1.NumberValueObject(15);
141
+ const originalValue = original.valueOf();
142
+ const result = original.subtract(3);
143
+ // Original should remain unchanged
144
+ expect(original.valueOf()).toBe(originalValue);
145
+ expect(original.valueOf()).toBe(15);
146
+ // Result should be correct and a new instance
147
+ expect(result.valueOf()).toBe(12);
148
+ expect(result).not.toBe(original);
149
+ });
150
+ it('should maintain immutability when subtracting zero', () => {
151
+ const original = new src_1.NumberValueObject(42);
152
+ const zero = new src_1.NumberValueObject(0);
153
+ const originalValue = original.valueOf();
154
+ const result = original.subtract(zero);
155
+ // Original should remain unchanged
156
+ expect(original.valueOf()).toBe(originalValue);
157
+ expect(original.valueOf()).toBe(42);
158
+ expect(zero.valueOf()).toBe(0);
159
+ // Result should be correct and a new instance
160
+ expect(result.valueOf()).toBe(42);
161
+ expect(result).not.toBe(original);
162
+ });
163
+ });
164
+ describe('multiply', () => {
165
+ it('should return a new NumberValueObject with the product of the two values', () => {
166
+ const value = new src_1.NumberValueObject(1);
167
+ const other = new src_1.NumberValueObject(2);
168
+ const result = value.multiply(other);
169
+ expect(result.valueOf()).toEqual(2);
170
+ });
171
+ it('should not mutate original objects when multiplying', () => {
172
+ const original = new src_1.NumberValueObject(7);
173
+ const other = new src_1.NumberValueObject(6);
174
+ const originalValue = original.valueOf();
175
+ const otherValue = other.valueOf();
176
+ const result = original.multiply(other);
177
+ // Original objects should remain unchanged
178
+ expect(original.valueOf()).toBe(originalValue);
179
+ expect(original.valueOf()).toBe(7);
180
+ expect(other.valueOf()).toBe(otherValue);
181
+ expect(other.valueOf()).toBe(6);
182
+ // Result should be a new instance
183
+ expect(result.valueOf()).toBe(42);
184
+ expect(result).not.toBe(original);
185
+ expect(result).not.toBe(other);
186
+ });
187
+ it('should work with primitive numbers and maintain immutability', () => {
188
+ const original = new src_1.NumberValueObject(15);
189
+ const originalValue = original.valueOf();
190
+ const result = original.multiply(2);
191
+ // Original should remain unchanged
192
+ expect(original.valueOf()).toBe(originalValue);
193
+ expect(original.valueOf()).toBe(15);
194
+ // Result should be correct and a new instance
195
+ expect(result.valueOf()).toBe(30);
196
+ expect(result).not.toBe(original);
197
+ });
198
+ it('should maintain immutability when multiplying by zero', () => {
199
+ const original = new src_1.NumberValueObject(42);
200
+ const zero = new src_1.NumberValueObject(0);
201
+ const originalValue = original.valueOf();
202
+ const result = original.multiply(zero);
203
+ // Original should remain unchanged
204
+ expect(original.valueOf()).toBe(originalValue);
205
+ expect(original.valueOf()).toBe(42);
206
+ expect(zero.valueOf()).toBe(0);
207
+ // Result should be correct and a new instance
208
+ expect(result.valueOf()).toBe(0);
209
+ expect(result).not.toBe(original);
210
+ });
211
+ });
212
+ describe('divide', () => {
213
+ it('should return a new NumberValueObject with the quotient of the two values', () => {
214
+ const value = new src_1.NumberValueObject(1);
215
+ const other = new src_1.NumberValueObject(2);
216
+ const result = value.divide(other);
217
+ expect(result.valueOf()).toEqual(0.5);
218
+ });
219
+ it('should not mutate original objects when dividing', () => {
220
+ const original = new src_1.NumberValueObject(20);
221
+ const other = new src_1.NumberValueObject(4);
222
+ const originalValue = original.valueOf();
223
+ const otherValue = other.valueOf();
224
+ const result = original.divide(other);
225
+ // Original objects should remain unchanged
226
+ expect(original.valueOf()).toBe(originalValue);
227
+ expect(original.valueOf()).toBe(20);
228
+ expect(other.valueOf()).toBe(otherValue);
229
+ expect(other.valueOf()).toBe(4);
230
+ // Result should be a new instance
231
+ expect(result.valueOf()).toBe(5);
232
+ expect(result).not.toBe(original);
233
+ expect(result).not.toBe(other);
234
+ });
235
+ it('should work with primitive numbers and maintain immutability', () => {
236
+ const original = new src_1.NumberValueObject(15);
237
+ const originalValue = original.valueOf();
238
+ const result = original.divide(3);
239
+ // Original should remain unchanged
240
+ expect(original.valueOf()).toBe(originalValue);
241
+ expect(original.valueOf()).toBe(15);
242
+ // Result should be correct and a new instance
243
+ expect(result.valueOf()).toBe(5);
244
+ expect(result).not.toBe(original);
245
+ });
246
+ });
247
+ describe('inheritance and ValueObject behavior', () => {
248
+ it('should inherit from ValueObject', () => {
249
+ const numberValueObject = new src_1.NumberValueObject(42);
250
+ expect(numberValueObject).toBeInstanceOf(src_1.NumberValueObject);
251
+ expect(numberValueObject.valueOf).toBeDefined();
252
+ expect(numberValueObject.isEqual).toBeDefined();
253
+ expect(numberValueObject.toString).toBeDefined();
254
+ });
255
+ it('should implement valueOf() method correctly', () => {
256
+ const value = 123.45;
257
+ const numberValueObject = new src_1.NumberValueObject(value);
258
+ expect(numberValueObject.valueOf()).toBe(value);
259
+ });
260
+ it('should implement toString() method correctly from ValueObject', () => {
261
+ const value = 987.654;
262
+ const numberValueObject = new src_1.NumberValueObject(value);
263
+ expect(numberValueObject.toString()).toBe(value.toString());
264
+ expect(numberValueObject.toString()).toBe('987.654');
265
+ });
266
+ it('should implement isEqual() method correctly', () => {
267
+ const value = 100;
268
+ const numberValueObject1 = new src_1.NumberValueObject(value);
269
+ const numberValueObject2 = new src_1.NumberValueObject(value);
270
+ const numberValueObject3 = new src_1.NumberValueObject(200);
271
+ expect(numberValueObject1.isEqual(numberValueObject2)).toBeTrue();
272
+ expect(numberValueObject1.isEqual(numberValueObject3)).toBeFalse();
273
+ expect(numberValueObject1.isEqual(value)).toBeTrue();
274
+ expect(numberValueObject1.isEqual(200)).toBeFalse();
275
+ });
276
+ it('should compare with primitive values using isEqual', () => {
277
+ const numberValueObject = new src_1.NumberValueObject(42);
278
+ expect(numberValueObject.isEqual(42)).toBeTrue();
279
+ expect(numberValueObject.isEqual(43)).toBeFalse();
280
+ });
281
+ it('should implement clone() method correctly', () => {
282
+ const originalValue = 3.14159;
283
+ const original = new src_1.NumberValueObject(originalValue);
284
+ const cloned = original.clone();
285
+ expect(cloned).toBeInstanceOf(src_1.NumberValueObject);
286
+ expect(cloned.valueOf()).toBe(originalValue);
287
+ expect(cloned.toString()).toBe(originalValue.toString());
288
+ expect(cloned.isEqual(original)).toBeTrue();
289
+ expect(cloned).not.toBe(original); // Different instances
290
+ });
291
+ it('should accept another NumberValueObject in constructor', () => {
292
+ const original = new src_1.NumberValueObject(555);
293
+ const copy = new src_1.NumberValueObject(original);
294
+ expect(copy.valueOf()).toBe(555);
295
+ expect(copy.isEqual(original)).toBeTrue();
296
+ });
297
+ it('should validate number when constructed from another NumberValueObject', () => {
298
+ const validNumberValueObject = new src_1.NumberValueObject(123);
299
+ expect(() => new src_1.NumberValueObject(validNumberValueObject)).not.toThrow();
300
+ // Create an invalid NumberValueObject by bypassing validation (for testing)
301
+ const invalidValue = NaN;
302
+ expect(() => new src_1.NumberValueObject(invalidValue)).toThrow(src_1.InvalidNumberError);
303
+ });
304
+ it('should maintain immutability with chained operations', () => {
305
+ const original = new src_1.NumberValueObject(10);
306
+ const two = new src_1.NumberValueObject(2);
307
+ const three = new src_1.NumberValueObject(3);
308
+ const originalValue = original.valueOf();
309
+ const twoValue = two.valueOf();
310
+ const threeValue = three.valueOf();
311
+ // Chain operations: (10 + 2) * 3 / 2
312
+ const step1 = original.add(two);
313
+ const step2 = step1.multiply(three);
314
+ const final = step2.divide(two);
315
+ // All original objects should remain unchanged
316
+ expect(original.valueOf()).toBe(originalValue);
317
+ expect(original.valueOf()).toBe(10);
318
+ expect(two.valueOf()).toBe(twoValue);
319
+ expect(two.valueOf()).toBe(2);
320
+ expect(three.valueOf()).toBe(threeValue);
321
+ expect(three.valueOf()).toBe(3);
322
+ // Each step should create new instances
323
+ expect(step1.valueOf()).toBe(12);
324
+ expect(step2.valueOf()).toBe(36);
325
+ expect(final.valueOf()).toBe(18);
326
+ // All results should be different instances
327
+ expect(step1).not.toBe(original);
328
+ expect(step2).not.toBe(step1);
329
+ expect(final).not.toBe(step2);
330
+ });
331
+ });
332
+ });
333
+ //# sourceMappingURL=NumberValueObject.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"NumberValueObject.spec.js","sourceRoot":"","sources":["../../../tests/value-objects/NumberValueObject.spec.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=PositiveNumber.spec.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PositiveNumber.spec.d.ts","sourceRoot":"","sources":["../../../tests/value-objects/PositiveNumber.spec.ts"],"names":[],"mappings":""}
@@ -0,0 +1,209 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const src_1 = require("../../src");
4
+ describe('PositiveNumber', () => {
5
+ describe('constructor', () => {
6
+ it('should return a NullValueObject when a Nullish is received', () => {
7
+ expect(() => new src_1.PositiveNumber(undefined)).not.toThrow();
8
+ expect(src_1.NullObject.isNullObject(new src_1.PositiveNumber(undefined))).toBeTrue();
9
+ expect(src_1.NullObject.isNullObject(new src_1.PositiveNumber(null))).toBeTrue();
10
+ });
11
+ it('should validate is positive number', () => {
12
+ expect(() => new src_1.PositiveNumber(-1)).toThrow('Value must be greater or equal than 0');
13
+ expect(() => new src_1.PositiveNumber(-1)).toThrow(src_1.InvalidPositiveNumberError);
14
+ });
15
+ it('should accept positive numbers', () => {
16
+ expect(() => new src_1.PositiveNumber(1)).not.toThrow();
17
+ expect(() => new src_1.PositiveNumber(0.1)).not.toThrow();
18
+ expect(() => new src_1.PositiveNumber(100.5)).not.toThrow();
19
+ });
20
+ it('should reject negative numbers', () => {
21
+ expect(() => new src_1.PositiveNumber(-0.1)).toThrow(src_1.InvalidPositiveNumberError);
22
+ expect(() => new src_1.PositiveNumber(-100)).toThrow(src_1.InvalidPositiveNumberError);
23
+ });
24
+ it('should accept another PositiveNumber', () => {
25
+ const original = new src_1.PositiveNumber(42);
26
+ const copy = new src_1.PositiveNumber(original);
27
+ expect(copy.valueOf()).toBe(42);
28
+ expect(copy.isEqual(original)).toBeTrue();
29
+ });
30
+ it('should validate when constructed from another NumberValueObject', () => {
31
+ const validNumber = new src_1.PositiveNumber(10);
32
+ expect(() => new src_1.PositiveNumber(validNumber)).not.toThrow();
33
+ // Cannot test invalid NumberValueObject directly since NumberValueObject validates NaN
34
+ // But we can test edge cases
35
+ expect(() => new src_1.PositiveNumber(0.00001)).not.toThrow();
36
+ });
37
+ });
38
+ describe('inheritance and NumberValueObject behavior', () => {
39
+ it('should inherit from NumberValueObject', () => {
40
+ const positiveNumber = new src_1.PositiveNumber(42);
41
+ expect(positiveNumber).toBeInstanceOf(src_1.PositiveNumber);
42
+ expect(positiveNumber).toBeInstanceOf(src_1.NumberValueObject);
43
+ expect(positiveNumber.valueOf).toBeDefined();
44
+ expect(positiveNumber.isEqual).toBeDefined();
45
+ expect(positiveNumber.toString).toBeDefined();
46
+ expect(positiveNumber.isZero).toBeDefined();
47
+ expect(positiveNumber.add).toBeDefined();
48
+ expect(positiveNumber.subtract).toBeDefined();
49
+ expect(positiveNumber.multiply).toBeDefined();
50
+ expect(positiveNumber.divide).toBeDefined();
51
+ });
52
+ it('should implement valueOf() method correctly from NumberValueObject', () => {
53
+ const value = 123.45;
54
+ const positiveNumber = new src_1.PositiveNumber(value);
55
+ expect(positiveNumber.valueOf()).toBe(value);
56
+ });
57
+ it('should implement toString() method correctly from ValueObject', () => {
58
+ const value = 987.654;
59
+ const positiveNumber = new src_1.PositiveNumber(value);
60
+ expect(positiveNumber.toString()).toBe(value.toString());
61
+ expect(positiveNumber.toString()).toBe('987.654');
62
+ });
63
+ it('should implement isEqual() method correctly', () => {
64
+ const value = 100.5;
65
+ const positiveNumber1 = new src_1.PositiveNumber(value);
66
+ const positiveNumber2 = new src_1.PositiveNumber(value);
67
+ const positiveNumber3 = new src_1.PositiveNumber(200.7);
68
+ expect(positiveNumber1.isEqual(positiveNumber2)).toBeTrue();
69
+ expect(positiveNumber1.isEqual(positiveNumber3)).toBeFalse();
70
+ expect(positiveNumber1.isEqual(value)).toBeTrue();
71
+ expect(positiveNumber1.isEqual(200.7)).toBeFalse();
72
+ });
73
+ it('should implement isZero() method correctly', () => {
74
+ // PositiveNumber cannot be zero, but method should exist
75
+ const positiveNumber = new src_1.PositiveNumber(1);
76
+ expect(positiveNumber.isZero()).toBeFalse();
77
+ expect(typeof positiveNumber.isZero).toBe('function');
78
+ });
79
+ it('should implement comparison methods correctly', () => {
80
+ const smaller = new src_1.PositiveNumber(5);
81
+ const larger = new src_1.PositiveNumber(10);
82
+ expect(larger.isGreaterThan(smaller)).toBeTrue();
83
+ expect(smaller.isLessThan(larger)).toBeTrue();
84
+ expect(larger.isGreaterOrEqualThan(smaller)).toBeTrue();
85
+ expect(smaller.isLessOrEqualThan(larger)).toBeTrue();
86
+ const equal = new src_1.PositiveNumber(5);
87
+ expect(smaller.isGreaterOrEqualThan(equal)).toBeTrue();
88
+ expect(smaller.isLessOrEqualThan(equal)).toBeTrue();
89
+ });
90
+ it('should implement clone() method correctly', () => {
91
+ const originalValue = 3.14159;
92
+ const original = new src_1.PositiveNumber(originalValue);
93
+ const cloned = original.clone();
94
+ expect(cloned).toBeInstanceOf(src_1.PositiveNumber);
95
+ expect(cloned).toBeInstanceOf(src_1.NumberValueObject);
96
+ expect(cloned.valueOf()).toBe(originalValue);
97
+ expect(cloned.toString()).toBe(originalValue.toString());
98
+ expect(cloned.isEqual(original)).toBeTrue();
99
+ expect(cloned).not.toBe(original); // Different instances
100
+ });
101
+ });
102
+ describe('arithmetic operations with positive validation', () => {
103
+ it('should perform addition and maintain positive result', () => {
104
+ const a = new src_1.PositiveNumber(5);
105
+ const b = new src_1.PositiveNumber(3);
106
+ const result = a.add(b);
107
+ expect(result).toBeInstanceOf(src_1.PositiveNumber);
108
+ expect(result.valueOf()).toBe(8);
109
+ });
110
+ it('should perform multiplication and maintain positive result', () => {
111
+ const a = new src_1.PositiveNumber(4);
112
+ const b = new src_1.PositiveNumber(2.5);
113
+ const result = a.multiply(b);
114
+ expect(result).toBeInstanceOf(src_1.PositiveNumber);
115
+ expect(result.valueOf()).toBe(10);
116
+ });
117
+ it('should perform division and maintain positive result', () => {
118
+ const a = new src_1.PositiveNumber(10);
119
+ const b = new src_1.PositiveNumber(2);
120
+ const result = a.divide(b);
121
+ expect(result).toBeInstanceOf(src_1.PositiveNumber);
122
+ expect(result.valueOf()).toBe(5);
123
+ });
124
+ it('should throw an error if a subtraction results in negative number', () => {
125
+ const a = new src_1.PositiveNumber(3);
126
+ const b = new src_1.PositiveNumber(5);
127
+ expect(() => a.subtract(b)).toThrow(src_1.InvalidPositiveNumberError);
128
+ });
129
+ it('should work with primitive numbers in operations', () => {
130
+ const positive = new src_1.PositiveNumber(15);
131
+ const addResult = positive.add(5);
132
+ const multiplyResult = positive.multiply(2);
133
+ const divideResult = positive.divide(3);
134
+ expect(addResult.valueOf()).toBe(20);
135
+ expect(multiplyResult.valueOf()).toBe(30);
136
+ expect(divideResult.valueOf()).toBe(5);
137
+ // All results should be NumberValueObject instances (not necessarily PositiveNumber)
138
+ expect(addResult.valueOf()).toBeGreaterThan(0);
139
+ expect(multiplyResult.valueOf()).toBeGreaterThan(0);
140
+ expect(divideResult.valueOf()).toBeGreaterThan(0);
141
+ });
142
+ });
143
+ describe('immutability', () => {
144
+ it('should have immutable value property inherited from NumberValueObject', () => {
145
+ const positiveNumber = new src_1.PositiveNumber(42);
146
+ // Verify immutability through value consistency
147
+ expect(positiveNumber.valueOf()).toBe(42);
148
+ expect(positiveNumber.value).toBe(42);
149
+ const originalValue = positiveNumber.valueOf();
150
+ expect(originalValue).toBe(42);
151
+ });
152
+ it('should return the same value after creation', () => {
153
+ const originalValue = 3.14159;
154
+ const positiveNumber = new src_1.PositiveNumber(originalValue);
155
+ expect(positiveNumber.valueOf()).toBe(originalValue);
156
+ expect(positiveNumber.toString()).toBe(originalValue.toString());
157
+ // Value should remain the same
158
+ expect(positiveNumber.valueOf()).toBe(originalValue);
159
+ });
160
+ it('should create new instances instead of modifying existing ones', () => {
161
+ const value1 = 100.5;
162
+ const value2 = 200.7;
163
+ const positiveNumber1 = new src_1.PositiveNumber(value1);
164
+ const positiveNumber2 = new src_1.PositiveNumber(value2);
165
+ expect(positiveNumber1.valueOf()).toBe(value1);
166
+ expect(positiveNumber2.valueOf()).toBe(value2);
167
+ expect(positiveNumber1.valueOf()).not.toBe(positiveNumber2.valueOf());
168
+ });
169
+ it('should maintain immutability when constructed from another PositiveNumber', () => {
170
+ const original = new src_1.PositiveNumber(987.654);
171
+ const copy = new src_1.PositiveNumber(original);
172
+ expect(copy.valueOf()).toBe(original.valueOf());
173
+ expect(copy.isEqual(original)).toBeTrue();
174
+ // Both should maintain their values independently
175
+ expect(original.valueOf()).toBe(987.654);
176
+ expect(copy.valueOf()).toBe(987.654);
177
+ });
178
+ it('should maintain immutability when cloning', () => {
179
+ const original = new src_1.PositiveNumber(777.888);
180
+ const cloned = original.clone();
181
+ expect(original.valueOf()).toBe(777.888);
182
+ expect(cloned.valueOf()).toBe(777.888);
183
+ expect(original.isEqual(cloned)).toBeTrue();
184
+ expect(original).not.toBe(cloned);
185
+ // Both should remain immutable
186
+ expect(original.valueOf()).toBe(777.888);
187
+ expect(cloned.valueOf()).toBe(777.888);
188
+ });
189
+ it('should maintain immutability in arithmetic operations', () => {
190
+ const original = new src_1.PositiveNumber(10);
191
+ const other = new src_1.PositiveNumber(5);
192
+ const sum = original.add(other);
193
+ const product = original.multiply(other);
194
+ const quotient = original.divide(other);
195
+ // Original values should remain unchanged
196
+ expect(original.valueOf()).toBe(10);
197
+ expect(other.valueOf()).toBe(5);
198
+ // Results should be correct
199
+ expect(sum.valueOf()).toBe(15);
200
+ expect(product.valueOf()).toBe(50);
201
+ expect(quotient.valueOf()).toBe(2);
202
+ // All should be different instances
203
+ expect(sum).not.toBe(original);
204
+ expect(product).not.toBe(original);
205
+ expect(quotient).not.toBe(original);
206
+ });
207
+ });
208
+ });
209
+ //# sourceMappingURL=PositiveNumber.spec.js.map