@haskou/value-objects 1.1.0 → 1.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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/dist/src/value-objects/ids/index.d.ts +3 -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} +2 -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 +6 -2
  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
@@ -1,187 +0,0 @@
1
- import { createHash } from 'crypto';
2
-
3
- import {
4
- InvalidHashError,
5
- MD5Hash,
6
- NullObject,
7
- StringValueObject,
8
- } from '../../../src';
9
-
10
- function computeMD5(input: string | Buffer): string {
11
- return createHash('md5').update(input).digest('hex');
12
- }
13
-
14
- describe('MD5Hash', () => {
15
- describe('constructor', () => {
16
- it('should return a NullValueObject when a Nullish is received', () => {
17
- expect(() => new MD5Hash(undefined as unknown as string)).not.toThrow();
18
- expect(
19
- NullObject.isNullObject(new MD5Hash(undefined as unknown as string)),
20
- ).toBeTrue();
21
- });
22
-
23
- const validMD5Hashes = [
24
- '5d41402abc4b2a76b9719d911017c592', // MD5 of 'hello'
25
- '098f6bcd4621d373cade4e832627b4f6', // MD5 of 'test'
26
- '9e107d9d372bb6826bd81d3542a419d6', // MD5 of 'password'
27
- 'd41d8cd98f00b204e9800998ecf8427e', // MD5 of empty string
28
- 'a665a45920422f9d417e4867efdc4fb8', // MD5 of 'admin'
29
- ];
30
-
31
- it.each(validMD5Hashes)(
32
- 'should create an MD5Hash instance for valid MD5 hash strings',
33
- (hash) => {
34
- expect(() => new MD5Hash(hash)).not.toThrow();
35
- expect(new MD5Hash(hash).toString()).toBe(hash);
36
- },
37
- );
38
-
39
- const invalidMD5Hashes = [
40
- 'invalid-hash',
41
- '1234567890123456789012345678901', // 31 chars
42
- '123456789012345678901234567890123', // 33 chars
43
- 'gggggggggggggggggggggggggggggggg', // 32 chars but invalid hex
44
- '12345678901234567890123456789012g', // 32 chars with non-hex
45
- '',
46
- 'a'.repeat(31),
47
- 'a'.repeat(33),
48
- ];
49
-
50
- it.each(invalidMD5Hashes)(
51
- 'should throw InvalidHashError for invalid MD5 hash strings',
52
- (hash) => {
53
- expect(() => new MD5Hash(hash)).toThrow(InvalidHashError);
54
- },
55
- );
56
-
57
- it('should accept another StringValueObject', () => {
58
- const hashString = new StringValueObject(
59
- '5d41402abc4b2a76b9719d911017c592',
60
- );
61
- const hash = new MD5Hash(hashString);
62
- expect(hash.toString()).toBe('5d41402abc4b2a76b9719d911017c592');
63
- });
64
-
65
- it('should validate hash format when constructed from StringValueObject', () => {
66
- const invalidHashString = new StringValueObject('invalid-hash');
67
- expect(() => new MD5Hash(invalidHashString)).toThrow(InvalidHashError);
68
- });
69
- });
70
-
71
- describe('static methods', () => {
72
- describe('isValid', () => {
73
- it('should return true for valid MD5 hashes', () => {
74
- const validHash = '5d41402abc4b2a76b9719d911017c592';
75
- expect(MD5Hash.isValid(validHash)).toBeTrue();
76
- expect(MD5Hash.isValid(new StringValueObject(validHash))).toBeTrue();
77
- });
78
-
79
- it('should return false for invalid MD5 hashes', () => {
80
- expect(MD5Hash.isValid('invalid')).toBeFalse();
81
- expect(MD5Hash.isValid('123')).toBeFalse();
82
- expect(MD5Hash.isValid('gggggggggggggggggggggggggggggggg')).toBeFalse();
83
- });
84
- });
85
-
86
- describe('from', () => {
87
- it('should compute MD5 hash from string', () => {
88
- const input = 'hello';
89
- const expected = computeMD5(input);
90
- const hash = MD5Hash.from(input);
91
- expect(hash.valueOf()).toBe(expected);
92
- });
93
-
94
- it('should compute MD5 hash from Buffer', () => {
95
- const input = Buffer.from('hello');
96
- const expected = computeMD5(input);
97
- const hash = MD5Hash.from(input);
98
- expect(hash.valueOf()).toBe(expected);
99
- });
100
-
101
- it('should compute MD5 hash from StringValueObject', () => {
102
- const input = new StringValueObject('hello');
103
- const expected = computeMD5(input.valueOf());
104
- const hash = MD5Hash.from(input);
105
- expect(hash.valueOf()).toBe(expected);
106
- });
107
- });
108
- });
109
-
110
- describe('inheritance and ValueObject behavior', () => {
111
- it('should inherit from ValueObject', () => {
112
- const hash = new MD5Hash('5d41402abc4b2a76b9719d911017c592');
113
- expect(hash).toBeInstanceOf(MD5Hash);
114
- expect(hash.valueOf).toBeDefined();
115
- expect(hash.isEqual).toBeDefined();
116
- expect(hash.toString).toBeDefined();
117
- });
118
-
119
- it('should implement valueOf() method correctly', () => {
120
- const hashValue = '098f6bcd4621d373cade4e832627b4f6';
121
- const hash = new MD5Hash(hashValue);
122
- expect(hash.valueOf()).toBe(hashValue);
123
- });
124
-
125
- it('should implement toString() method correctly', () => {
126
- const hashValue = '9e107d9d372bb6826bd81d3542a419d6';
127
- const hash = new MD5Hash(hashValue);
128
- expect(hash.toString()).toBe(hashValue);
129
- });
130
-
131
- it('should implement isEqual() method correctly', () => {
132
- const hashValue = '5d41402abc4b2a76b9719d911017c592';
133
- const hash1 = new MD5Hash(hashValue);
134
- const hash2 = new MD5Hash(hashValue);
135
- const hash3 = new MD5Hash('098f6bcd4621d373cade4e832627b4f6');
136
-
137
- expect(hash1.isEqual(hash2)).toBeTrue();
138
- expect(hash1.isEqual(hash3)).toBeFalse();
139
- expect(hash1.isEqual(hashValue)).toBeTrue();
140
- expect(hash1.isEqual('098f6bcd4621d373cade4e832627b4f6')).toBeFalse();
141
- });
142
-
143
- it('should compare with string values using isEqual', () => {
144
- const hash = new MD5Hash('5d41402abc4b2a76b9719d911017c592');
145
- expect(hash.isEqual('5d41402abc4b2a76b9719d911017c592')).toBeTrue();
146
- expect(hash.isEqual('098f6bcd4621d373cade4e832627b4f6')).toBeFalse();
147
- });
148
-
149
- it('should implement clone() method correctly inherited from ValueObject', () => {
150
- const originalValue = '5d41402abc4b2a76b9719d911017c592';
151
- const original = new MD5Hash(originalValue);
152
- const cloned = (original as any).clone();
153
-
154
- expect(cloned).toBeInstanceOf(MD5Hash);
155
- expect(cloned.valueOf()).toBe(originalValue);
156
- expect(cloned.toString()).toBe(originalValue);
157
- expect(cloned.isEqual(original)).toBeTrue();
158
- expect(cloned).not.toBe(original); // Different instances
159
- });
160
-
161
- it('should maintain hash validation in cloned instances', () => {
162
- const original = new MD5Hash('5d41402abc4b2a76b9719d911017c592');
163
- const cloned = (original as any).clone();
164
-
165
- expect(cloned).toBeInstanceOf(MD5Hash);
166
- expect(cloned.valueOf()).toBe('5d41402abc4b2a76b9719d911017c592');
167
-
168
- // Cloned instance should still be a valid hash
169
- expect(() => cloned.toString()).not.toThrow();
170
- expect(cloned.toString()).toBe('5d41402abc4b2a76b9719d911017c592');
171
- });
172
- });
173
-
174
- describe('instance methods', () => {
175
- describe('toBase64', () => {
176
- it('should convert hash to base64 correctly', () => {
177
- const hashValue = '5d41402abc4b2a76b9719d911017c592';
178
- const hash = new MD5Hash(hashValue);
179
- const base64 = hash.toBase64();
180
- expect(base64).toBeInstanceOf(StringValueObject);
181
- expect(base64.valueOf()).toBe(
182
- Buffer.from(hashValue, 'hex').toString('base64'),
183
- );
184
- });
185
- });
186
- });
187
- });
@@ -1,220 +0,0 @@
1
- import { createHash } from 'crypto';
2
- import {
3
- SHA256Hash,
4
- NullObject,
5
- InvalidHashError,
6
- StringValueObject,
7
- } from '../../../src';
8
-
9
- function computeSHA256(input: string | Buffer): string {
10
- return createHash('sha256').update(input).digest('hex');
11
- }
12
-
13
- describe('SHA256Hash', () => {
14
- describe('constructor', () => {
15
- it('should return a NullValueObject when a Nullish is received', () => {
16
- expect(
17
- () => new SHA256Hash(undefined as unknown as string),
18
- ).not.toThrow();
19
- expect(
20
- NullObject.isNullObject(new SHA256Hash(undefined as unknown as string)),
21
- ).toBeTrue();
22
- });
23
-
24
- const validSHA256Hashes = [
25
- '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824', // SHA256 of 'hello'
26
- '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08', // SHA256 of 'test'
27
- '5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8', // SHA256 of 'password'
28
- 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855', // SHA256 of empty string
29
- '8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918', // SHA256 of 'admin'
30
- ];
31
-
32
- it.each(validSHA256Hashes)(
33
- 'should create an SHA256Hash instance for valid SHA256 hash strings',
34
- (hash) => {
35
- expect(() => new SHA256Hash(hash)).not.toThrow();
36
- expect(new SHA256Hash(hash).toString()).toBe(hash);
37
- },
38
- );
39
-
40
- const invalidSHA256Hashes = [
41
- 'invalid-hash',
42
- '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b982', // 63 chars
43
- '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b98245', // 65 chars
44
- 'gggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggggg', // 64 chars but invalid hex
45
- '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b982g', // 64 chars with non-hex
46
- '',
47
- 'a'.repeat(63),
48
- 'a'.repeat(65),
49
- ];
50
-
51
- it.each(invalidSHA256Hashes)(
52
- 'should throw InvalidHashError for invalid SHA256 hash strings',
53
- (hash) => {
54
- expect(() => new SHA256Hash(hash)).toThrow(InvalidHashError);
55
- },
56
- );
57
-
58
- it('should accept another StringValueObject', () => {
59
- const hashString = new StringValueObject(
60
- '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824',
61
- );
62
- const hash = new SHA256Hash(hashString);
63
- expect(hash.toString()).toBe(
64
- '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824',
65
- );
66
- });
67
-
68
- it('should validate hash format when constructed from StringValueObject', () => {
69
- const invalidHashString = new StringValueObject('invalid-hash');
70
- expect(() => new SHA256Hash(invalidHashString)).toThrow(InvalidHashError);
71
- });
72
- });
73
-
74
- describe('static methods', () => {
75
- describe('isValid', () => {
76
- it('should return true for valid SHA256 hashes', () => {
77
- const validHash =
78
- '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824';
79
- expect(SHA256Hash.isValid(validHash)).toBeTrue();
80
- expect(SHA256Hash.isValid(new StringValueObject(validHash))).toBeTrue();
81
- });
82
-
83
- it('should return false for invalid SHA256 hashes', () => {
84
- expect(SHA256Hash.isValid('invalid')).toBeFalse();
85
- expect(SHA256Hash.isValid('123')).toBeFalse();
86
- expect(SHA256Hash.isValid('g'.repeat(64))).toBeFalse();
87
- });
88
- });
89
-
90
- describe('from', () => {
91
- it('should compute SHA256 hash from string', () => {
92
- const input = 'hello';
93
- const expected = computeSHA256(input);
94
- const hash = SHA256Hash.from(input);
95
- expect(hash.valueOf()).toBe(expected);
96
- });
97
-
98
- it('should compute SHA256 hash from Buffer', () => {
99
- const input = Buffer.from('hello');
100
- const expected = computeSHA256(input);
101
- const hash = SHA256Hash.from(input);
102
- expect(hash.valueOf()).toBe(expected);
103
- });
104
-
105
- it('should compute SHA256 hash from StringValueObject', () => {
106
- const input = new StringValueObject('hello');
107
- const expected = computeSHA256(input.valueOf());
108
- const hash = SHA256Hash.from(input);
109
- expect(hash.valueOf()).toBe(expected);
110
- });
111
- });
112
- });
113
-
114
- describe('inheritance and ValueObject behavior', () => {
115
- it('should inherit from ValueObject', () => {
116
- const hash = new SHA256Hash(
117
- '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824',
118
- );
119
- expect(hash).toBeInstanceOf(SHA256Hash);
120
- expect(hash.valueOf).toBeDefined();
121
- expect(hash.isEqual).toBeDefined();
122
- expect(hash.toString).toBeDefined();
123
- });
124
-
125
- it('should implement valueOf() method correctly', () => {
126
- const hashValue =
127
- '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08';
128
- const hash = new SHA256Hash(hashValue);
129
- expect(hash.valueOf()).toBe(hashValue);
130
- });
131
-
132
- it('should implement toString() method correctly', () => {
133
- const hashValue =
134
- '5e884898da28047151d0e56f8dc6292773603d0d6aabbdd62a11ef721d1542d8';
135
- const hash = new SHA256Hash(hashValue);
136
- expect(hash.toString()).toBe(hashValue);
137
- });
138
-
139
- it('should implement isEqual() method correctly', () => {
140
- const hashValue =
141
- '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824';
142
- const hash1 = new SHA256Hash(hashValue);
143
- const hash2 = new SHA256Hash(hashValue);
144
- const hash3 = new SHA256Hash(
145
- '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08',
146
- );
147
-
148
- expect(hash1.isEqual(hash2)).toBeTrue();
149
- expect(hash1.isEqual(hash3)).toBeFalse();
150
- expect(hash1.isEqual(hashValue)).toBeTrue();
151
- expect(
152
- hash1.isEqual(
153
- '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08',
154
- ),
155
- ).toBeFalse();
156
- });
157
-
158
- it('should compare with string values using isEqual', () => {
159
- const hash = new SHA256Hash(
160
- '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824',
161
- );
162
- expect(
163
- hash.isEqual(
164
- '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824',
165
- ),
166
- ).toBeTrue();
167
- expect(
168
- hash.isEqual(
169
- '9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08',
170
- ),
171
- ).toBeFalse();
172
- });
173
-
174
- it('should implement clone() method correctly inherited from ValueObject', () => {
175
- const originalValue =
176
- '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824';
177
- const original = new SHA256Hash(originalValue);
178
- const cloned = (original as any).clone();
179
-
180
- expect(cloned).toBeInstanceOf(SHA256Hash);
181
- expect(cloned.valueOf()).toBe(originalValue);
182
- expect(cloned.toString()).toBe(originalValue);
183
- expect(cloned.isEqual(original)).toBeTrue();
184
- expect(cloned).not.toBe(original); // Different instances
185
- });
186
-
187
- it('should maintain hash validation in cloned instances', () => {
188
- const original = new SHA256Hash(
189
- '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824',
190
- );
191
- const cloned = (original as any).clone();
192
-
193
- expect(cloned).toBeInstanceOf(SHA256Hash);
194
- expect(cloned.valueOf()).toBe(
195
- '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824',
196
- );
197
-
198
- // Cloned instance should still be a valid hash
199
- expect(() => cloned.toString()).not.toThrow();
200
- expect(cloned.toString()).toBe(
201
- '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824',
202
- );
203
- });
204
- });
205
-
206
- describe('instance methods', () => {
207
- describe('toBase64', () => {
208
- it('should convert hash to base64 correctly', () => {
209
- const hashValue =
210
- '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824';
211
- const hash = new SHA256Hash(hashValue);
212
- const base64 = hash.toBase64();
213
- expect(base64).toBeInstanceOf(StringValueObject);
214
- expect(base64.valueOf()).toBe(
215
- Buffer.from(hashValue, 'hex').toString('base64'),
216
- );
217
- });
218
- });
219
- });
220
- });
@@ -1,220 +0,0 @@
1
- import { createHash } from 'crypto';
2
- import {
3
- SHA512Hash,
4
- NullObject,
5
- InvalidHashError,
6
- StringValueObject,
7
- } from '../../../src';
8
-
9
- function computeSHA512(input: string | Buffer): string {
10
- return createHash('sha512').update(input).digest('hex');
11
- }
12
-
13
- describe('SHA512Hash', () => {
14
- describe('constructor', () => {
15
- it('should return a NullValueObject when a Nullish is received', () => {
16
- expect(
17
- () => new SHA512Hash(undefined as unknown as string),
18
- ).not.toThrow();
19
- expect(
20
- NullObject.isNullObject(new SHA512Hash(undefined as unknown as string)),
21
- ).toBeTrue();
22
- });
23
-
24
- const validSHA512Hashes = [
25
- '9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043', // SHA512 of 'hello'
26
- 'ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff', // SHA512 of 'test'
27
- 'b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86', // SHA512 of 'password'
28
- 'cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e', // SHA512 of empty string
29
- 'c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec', // SHA512 of 'admin'
30
- ];
31
-
32
- it.each(validSHA512Hashes)(
33
- 'should create an SHA512Hash instance for valid SHA512 hash strings',
34
- (hash) => {
35
- expect(() => new SHA512Hash(hash)).not.toThrow();
36
- expect(new SHA512Hash(hash).toString()).toBe(hash);
37
- },
38
- );
39
-
40
- const invalidSHA512Hashes = [
41
- 'invalid-hash',
42
- '9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca7232', // 127 chars
43
- '9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca723234', // 129 chars
44
- 'g'.repeat(128), // 128 chars but invalid hex
45
- '9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca7232g', // 128 chars with non-hex
46
- '',
47
- 'a'.repeat(127),
48
- 'a'.repeat(129),
49
- ];
50
-
51
- it.each(invalidSHA512Hashes)(
52
- 'should throw InvalidHashError for invalid SHA512 hash strings',
53
- (hash) => {
54
- expect(() => new SHA512Hash(hash)).toThrow(InvalidHashError);
55
- },
56
- );
57
-
58
- it('should accept another StringValueObject', () => {
59
- const hashString = new StringValueObject(
60
- '9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043',
61
- );
62
- const hash = new SHA512Hash(hashString);
63
- expect(hash.toString()).toBe(
64
- '9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043',
65
- );
66
- });
67
-
68
- it('should validate hash format when constructed from StringValueObject', () => {
69
- const invalidHashString = new StringValueObject('invalid-hash');
70
- expect(() => new SHA512Hash(invalidHashString)).toThrow(InvalidHashError);
71
- });
72
- });
73
-
74
- describe('static methods', () => {
75
- describe('isValid', () => {
76
- it('should return true for valid SHA512 hashes', () => {
77
- const validHash =
78
- '9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043';
79
- expect(SHA512Hash.isValid(validHash)).toBeTrue();
80
- expect(SHA512Hash.isValid(new StringValueObject(validHash))).toBeTrue();
81
- });
82
-
83
- it('should return false for invalid SHA512 hashes', () => {
84
- expect(SHA512Hash.isValid('invalid')).toBeFalse();
85
- expect(SHA512Hash.isValid('123')).toBeFalse();
86
- expect(SHA512Hash.isValid('g'.repeat(128))).toBeFalse();
87
- });
88
- });
89
-
90
- describe('from', () => {
91
- it('should compute SHA512 hash from string', () => {
92
- const input = 'hello';
93
- const expected = computeSHA512(input);
94
- const hash = SHA512Hash.from(input);
95
- expect(hash.valueOf()).toBe(expected);
96
- });
97
-
98
- it('should compute SHA512 hash from Buffer', () => {
99
- const input = Buffer.from('hello');
100
- const expected = computeSHA512(input);
101
- const hash = SHA512Hash.from(input);
102
- expect(hash.valueOf()).toBe(expected);
103
- });
104
-
105
- it('should compute SHA512 hash from StringValueObject', () => {
106
- const input = new StringValueObject('hello');
107
- const expected = computeSHA512(input.valueOf());
108
- const hash = SHA512Hash.from(input);
109
- expect(hash.valueOf()).toBe(expected);
110
- });
111
- });
112
- });
113
-
114
- describe('inheritance and ValueObject behavior', () => {
115
- it('should inherit from ValueObject', () => {
116
- const hash = new SHA512Hash(
117
- '9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043',
118
- );
119
- expect(hash).toBeInstanceOf(SHA512Hash);
120
- expect(hash.valueOf).toBeDefined();
121
- expect(hash.isEqual).toBeDefined();
122
- expect(hash.toString).toBeDefined();
123
- });
124
-
125
- it('should implement valueOf() method correctly', () => {
126
- const hashValue =
127
- 'ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff';
128
- const hash = new SHA512Hash(hashValue);
129
- expect(hash.valueOf()).toBe(hashValue);
130
- });
131
-
132
- it('should implement toString() method correctly', () => {
133
- const hashValue =
134
- 'b109f3bbbc244eb82441917ed06d618b9008dd09b3befd1b5e07394c706a8bb980b1d7785e5976ec049b46df5f1326af5a2ea6d103fd07c95385ffab0cacbc86';
135
- const hash = new SHA512Hash(hashValue);
136
- expect(hash.toString()).toBe(hashValue);
137
- });
138
-
139
- it('should implement isEqual() method correctly', () => {
140
- const hashValue =
141
- '9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043';
142
- const hash1 = new SHA512Hash(hashValue);
143
- const hash2 = new SHA512Hash(hashValue);
144
- const hash3 = new SHA512Hash(
145
- 'ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff',
146
- );
147
-
148
- expect(hash1.isEqual(hash2)).toBeTrue();
149
- expect(hash1.isEqual(hash3)).toBeFalse();
150
- expect(hash1.isEqual(hashValue)).toBeTrue();
151
- expect(
152
- hash1.isEqual(
153
- 'ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff',
154
- ),
155
- ).toBeFalse();
156
- });
157
-
158
- it('should compare with string values using isEqual', () => {
159
- const hash = new SHA512Hash(
160
- '9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043',
161
- );
162
- expect(
163
- hash.isEqual(
164
- '9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043',
165
- ),
166
- ).toBeTrue();
167
- expect(
168
- hash.isEqual(
169
- 'ee26b0dd4af7e749aa1a8ee3c10ae9923f618980772e473f8819a5d4940e0db27ac185f8a0e1d5f84f88bc887fd67b143732c304cc5fa9ad8e6f57f50028a8ff',
170
- ),
171
- ).toBeFalse();
172
- });
173
-
174
- it('should implement clone() method correctly inherited from ValueObject', () => {
175
- const originalValue =
176
- '9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043';
177
- const original = new SHA512Hash(originalValue);
178
- const cloned = (original as any).clone();
179
-
180
- expect(cloned).toBeInstanceOf(SHA512Hash);
181
- expect(cloned.valueOf()).toBe(originalValue);
182
- expect(cloned.toString()).toBe(originalValue);
183
- expect(cloned.isEqual(original)).toBeTrue();
184
- expect(cloned).not.toBe(original); // Different instances
185
- });
186
-
187
- it('should maintain hash validation in cloned instances', () => {
188
- const original = new SHA512Hash(
189
- '9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043',
190
- );
191
- const cloned = (original as any).clone();
192
-
193
- expect(cloned).toBeInstanceOf(SHA512Hash);
194
- expect(cloned.valueOf()).toBe(
195
- '9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043',
196
- );
197
-
198
- // Cloned instance should still be a valid hash
199
- expect(() => cloned.toString()).not.toThrow();
200
- expect(cloned.toString()).toBe(
201
- '9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043',
202
- );
203
- });
204
- });
205
-
206
- describe('instance methods', () => {
207
- describe('toBase64', () => {
208
- it('should convert hash to base64 correctly', () => {
209
- const hashValue =
210
- '9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043';
211
- const hash = new SHA512Hash(hashValue);
212
- const base64 = hash.toBase64();
213
- expect(base64).toBeInstanceOf(StringValueObject);
214
- expect(base64.valueOf()).toBe(
215
- Buffer.from(hashValue, 'hex').toString('base64'),
216
- );
217
- });
218
- });
219
- });
220
- });
@@ -1,34 +0,0 @@
1
- import { InvalidFormatError } from '../../../src/errors/InvalidFormatError';
2
- import { InvalidLengthError } from '../../../src/errors/InvalidLengthError';
3
- import { InvalidValueError } from '../../../src/errors/InvalidValueError';
4
- import { ShortId } from '../../../src/value-objects/ids/ShortId';
5
-
6
- describe('ShortId', () => {
7
- describe('generate', () => {
8
- it('should generate a valid ShortId', () => {
9
- const id = ShortId.generate();
10
- expect(id).toBeInstanceOf(ShortId);
11
- expect(id.toString()).toHaveLength(24);
12
- });
13
- });
14
- describe('constructor', () => {
15
- it('should throw invalid length error when constructor receives a empty string', () => {
16
- expect(() => new ShortId('')).toThrow(InvalidLengthError);
17
- });
18
-
19
- it('should throw invalid format when value is not a valid id', () => {
20
- expect(() => new ShortId('123')).toThrow(InvalidLengthError);
21
- });
22
-
23
- it("should be a valid id when it's 24 length string", () => {
24
- expect(() => new ShortId('12345678901234567890abcd')).not.toThrow();
25
- expect(new ShortId('12345678901234567890abcd')).toBeInstanceOf(ShortId);
26
- });
27
-
28
- it("should be invalid id when it's 24 length but invalid characters", () => {
29
- expect(() => new ShortId('123456789@123456789#abcd')).toThrow(
30
- InvalidFormatError,
31
- );
32
- });
33
- });
34
- });