@nestjslatam/ddd-lib 1.0.51 → 1.0.53

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 (365) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +30 -30
  3. package/dist/aggregate-root.d.ts +63 -0
  4. package/dist/aggregate-root.js +154 -0
  5. package/dist/broken-rules.manager.d.ts +21 -0
  6. package/dist/broken-rules.manager.js +95 -0
  7. package/dist/core/aggregate/aggregate-equality.d.ts +16 -0
  8. package/dist/core/aggregate/aggregate-equality.js +33 -0
  9. package/dist/core/aggregate/aggregate-identity.d.ts +11 -0
  10. package/dist/core/aggregate/aggregate-identity.js +40 -0
  11. package/dist/core/aggregate/aggregate-serializer.d.ts +28 -0
  12. package/dist/core/aggregate/aggregate-serializer.js +38 -0
  13. package/dist/core/aggregate/aggregate-validation-orchestrator.d.ts +14 -0
  14. package/dist/core/aggregate/aggregate-validation-orchestrator.js +36 -0
  15. package/dist/core/aggregate/index.d.ts +5 -0
  16. package/dist/core/aggregate/index.js +12 -0
  17. package/dist/core/business-rules/impl/broken-rule.d.ts +7 -0
  18. package/dist/core/business-rules/impl/broken-rule.js +15 -0
  19. package/dist/core/business-rules/impl/broken-rules-extension.d.ts +6 -0
  20. package/dist/core/business-rules/impl/broken-rules-extension.js +32 -0
  21. package/dist/core/business-rules/impl/index.d.ts +4 -0
  22. package/{ddd-core/broken-rules → dist/core/business-rules/impl}/index.js +2 -1
  23. package/dist/core/business-rules/impl/property-change/index.d.ts +5 -0
  24. package/dist/core/business-rules/impl/property-change/index.js +21 -0
  25. package/dist/core/business-rules/impl/property-change/notify-property-changed.base.d.ts +16 -0
  26. package/dist/core/business-rules/impl/property-change/notify-property-changed.base.js +64 -0
  27. package/dist/core/business-rules/impl/property-change/notify-property-changed.context-args.d.ts +7 -0
  28. package/dist/core/business-rules/impl/property-change/notify-property-changed.context-args.js +12 -0
  29. package/dist/core/business-rules/impl/property-change/notify-property-changed.context.d.ts +11 -0
  30. package/dist/core/business-rules/impl/property-change/notify-property-changed.context.js +21 -0
  31. package/dist/core/business-rules/impl/property-change/reflection-type-extensions.d.ts +5 -0
  32. package/dist/core/business-rules/impl/property-change/reflection-type-extensions.js +23 -0
  33. package/dist/core/business-rules/index.d.ts +2 -0
  34. package/dist/core/index.d.ts +6 -0
  35. package/{ddd-core → dist/core}/index.js +5 -5
  36. package/dist/core/repositories/index.d.ts +3 -0
  37. package/dist/core/repositories/index.js +19 -0
  38. package/dist/core/repositories/repository-read.interface.d.ts +7 -0
  39. package/{ddd-commands/interfaces/command-handler.interface.js → dist/core/repositories/repository-read.interface.js} +1 -1
  40. package/{ddd-ports/interfaces/domain-repository-write.interface.d.ts → dist/core/repositories/repository-write.interface.d.ts} +4 -3
  41. package/{ddd-commands/interfaces/command-metadata.interface.js → dist/core/repositories/repository-write.interface.js} +1 -1
  42. package/dist/core/tracking-state/impl/index.d.ts +4 -0
  43. package/{ddd-core → dist/core/tracking-state}/impl/index.js +2 -2
  44. package/dist/core/tracking-state/impl/nested-property-change-detector.d.ts +8 -0
  45. package/dist/core/tracking-state/impl/nested-property-change-detector.js +38 -0
  46. package/{ddd-core → dist/core/tracking-state}/impl/tracking-props.d.ts +3 -0
  47. package/{ddd-core → dist/core/tracking-state}/impl/tracking-props.js +11 -0
  48. package/dist/core/tracking-state/impl/tracking-state-transition.d.ts +9 -0
  49. package/dist/core/tracking-state/impl/tracking-state-transition.js +34 -0
  50. package/{ddd-commands → dist/core/tracking-state}/index.d.ts +1 -0
  51. package/dist/core/tracking-state/interfaces/ichange-detector.d.ts +8 -0
  52. package/{ddd-commands/interfaces/command.interface.js → dist/core/tracking-state/interfaces/ichange-detector.js} +1 -1
  53. package/dist/core/tracking-state/interfaces/idomain-primitive.d.ts +5 -0
  54. package/dist/core/tracking-state/interfaces/idomain-primitive.js +3 -0
  55. package/dist/core/tracking-state/interfaces/index.d.ts +6 -0
  56. package/dist/core/tracking-state/interfaces/index.js +22 -0
  57. package/{ddd-core/interfaces/tracking.interface.d.ts → dist/core/tracking-state/interfaces/itracking-props.d.ts} +2 -0
  58. package/{ddd-core/interfaces/saga.interface.js → dist/core/tracking-state/interfaces/itracking-props.js} +1 -1
  59. package/dist/core/tracking-state/interfaces/itracking-state-manager.d.ts +12 -0
  60. package/{ddd-commands/interfaces/command-bus.interface.js → dist/core/tracking-state/interfaces/itracking-state-manager.js} +1 -1
  61. package/dist/core/tracking-state/interfaces/itracking-state-transitions.d.ts +7 -0
  62. package/dist/core/tracking-state/interfaces/itracking-state-transitions.js +3 -0
  63. package/dist/core/validator-rules/impl/abstract-rule-validator.d.ts +13 -0
  64. package/dist/core/validator-rules/impl/abstract-rule-validator.js +34 -0
  65. package/dist/core/validator-rules/impl/abstract-validator.d.ts +4 -0
  66. package/dist/core/validator-rules/impl/abstract-validator.js +7 -0
  67. package/dist/core/validator-rules/impl/entity-validator.d.ts +5 -0
  68. package/dist/core/validator-rules/impl/entity-validator.js +12 -0
  69. package/dist/core/validator-rules/impl/index.d.ts +5 -0
  70. package/{ddd-core/interfaces → dist/core/validator-rules/impl}/index.js +4 -4
  71. package/dist/core/validator-rules/impl/value-object-validator.d.ts +7 -0
  72. package/dist/core/validator-rules/impl/value-object-validator.js +15 -0
  73. package/{ddd-events → dist/core/validator-rules}/index.d.ts +2 -1
  74. package/{ddd-events → dist/core/validator-rules}/index.js +1 -1
  75. package/dist/core/validator-rules/interfaces/index.d.ts +3 -0
  76. package/{ddd-ports → dist/core/validator-rules/interfaces}/index.js +2 -1
  77. package/dist/core/validator-rules/interfaces/irule-context.d.ts +5 -0
  78. package/{ddd-commands/impl/command-types.js → dist/core/validator-rules/interfaces/irule-context.js} +1 -1
  79. package/dist/core/validator-rules/interfaces/irule-validator.d.ts +8 -0
  80. package/{ddd-core/interfaces/ddd.options.js → dist/core/validator-rules/interfaces/irule-validator.js} +1 -1
  81. package/dist/ddd.module.d.ts +6 -0
  82. package/{ddd.module.js → dist/ddd.module.js} +4 -32
  83. package/dist/ddd.service.d.ts +7 -0
  84. package/{ddd.service.js → dist/ddd.service.js} +1 -16
  85. package/dist/domain-event.d.ts +56 -0
  86. package/dist/domain-event.js +175 -0
  87. package/dist/enum.d.ts +28 -0
  88. package/dist/enum.js +129 -0
  89. package/dist/exceptions/domain.exception.d.ts +19 -0
  90. package/dist/exceptions/domain.exception.js +45 -0
  91. package/{ddd-helpers → dist/helpers}/datetime.helper.d.ts +1 -0
  92. package/{ddd-helpers → dist/helpers}/datetime.helper.js +1 -1
  93. package/dist/helpers/domain-object.helper.d.ts +20 -0
  94. package/{ddd-helpers → dist/helpers}/domain-object.helper.js +14 -19
  95. package/{ddd-helpers → dist/helpers}/index.d.ts +1 -0
  96. package/dist/index.d.ts +13 -0
  97. package/{ddd-events/impl → dist}/index.js +11 -7
  98. package/dist/state-transition.manager.d.ts +23 -0
  99. package/dist/state-transition.manager.js +163 -0
  100. package/dist/tracking-state-manager.d.ts +25 -0
  101. package/dist/tracking-state-manager.js +70 -0
  102. package/dist/validator-rule.manager.d.ts +17 -0
  103. package/dist/validator-rule.manager.js +80 -0
  104. package/dist/valueobject.d.ts +23 -0
  105. package/dist/valueobject.js +93 -0
  106. package/dist/valueobjects/id.valueobject.d.ts +16 -0
  107. package/dist/valueobjects/id.valueobject.js +52 -0
  108. package/dist/valueobjects/index.d.ts +7 -0
  109. package/{ddd-commands/impl → dist/valueobjects}/index.js +6 -5
  110. package/dist/valueobjects/number-notnull.validator.d.ts +13 -0
  111. package/dist/valueobjects/number-notnull.validator.js +31 -0
  112. package/dist/valueobjects/number-positive.validator.d.ts +13 -0
  113. package/dist/valueobjects/number-positive.validator.js +43 -0
  114. package/dist/valueobjects/number.valueobject.d.ts +25 -0
  115. package/dist/valueobjects/number.valueobject.js +67 -0
  116. package/dist/valueobjects/string-notnullorempty.validator.d.ts +14 -0
  117. package/dist/valueobjects/string-notnullorempty.validator.js +36 -0
  118. package/dist/valueobjects/string.valueobject.d.ts +27 -0
  119. package/dist/valueobjects/string.valueobject.js +86 -0
  120. package/package.json +52 -26
  121. package/src/types.d.ts +7 -0
  122. package/ddd-aggregate-root.d.ts +0 -34
  123. package/ddd-aggregate-root.js +0 -85
  124. package/ddd-aggregate-root.js.map +0 -1
  125. package/ddd-commands/impl/command-types.d.ts +0 -3
  126. package/ddd-commands/impl/command-types.js.map +0 -1
  127. package/ddd-commands/impl/command.base.d.ts +0 -7
  128. package/ddd-commands/impl/command.base.js +0 -15
  129. package/ddd-commands/impl/command.base.js.map +0 -1
  130. package/ddd-commands/impl/default-command-publisher.d.ts +0 -7
  131. package/ddd-commands/impl/default-command-publisher.js +0 -13
  132. package/ddd-commands/impl/default-command-publisher.js.map +0 -1
  133. package/ddd-commands/impl/domain-command-bus.d.ts +0 -18
  134. package/ddd-commands/impl/domain-command-bus.js +0 -71
  135. package/ddd-commands/impl/domain-command-bus.js.map +0 -1
  136. package/ddd-commands/impl/index.d.ts +0 -5
  137. package/ddd-commands/impl/index.js.map +0 -1
  138. package/ddd-commands/index.js.map +0 -1
  139. package/ddd-commands/interfaces/command-bus.interface.d.ts +0 -4
  140. package/ddd-commands/interfaces/command-bus.interface.js.map +0 -1
  141. package/ddd-commands/interfaces/command-handler.interface.d.ts +0 -4
  142. package/ddd-commands/interfaces/command-handler.interface.js.map +0 -1
  143. package/ddd-commands/interfaces/command-metadata.interface.d.ts +0 -4
  144. package/ddd-commands/interfaces/command-metadata.interface.js.map +0 -1
  145. package/ddd-commands/interfaces/command-publisher.interface.d.ts +0 -4
  146. package/ddd-commands/interfaces/command-publisher.interface.js +0 -3
  147. package/ddd-commands/interfaces/command-publisher.interface.js.map +0 -1
  148. package/ddd-commands/interfaces/command.interface.d.ts +0 -4
  149. package/ddd-commands/interfaces/command.interface.js.map +0 -1
  150. package/ddd-commands/interfaces/index.d.ts +0 -5
  151. package/ddd-commands/interfaces/index.js +0 -22
  152. package/ddd-commands/interfaces/index.js.map +0 -1
  153. package/ddd-core/broken-rules/broken-rule-collection.d.ts +0 -13
  154. package/ddd-core/broken-rules/broken-rule-collection.js +0 -54
  155. package/ddd-core/broken-rules/broken-rule-collection.js.map +0 -1
  156. package/ddd-core/broken-rules/broken-rule.d.ts +0 -5
  157. package/ddd-core/broken-rules/broken-rule.js +0 -13
  158. package/ddd-core/broken-rules/broken-rule.js.map +0 -1
  159. package/ddd-core/broken-rules/index.d.ts +0 -2
  160. package/ddd-core/broken-rules/index.js.map +0 -1
  161. package/ddd-core/ddd-base-classes.d.ts +0 -52
  162. package/ddd-core/ddd-base-classes.js +0 -173
  163. package/ddd-core/ddd-base-classes.js.map +0 -1
  164. package/ddd-core/ddd-validators.d.ts +0 -15
  165. package/ddd-core/ddd-validators.js +0 -70
  166. package/ddd-core/ddd-validators.js.map +0 -1
  167. package/ddd-core/impl/index.d.ts +0 -3
  168. package/ddd-core/impl/index.js.map +0 -1
  169. package/ddd-core/impl/observable-bus.d.ts +0 -6
  170. package/ddd-core/impl/observable-bus.js +0 -16
  171. package/ddd-core/impl/observable-bus.js.map +0 -1
  172. package/ddd-core/impl/of-type.d.ts +0 -4
  173. package/ddd-core/impl/of-type.js +0 -9
  174. package/ddd-core/impl/of-type.js.map +0 -1
  175. package/ddd-core/impl/tracking-props.js.map +0 -1
  176. package/ddd-core/index.d.ts +0 -5
  177. package/ddd-core/index.js.map +0 -1
  178. package/ddd-core/interfaces/ddd.options.d.ts +0 -7
  179. package/ddd-core/interfaces/ddd.options.js.map +0 -1
  180. package/ddd-core/interfaces/index.d.ts +0 -4
  181. package/ddd-core/interfaces/index.js.map +0 -1
  182. package/ddd-core/interfaces/message-source.interface.d.ts +0 -5
  183. package/ddd-core/interfaces/message-source.interface.js +0 -3
  184. package/ddd-core/interfaces/message-source.interface.js.map +0 -1
  185. package/ddd-core/interfaces/saga.interface.d.ts +0 -4
  186. package/ddd-core/interfaces/saga.interface.js.map +0 -1
  187. package/ddd-core/interfaces/tracking.interface.js +0 -3
  188. package/ddd-core/interfaces/tracking.interface.js.map +0 -1
  189. package/ddd-decorators/command-handler.decorator.d.ts +0 -3
  190. package/ddd-decorators/command-handler.decorator.js +0 -16
  191. package/ddd-decorators/command-handler.decorator.js.map +0 -1
  192. package/ddd-decorators/constants.d.ts +0 -5
  193. package/ddd-decorators/constants.js +0 -9
  194. package/ddd-decorators/constants.js.map +0 -1
  195. package/ddd-decorators/events-handler.decorator.d.ts +0 -3
  196. package/ddd-decorators/events-handler.decorator.js +0 -18
  197. package/ddd-decorators/events-handler.decorator.js.map +0 -1
  198. package/ddd-decorators/index.d.ts +0 -6
  199. package/ddd-decorators/index.js +0 -23
  200. package/ddd-decorators/index.js.map +0 -1
  201. package/ddd-decorators/reflect-command.helper.d.ts +0 -6
  202. package/ddd-decorators/reflect-command.helper.js +0 -25
  203. package/ddd-decorators/reflect-command.helper.js.map +0 -1
  204. package/ddd-decorators/reflect-event.helper.d.ts +0 -7
  205. package/ddd-decorators/reflect-event.helper.js +0 -18
  206. package/ddd-decorators/reflect-event.helper.js.map +0 -1
  207. package/ddd-decorators/saga.decorator.d.ts +0 -2
  208. package/ddd-decorators/saga.decorator.js +0 -13
  209. package/ddd-decorators/saga.decorator.js.map +0 -1
  210. package/ddd-events/impl/default-event-publisher.d.ts +0 -9
  211. package/ddd-events/impl/default-event-publisher.js +0 -16
  212. package/ddd-events/impl/default-event-publisher.js.map +0 -1
  213. package/ddd-events/impl/domain-event-bus.d.ts +0 -32
  214. package/ddd-events/impl/domain-event-bus.js +0 -140
  215. package/ddd-events/impl/domain-event-bus.js.map +0 -1
  216. package/ddd-events/impl/domain-event-cli.registry.d.ts +0 -6
  217. package/ddd-events/impl/domain-event-cli.registry.js +0 -18
  218. package/ddd-events/impl/domain-event-cli.registry.js.map +0 -1
  219. package/ddd-events/impl/domain-event-collection.d.ts +0 -11
  220. package/ddd-events/impl/domain-event-collection.js +0 -33
  221. package/ddd-events/impl/domain-event-collection.js.map +0 -1
  222. package/ddd-events/impl/domain-event-publisher.d.ts +0 -12
  223. package/ddd-events/impl/domain-event-publisher.js +0 -48
  224. package/ddd-events/impl/domain-event-publisher.js.map +0 -1
  225. package/ddd-events/impl/domain-event-types.d.ts +0 -3
  226. package/ddd-events/impl/domain-event-types.js +0 -3
  227. package/ddd-events/impl/domain-event-types.js.map +0 -1
  228. package/ddd-events/impl/domain-event.d.ts +0 -19
  229. package/ddd-events/impl/domain-event.deserializer.d.ts +0 -8
  230. package/ddd-events/impl/domain-event.deserializer.js +0 -31
  231. package/ddd-events/impl/domain-event.deserializer.js.map +0 -1
  232. package/ddd-events/impl/domain-event.js +0 -29
  233. package/ddd-events/impl/domain-event.js.map +0 -1
  234. package/ddd-events/impl/domain-event.serializer.d.ts +0 -6
  235. package/ddd-events/impl/domain-event.serializer.js +0 -45
  236. package/ddd-events/impl/domain-event.serializer.js.map +0 -1
  237. package/ddd-events/impl/index.d.ts +0 -8
  238. package/ddd-events/impl/index.js.map +0 -1
  239. package/ddd-events/index.js.map +0 -1
  240. package/ddd-events/interfaces/domain-event-bus.interface.d.ts +0 -5
  241. package/ddd-events/interfaces/domain-event-bus.interface.js +0 -3
  242. package/ddd-events/interfaces/domain-event-bus.interface.js.map +0 -1
  243. package/ddd-events/interfaces/domain-event-handler.interface.d.ts +0 -4
  244. package/ddd-events/interfaces/domain-event-handler.interface.js +0 -3
  245. package/ddd-events/interfaces/domain-event-handler.interface.js.map +0 -1
  246. package/ddd-events/interfaces/domain-event-metadata.interface.d.ts +0 -7
  247. package/ddd-events/interfaces/domain-event-metadata.interface.js +0 -3
  248. package/ddd-events/interfaces/domain-event-metadata.interface.js.map +0 -1
  249. package/ddd-events/interfaces/domain-event-publisher.interface.d.ts +0 -5
  250. package/ddd-events/interfaces/domain-event-publisher.interface.js +0 -3
  251. package/ddd-events/interfaces/domain-event-publisher.interface.js.map +0 -1
  252. package/ddd-events/interfaces/domain-event-serializable.interface.d.ts +0 -11
  253. package/ddd-events/interfaces/domain-event-serializable.interface.js +0 -3
  254. package/ddd-events/interfaces/domain-event-serializable.interface.js.map +0 -1
  255. package/ddd-events/interfaces/domain-event.interface.d.ts +0 -2
  256. package/ddd-events/interfaces/domain-event.interface.js +0 -3
  257. package/ddd-events/interfaces/domain-event.interface.js.map +0 -1
  258. package/ddd-events/interfaces/index.d.ts +0 -6
  259. package/ddd-events/interfaces/index.js +0 -23
  260. package/ddd-events/interfaces/index.js.map +0 -1
  261. package/ddd-exceptions/constants.d.ts +0 -14
  262. package/ddd-exceptions/constants.js +0 -18
  263. package/ddd-exceptions/constants.js.map +0 -1
  264. package/ddd-exceptions/impl/arguments-exception.d.ts +0 -10
  265. package/ddd-exceptions/impl/arguments-exception.js +0 -27
  266. package/ddd-exceptions/impl/arguments-exception.js.map +0 -1
  267. package/ddd-exceptions/impl/broken-rules.exeption.d.ts +0 -6
  268. package/ddd-exceptions/impl/broken-rules.exeption.js +0 -14
  269. package/ddd-exceptions/impl/broken-rules.exeption.js.map +0 -1
  270. package/ddd-exceptions/impl/command-exception.d.ts +0 -7
  271. package/ddd-exceptions/impl/command-exception.js +0 -20
  272. package/ddd-exceptions/impl/command-exception.js.map +0 -1
  273. package/ddd-exceptions/impl/common.exception.d.ts +0 -14
  274. package/ddd-exceptions/impl/common.exception.js +0 -29
  275. package/ddd-exceptions/impl/common.exception.js.map +0 -1
  276. package/ddd-exceptions/impl/domain-bus.exception.d.ts +0 -7
  277. package/ddd-exceptions/impl/domain-bus.exception.js +0 -20
  278. package/ddd-exceptions/impl/domain-bus.exception.js.map +0 -1
  279. package/ddd-exceptions/impl/domain-publisher.exception.d.ts +0 -9
  280. package/ddd-exceptions/impl/domain-publisher.exception.js +0 -13
  281. package/ddd-exceptions/impl/domain-publisher.exception.js.map +0 -1
  282. package/ddd-exceptions/impl/domain-unhandled-bus.exeption.d.ts +0 -16
  283. package/ddd-exceptions/impl/domain-unhandled-bus.exeption.js +0 -45
  284. package/ddd-exceptions/impl/domain-unhandled-bus.exeption.js.map +0 -1
  285. package/ddd-exceptions/impl/index.d.ts +0 -8
  286. package/ddd-exceptions/impl/index.js +0 -25
  287. package/ddd-exceptions/impl/index.js.map +0 -1
  288. package/ddd-exceptions/impl/sagas.exception.d.ts +0 -4
  289. package/ddd-exceptions/impl/sagas.exception.js +0 -13
  290. package/ddd-exceptions/impl/sagas.exception.js.map +0 -1
  291. package/ddd-exceptions/index.d.ts +0 -3
  292. package/ddd-exceptions/index.js +0 -20
  293. package/ddd-exceptions/index.js.map +0 -1
  294. package/ddd-exceptions/interfaces/exception.base.d.ts +0 -17
  295. package/ddd-exceptions/interfaces/exception.base.js +0 -24
  296. package/ddd-exceptions/interfaces/exception.base.js.map +0 -1
  297. package/ddd-exceptions/interfaces/index.d.ts +0 -3
  298. package/ddd-exceptions/interfaces/index.js +0 -20
  299. package/ddd-exceptions/interfaces/index.js.map +0 -1
  300. package/ddd-exceptions/interfaces/unhandled-exception-info.interface.d.ts +0 -6
  301. package/ddd-exceptions/interfaces/unhandled-exception-info.interface.js +0 -3
  302. package/ddd-exceptions/interfaces/unhandled-exception-info.interface.js.map +0 -1
  303. package/ddd-exceptions/interfaces/unhandled-exception-publisher.interface.d.ts +0 -6
  304. package/ddd-exceptions/interfaces/unhandled-exception-publisher.interface.js +0 -3
  305. package/ddd-exceptions/interfaces/unhandled-exception-publisher.interface.js.map +0 -1
  306. package/ddd-helpers/datetime.helper.js.map +0 -1
  307. package/ddd-helpers/domain-object.helper.d.ts +0 -18
  308. package/ddd-helpers/domain-object.helper.js.map +0 -1
  309. package/ddd-helpers/index.js.map +0 -1
  310. package/ddd-ports/index.d.ts +0 -1
  311. package/ddd-ports/index.js.map +0 -1
  312. package/ddd-ports/interfaces/domain-repository-read.interface.d.ts +0 -6
  313. package/ddd-ports/interfaces/domain-repository-read.interface.js +0 -3
  314. package/ddd-ports/interfaces/domain-repository-read.interface.js.map +0 -1
  315. package/ddd-ports/interfaces/domain-repository-write.interface.js +0 -3
  316. package/ddd-ports/interfaces/domain-repository-write.interface.js.map +0 -1
  317. package/ddd-ports/interfaces/index.d.ts +0 -2
  318. package/ddd-ports/interfaces/index.js +0 -19
  319. package/ddd-ports/interfaces/index.js.map +0 -1
  320. package/ddd-validators/impl/domain-abstract.validator.d.ts +0 -5
  321. package/ddd-validators/impl/domain-abstract.validator.js +0 -34
  322. package/ddd-validators/impl/domain-abstract.validator.js.map +0 -1
  323. package/ddd-validators/impl/domain-entity.validator.d.ts +0 -5
  324. package/ddd-validators/impl/domain-entity.validator.js +0 -12
  325. package/ddd-validators/impl/domain-entity.validator.js.map +0 -1
  326. package/ddd-validators/impl/domain-value-object.validator.d.ts +0 -11
  327. package/ddd-validators/impl/domain-value-object.validator.js +0 -41
  328. package/ddd-validators/impl/domain-value-object.validator.js.map +0 -1
  329. package/ddd-validators/impl/index.d.ts +0 -3
  330. package/ddd-validators/impl/index.js +0 -20
  331. package/ddd-validators/impl/index.js.map +0 -1
  332. package/ddd-validators/index.d.ts +0 -1
  333. package/ddd-validators/index.js.map +0 -1
  334. package/ddd-valueobjects/domain-audit.valueobject.d.ts +0 -21
  335. package/ddd-valueobjects/domain-audit.valueobject.js +0 -63
  336. package/ddd-valueobjects/domain-audit.valueobject.js.map +0 -1
  337. package/ddd-valueobjects/domain-date.valueobject.d.ts +0 -6
  338. package/ddd-valueobjects/domain-date.valueobject.js +0 -20
  339. package/ddd-valueobjects/domain-date.valueobject.js.map +0 -1
  340. package/ddd-valueobjects/domain-enum-base.valueobject.d.ts +0 -5
  341. package/ddd-valueobjects/domain-enum-base.valueobject.js +0 -11
  342. package/ddd-valueobjects/domain-enum-base.valueobject.js.map +0 -1
  343. package/ddd-valueobjects/domain-number-base.valueobject.d.ts +0 -6
  344. package/ddd-valueobjects/domain-number-base.valueobject.js +0 -22
  345. package/ddd-valueobjects/domain-number-base.valueobject.js.map +0 -1
  346. package/ddd-valueobjects/domain-string-base.valueobject.d.ts +0 -6
  347. package/ddd-valueobjects/domain-string-base.valueobject.js +0 -22
  348. package/ddd-valueobjects/domain-string-base.valueobject.js.map +0 -1
  349. package/ddd-valueobjects/domain-uid.valueobject.d.ts +0 -7
  350. package/ddd-valueobjects/domain-uid.valueobject.js +0 -29
  351. package/ddd-valueobjects/domain-uid.valueobject.js.map +0 -1
  352. package/ddd-valueobjects/index.d.ts +0 -6
  353. package/ddd-valueobjects/index.js +0 -23
  354. package/ddd-valueobjects/index.js.map +0 -1
  355. package/ddd.module.d.ts +0 -11
  356. package/ddd.module.js.map +0 -1
  357. package/ddd.service.d.ts +0 -14
  358. package/ddd.service.js.map +0 -1
  359. package/index.d.ts +0 -14
  360. package/index.js +0 -31
  361. package/index.js.map +0 -1
  362. package/tsconfig.lib.tsbuildinfo +0 -1
  363. /package/{ddd-validators → dist/core/business-rules}/index.js +0 -0
  364. /package/{ddd-commands → dist/core/tracking-state}/index.js +0 -0
  365. /package/{ddd-helpers → dist/helpers}/index.js +0 -0
@@ -0,0 +1,80 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ValidatorRuleManager = void 0;
4
+ const domain_exception_1 = require("./exceptions/domain.exception");
5
+ class ValidatorRuleManager {
6
+ constructor() {
7
+ this._validators = [];
8
+ }
9
+ add(rule) {
10
+ if (!rule) {
11
+ throw new domain_exception_1.ArgumentNullException('rule');
12
+ }
13
+ if (!this.hasValidatorOfType(rule.constructor)) {
14
+ this._validators.push(rule);
15
+ }
16
+ }
17
+ addRange(rules) {
18
+ if (!rules) {
19
+ throw new domain_exception_1.ArgumentNullException('rules');
20
+ }
21
+ if (rules.length === 0) {
22
+ return;
23
+ }
24
+ rules.forEach((rule) => this.add(rule));
25
+ }
26
+ remove(rule) {
27
+ if (!rule) {
28
+ throw new domain_exception_1.ArgumentNullException('rule');
29
+ }
30
+ const index = this._validators.indexOf(rule);
31
+ if (index !== -1) {
32
+ this._validators.splice(index, 1);
33
+ }
34
+ }
35
+ clear() {
36
+ this._validators.length = 0;
37
+ }
38
+ getValidators() {
39
+ return Object.freeze([...this._validators]);
40
+ }
41
+ getBrokenRules() {
42
+ const result = [];
43
+ const seen = new Set();
44
+ for (const validator of this._validators) {
45
+ const brokenRules = validator.validate();
46
+ if (brokenRules && brokenRules.length > 0) {
47
+ for (const brokenRule of brokenRules) {
48
+ const key = this.getBrokenRuleKey(brokenRule);
49
+ if (!seen.has(key)) {
50
+ seen.add(key);
51
+ result.push(brokenRule);
52
+ }
53
+ }
54
+ }
55
+ }
56
+ return Object.freeze(result);
57
+ }
58
+ isEmpty() {
59
+ return this._validators.length === 0;
60
+ }
61
+ count() {
62
+ return this._validators.length;
63
+ }
64
+ has(validatorType) {
65
+ return this.hasValidatorOfType(validatorType);
66
+ }
67
+ findByType(validatorType) {
68
+ return this._validators.find((v) => v.constructor === validatorType);
69
+ }
70
+ hasValidatorOfType(validatorType) {
71
+ return this._validators.some((v) => v.constructor === validatorType);
72
+ }
73
+ getBrokenRuleKey(brokenRule) {
74
+ const property = brokenRule.property.trim().toUpperCase();
75
+ const message = brokenRule.message.trim().toUpperCase();
76
+ return `${property}:${message}`;
77
+ }
78
+ }
79
+ exports.ValidatorRuleManager = ValidatorRuleManager;
80
+ //# sourceMappingURL=validator-rule.manager.js.map
@@ -0,0 +1,23 @@
1
+ import { BrokenRulesManager } from './broken-rules.manager';
2
+ import { AbstractNotifyPropertyChanged, AbstractRuleValidator } from './core';
3
+ import { TrackingStateManager } from './tracking-state-manager';
4
+ import { ValidatorRuleManager } from './validator-rule.manager';
5
+ export declare abstract class DddValueObject<TValue> extends AbstractNotifyPropertyChanged {
6
+ readonly trackingState: TrackingStateManager;
7
+ readonly validatorRules: ValidatorRuleManager<AbstractRuleValidator<DddValueObject<TValue>>>;
8
+ readonly brokenRules: BrokenRulesManager;
9
+ get isValid(): boolean;
10
+ protected constructor(value: TValue);
11
+ private valuePropertyChanged;
12
+ setValue(value: TValue): void;
13
+ getValue(): TValue;
14
+ addValidators(): void;
15
+ private validate;
16
+ protected abstract getEqualityComponents(): Iterable<any>;
17
+ private getTypeConstructor;
18
+ equals(obj: unknown): boolean;
19
+ getHashCode(): number;
20
+ getCopy(): DddValueObject<TValue>;
21
+ clone(): object;
22
+ }
23
+ //# sourceMappingURL=valueobject.d.ts.map
@@ -0,0 +1,93 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DddValueObject = void 0;
4
+ const broken_rules_manager_1 = require("./broken-rules.manager");
5
+ const core_1 = require("./core");
6
+ const domain_exception_1 = require("./exceptions/domain.exception");
7
+ const tracking_state_manager_1 = require("./tracking-state-manager");
8
+ const validator_rule_manager_1 = require("./validator-rule.manager");
9
+ class DddValueObject extends core_1.AbstractNotifyPropertyChanged {
10
+ get isValid() {
11
+ return this.brokenRules.getBrokenRules().length === 0;
12
+ }
13
+ constructor(value) {
14
+ super();
15
+ if (value === null || value === undefined) {
16
+ throw new domain_exception_1.ArgumentNullException('value');
17
+ }
18
+ this.brokenRules = new broken_rules_manager_1.BrokenRulesManager();
19
+ this.validatorRules = new validator_rule_manager_1.ValidatorRuleManager();
20
+ this.trackingState = new tracking_state_manager_1.TrackingStateManager();
21
+ const valueType = this.getTypeConstructor(typeof value, value);
22
+ this.registerProperty('internalValue', valueType, value, this.valuePropertyChanged.bind(this));
23
+ this.trackingState.markAsNew();
24
+ this.addValidators();
25
+ this.validate();
26
+ }
27
+ valuePropertyChanged() {
28
+ this.trackingState.markAsDirty();
29
+ this.validate();
30
+ }
31
+ setValue(value) {
32
+ if (value === null || value === undefined) {
33
+ throw new domain_exception_1.ArgumentNullException('value');
34
+ }
35
+ this.setValuePropertyChanged(value, 'internalValue');
36
+ }
37
+ getValue() {
38
+ return this.getValuePropertyChanged('internalValue');
39
+ }
40
+ addValidators() {
41
+ }
42
+ validate() {
43
+ this.brokenRules.clear();
44
+ const brokenRulesArray = this.validatorRules.getBrokenRules();
45
+ if (brokenRulesArray && brokenRulesArray.length > 0) {
46
+ this.brokenRules.addRange(brokenRulesArray);
47
+ }
48
+ }
49
+ getTypeConstructor(typeString, value) {
50
+ const typeMap = {
51
+ string: String,
52
+ number: Number,
53
+ boolean: Boolean,
54
+ symbol: Symbol,
55
+ bigint: BigInt,
56
+ };
57
+ if (typeString in typeMap) {
58
+ return typeMap[typeString];
59
+ }
60
+ if (value?.constructor) {
61
+ return value.constructor;
62
+ }
63
+ return typeString;
64
+ }
65
+ equals(obj) {
66
+ if (obj === null ||
67
+ obj === undefined ||
68
+ Object.getPrototypeOf(this) !== Object.getPrototypeOf(obj)) {
69
+ return false;
70
+ }
71
+ const other = obj;
72
+ const thisComponents = Array.from(this.getEqualityComponents());
73
+ const otherComponents = Array.from(other.getEqualityComponents());
74
+ if (thisComponents.length !== otherComponents.length)
75
+ return false;
76
+ return thisComponents.every((val, index) => val === otherComponents[index]);
77
+ }
78
+ getHashCode() {
79
+ const components = Array.from(this.getEqualityComponents());
80
+ return components.reduce((hash, item) => {
81
+ const itemHash = item ? JSON.stringify(item).length : 0;
82
+ return Math.trunc((hash << 5) - hash + itemHash);
83
+ }, 0);
84
+ }
85
+ getCopy() {
86
+ return Object.assign(Object.create(Object.getPrototypeOf(this)), this);
87
+ }
88
+ clone() {
89
+ return this.getCopy();
90
+ }
91
+ }
92
+ exports.DddValueObject = DddValueObject;
93
+ //# sourceMappingURL=valueobject.js.map
@@ -0,0 +1,16 @@
1
+ import { DddValueObject } from '../valueobject';
2
+ export declare class IdValueObject extends DddValueObject<string> {
3
+ protected constructor(value: string);
4
+ addValidators(): void;
5
+ static create(): IdValueObject;
6
+ static load(value: string): IdValueObject;
7
+ static loadFromString(value: string): IdValueObject;
8
+ protected getEqualityComponents(): Iterable<any>;
9
+ static empty(): IdValueObject;
10
+ static get defaultValue(): IdValueObject;
11
+ isEmpty(): boolean;
12
+ isDefault(): boolean;
13
+ toString(): string;
14
+ toJSON(): string;
15
+ }
16
+ //# sourceMappingURL=id.valueobject.d.ts.map
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.IdValueObject = void 0;
4
+ const uuid_1 = require("uuid");
5
+ const valueobject_1 = require("../valueobject");
6
+ const domain_exception_1 = require("../exceptions/domain.exception");
7
+ class IdValueObject extends valueobject_1.DddValueObject {
8
+ constructor(value) {
9
+ super(value);
10
+ }
11
+ addValidators() {
12
+ super.addValidators();
13
+ }
14
+ static create() {
15
+ return new IdValueObject((0, uuid_1.v4)());
16
+ }
17
+ static load(value) {
18
+ if (value === null || value === undefined) {
19
+ throw new domain_exception_1.ArgumentNullException('value');
20
+ }
21
+ if (!(0, uuid_1.validate)(value)) {
22
+ throw new domain_exception_1.InvalidFormatException('value', 'valid UUID v4', value);
23
+ }
24
+ return new IdValueObject(value);
25
+ }
26
+ static loadFromString(value) {
27
+ return IdValueObject.load(value);
28
+ }
29
+ getEqualityComponents() {
30
+ return [this.getValue()];
31
+ }
32
+ static empty() {
33
+ return new IdValueObject('00000000-0000-0000-0000-000000000000');
34
+ }
35
+ static get defaultValue() {
36
+ return IdValueObject.empty();
37
+ }
38
+ isEmpty() {
39
+ return this.getValue() === '00000000-0000-0000-0000-000000000000';
40
+ }
41
+ isDefault() {
42
+ return this.isEmpty();
43
+ }
44
+ toString() {
45
+ return this.getValue();
46
+ }
47
+ toJSON() {
48
+ return this.getValue();
49
+ }
50
+ }
51
+ exports.IdValueObject = IdValueObject;
52
+ //# sourceMappingURL=id.valueobject.js.map
@@ -0,0 +1,7 @@
1
+ export * from './id.valueobject';
2
+ export * from './string.valueobject';
3
+ export * from './string-notnullorempty.validator';
4
+ export * from './number.valueobject';
5
+ export * from './number-notnull.validator';
6
+ export * from './number-positive.validator';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -14,9 +14,10 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- __exportStar(require("./command.base"), exports);
18
- __exportStar(require("./domain-command-bus"), exports);
19
- __exportStar(require("./default-command-publisher"), exports);
20
- __exportStar(require("../../ddd-decorators/reflect-command.helper"), exports);
21
- __exportStar(require("./command-types"), exports);
17
+ __exportStar(require("./id.valueobject"), exports);
18
+ __exportStar(require("./string.valueobject"), exports);
19
+ __exportStar(require("./string-notnullorempty.validator"), exports);
20
+ __exportStar(require("./number.valueobject"), exports);
21
+ __exportStar(require("./number-notnull.validator"), exports);
22
+ __exportStar(require("./number-positive.validator"), exports);
22
23
  //# sourceMappingURL=index.js.map
@@ -0,0 +1,13 @@
1
+ import { AbstractRuleValidator } from '../core';
2
+ import { DddValueObject } from '../valueobject';
3
+ export declare class NumberNotNullValidator extends AbstractRuleValidator<DddValueObject<number>> {
4
+ private readonly options;
5
+ constructor(subject: DddValueObject<number>, options?: Partial<NumberValidationOptions>);
6
+ addRules(): void;
7
+ }
8
+ export interface NumberValidationOptions {
9
+ allowNaN: boolean;
10
+ allowInfinity: boolean;
11
+ propertyName: string;
12
+ }
13
+ //# sourceMappingURL=number-notnull.validator.d.ts.map
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NumberNotNullValidator = void 0;
4
+ const core_1 = require("../core");
5
+ class NumberNotNullValidator extends core_1.AbstractRuleValidator {
6
+ constructor(subject, options) {
7
+ super(subject);
8
+ this.options = {
9
+ allowNaN: false,
10
+ allowInfinity: false,
11
+ propertyName: 'value',
12
+ ...options,
13
+ };
14
+ }
15
+ addRules() {
16
+ const value = this.subject.getValue();
17
+ const propertyName = this.options.propertyName;
18
+ if (value === null || value === undefined) {
19
+ this.addBrokenRule(propertyName, `${propertyName} cannot be null or undefined`);
20
+ return;
21
+ }
22
+ if (!this.options.allowNaN && Number.isNaN(value)) {
23
+ this.addBrokenRule(propertyName, `${propertyName} cannot be NaN`);
24
+ }
25
+ if (!this.options.allowInfinity && !Number.isFinite(value)) {
26
+ this.addBrokenRule(propertyName, `${propertyName} must be a finite number`);
27
+ }
28
+ }
29
+ }
30
+ exports.NumberNotNullValidator = NumberNotNullValidator;
31
+ //# sourceMappingURL=number-notnull.validator.js.map
@@ -0,0 +1,13 @@
1
+ import { AbstractRuleValidator } from '../core';
2
+ import { DddValueObject } from '../valueobject';
3
+ export declare class NumberPositiveValidator extends AbstractRuleValidator<DddValueObject<number>> {
4
+ private readonly options;
5
+ constructor(subject: DddValueObject<number>, options?: Partial<NumberPositiveValidationOptions>);
6
+ addRules(): void;
7
+ }
8
+ export interface NumberPositiveValidationOptions {
9
+ allowZero: boolean;
10
+ propertyName: string;
11
+ epsilon: number;
12
+ }
13
+ //# sourceMappingURL=number-positive.validator.d.ts.map
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NumberPositiveValidator = void 0;
4
+ const core_1 = require("../core");
5
+ class NumberPositiveValidator extends core_1.AbstractRuleValidator {
6
+ constructor(subject, options) {
7
+ super(subject);
8
+ this.options = {
9
+ allowZero: false,
10
+ propertyName: 'value',
11
+ epsilon: 0,
12
+ ...options,
13
+ };
14
+ }
15
+ addRules() {
16
+ const value = this.subject.getValue();
17
+ const propertyName = this.options.propertyName;
18
+ if (value === null || value === undefined) {
19
+ this.addBrokenRule(propertyName, `${propertyName} cannot be null or undefined`);
20
+ return;
21
+ }
22
+ if (Number.isNaN(value)) {
23
+ this.addBrokenRule(propertyName, `${propertyName} cannot be NaN`);
24
+ return;
25
+ }
26
+ if (!Number.isFinite(value)) {
27
+ this.addBrokenRule(propertyName, `${propertyName} must be a finite number`);
28
+ return;
29
+ }
30
+ if (this.options.allowZero) {
31
+ if (value < -this.options.epsilon) {
32
+ this.addBrokenRule(propertyName, `${propertyName} must be non-negative (greater than or equal to zero)`);
33
+ }
34
+ }
35
+ else {
36
+ if (value <= this.options.epsilon) {
37
+ this.addBrokenRule(propertyName, `${propertyName} must be a positive number (greater than zero)`);
38
+ }
39
+ }
40
+ }
41
+ }
42
+ exports.NumberPositiveValidator = NumberPositiveValidator;
43
+ //# sourceMappingURL=number-positive.validator.js.map
@@ -0,0 +1,25 @@
1
+ import { DddValueObject } from '../valueobject';
2
+ export declare class NumberValueObject extends DddValueObject<number> {
3
+ private readonly options;
4
+ protected constructor(value: number, options?: Partial<NumberValueObjectOptions>);
5
+ static create(value: number, options?: Partial<NumberValueObjectOptions>): NumberValueObject;
6
+ static load(value: number, options?: Partial<NumberValueObjectOptions>): NumberValueObject;
7
+ static zero(options?: Partial<NumberValueObjectOptions>): NumberValueObject;
8
+ static one(options?: Partial<NumberValueObjectOptions>): NumberValueObject;
9
+ isZero(): boolean;
10
+ isPositive(): boolean;
11
+ isNegative(): boolean;
12
+ toNumber(): number;
13
+ toString(): string;
14
+ toJSON(): number;
15
+ protected getEqualityComponents(): Iterable<any>;
16
+ addValidators(): void;
17
+ }
18
+ export interface NumberValueObjectOptions {
19
+ requirePositive: boolean;
20
+ allowZero: boolean;
21
+ allowNaN: boolean;
22
+ allowInfinity: boolean;
23
+ epsilon: number;
24
+ }
25
+ //# sourceMappingURL=number.valueobject.d.ts.map
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.NumberValueObject = void 0;
4
+ const valueobject_1 = require("../valueobject");
5
+ const number_notnull_validator_1 = require("./number-notnull.validator");
6
+ const number_positive_validator_1 = require("./number-positive.validator");
7
+ class NumberValueObject extends valueobject_1.DddValueObject {
8
+ constructor(value, options) {
9
+ super(value);
10
+ this.options = {
11
+ requirePositive: true,
12
+ allowZero: false,
13
+ allowNaN: false,
14
+ allowInfinity: false,
15
+ epsilon: 0,
16
+ ...options,
17
+ };
18
+ }
19
+ static create(value, options) {
20
+ return new NumberValueObject(value, options);
21
+ }
22
+ static load(value, options) {
23
+ return new NumberValueObject(value, options);
24
+ }
25
+ static zero(options) {
26
+ return new NumberValueObject(0, { ...options, allowZero: true });
27
+ }
28
+ static one(options) {
29
+ return new NumberValueObject(1, options);
30
+ }
31
+ isZero() {
32
+ return this.getValue() === 0;
33
+ }
34
+ isPositive() {
35
+ return this.getValue() > 0;
36
+ }
37
+ isNegative() {
38
+ return this.getValue() < 0;
39
+ }
40
+ toNumber() {
41
+ return this.getValue();
42
+ }
43
+ toString() {
44
+ return this.getValue().toString();
45
+ }
46
+ toJSON() {
47
+ return this.getValue();
48
+ }
49
+ getEqualityComponents() {
50
+ return [this.getValue()];
51
+ }
52
+ addValidators() {
53
+ super.addValidators();
54
+ this.validatorRules.add(new number_notnull_validator_1.NumberNotNullValidator(this, {
55
+ allowNaN: this.options.allowNaN,
56
+ allowInfinity: this.options.allowInfinity,
57
+ }));
58
+ if (this.options.requirePositive) {
59
+ this.validatorRules.add(new number_positive_validator_1.NumberPositiveValidator(this, {
60
+ allowZero: this.options.allowZero,
61
+ epsilon: this.options.epsilon,
62
+ }));
63
+ }
64
+ }
65
+ }
66
+ exports.NumberValueObject = NumberValueObject;
67
+ //# sourceMappingURL=number.valueobject.js.map
@@ -0,0 +1,14 @@
1
+ import { AbstractRuleValidator } from '../core';
2
+ import { DddValueObject } from '../valueobject';
3
+ export declare class StringNotNullOrEmptyValidator extends AbstractRuleValidator<DddValueObject<string>> {
4
+ private readonly options;
5
+ constructor(subject: DddValueObject<string>, options?: Partial<StringValidationOptions>);
6
+ addRules(): void;
7
+ }
8
+ export interface StringValidationOptions {
9
+ allowEmpty: boolean;
10
+ trimWhitespace: boolean;
11
+ minLength: number;
12
+ propertyName: string;
13
+ }
14
+ //# sourceMappingURL=string-notnullorempty.validator.d.ts.map
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StringNotNullOrEmptyValidator = void 0;
4
+ const core_1 = require("../core");
5
+ class StringNotNullOrEmptyValidator extends core_1.AbstractRuleValidator {
6
+ constructor(subject, options) {
7
+ super(subject);
8
+ this.options = {
9
+ allowEmpty: false,
10
+ trimWhitespace: false,
11
+ minLength: 0,
12
+ propertyName: 'value',
13
+ ...options,
14
+ };
15
+ }
16
+ addRules() {
17
+ let value = this.subject.getValue();
18
+ const propertyName = this.options.propertyName;
19
+ if (value === null || value === undefined) {
20
+ this.addBrokenRule(propertyName, `${propertyName} cannot be null or undefined`);
21
+ return;
22
+ }
23
+ if (this.options.trimWhitespace) {
24
+ value = value.trim();
25
+ }
26
+ if (!this.options.allowEmpty && value === '') {
27
+ this.addBrokenRule(propertyName, `${propertyName} cannot be empty${this.options.trimWhitespace ? ' or contain only whitespace' : ''}`);
28
+ return;
29
+ }
30
+ if (this.options.minLength > 0 && value.length < this.options.minLength) {
31
+ this.addBrokenRule(propertyName, `${propertyName} must be at least ${this.options.minLength} character${this.options.minLength === 1 ? '' : 's'} long (current length: ${value.length})`);
32
+ }
33
+ }
34
+ }
35
+ exports.StringNotNullOrEmptyValidator = StringNotNullOrEmptyValidator;
36
+ //# sourceMappingURL=string-notnullorempty.validator.js.map
@@ -0,0 +1,27 @@
1
+ import { DddValueObject } from '../valueobject';
2
+ export declare class StringValueObject extends DddValueObject<string> {
3
+ private readonly options;
4
+ protected constructor(value: string, options?: Partial<StringValueObjectOptions>);
5
+ static create(value: string, options?: Partial<StringValueObjectOptions>): StringValueObject;
6
+ static load(value: string, options?: Partial<StringValueObjectOptions>): StringValueObject;
7
+ static empty(options?: Partial<StringValueObjectOptions>): StringValueObject;
8
+ isEmpty(): boolean;
9
+ get length(): number;
10
+ toUpperCase(): string;
11
+ toLowerCase(): string;
12
+ trim(): string;
13
+ contains(substring: string): boolean;
14
+ startsWith(prefix: string): boolean;
15
+ endsWith(suffix: string): boolean;
16
+ toString(): string;
17
+ toJSON(): string;
18
+ protected getEqualityComponents(): Iterable<any>;
19
+ addValidators(): void;
20
+ }
21
+ export interface StringValueObjectOptions {
22
+ allowEmpty: boolean;
23
+ trimWhitespace: boolean;
24
+ minLength: number;
25
+ maxLength: number;
26
+ }
27
+ //# sourceMappingURL=string.valueobject.d.ts.map
@@ -0,0 +1,86 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.StringValueObject = void 0;
4
+ const valueobject_1 = require("../valueobject");
5
+ const string_notnullorempty_validator_1 = require("./string-notnullorempty.validator");
6
+ class StringValueObject extends valueobject_1.DddValueObject {
7
+ constructor(value, options) {
8
+ super(value);
9
+ this.options = {
10
+ allowEmpty: false,
11
+ trimWhitespace: false,
12
+ minLength: 0,
13
+ maxLength: Number.MAX_SAFE_INTEGER,
14
+ ...options,
15
+ };
16
+ }
17
+ static create(value, options) {
18
+ return new StringValueObject(value, options);
19
+ }
20
+ static load(value, options) {
21
+ return new StringValueObject(value, options);
22
+ }
23
+ static empty(options) {
24
+ return new StringValueObject('', { ...options, allowEmpty: true });
25
+ }
26
+ isEmpty() {
27
+ return this.getValue() === '';
28
+ }
29
+ get length() {
30
+ return this.getValue().length;
31
+ }
32
+ toUpperCase() {
33
+ return this.getValue().toUpperCase();
34
+ }
35
+ toLowerCase() {
36
+ return this.getValue().toLowerCase();
37
+ }
38
+ trim() {
39
+ return this.getValue().trim();
40
+ }
41
+ contains(substring) {
42
+ return this.getValue().includes(substring);
43
+ }
44
+ startsWith(prefix) {
45
+ return this.getValue().startsWith(prefix);
46
+ }
47
+ endsWith(suffix) {
48
+ return this.getValue().endsWith(suffix);
49
+ }
50
+ toString() {
51
+ return this.getValue();
52
+ }
53
+ toJSON() {
54
+ return this.getValue();
55
+ }
56
+ getEqualityComponents() {
57
+ return [this.getValue()];
58
+ }
59
+ addValidators() {
60
+ super.addValidators();
61
+ const options = this.options || {
62
+ allowEmpty: false,
63
+ trimWhitespace: false,
64
+ minLength: 0,
65
+ maxLength: Number.MAX_SAFE_INTEGER,
66
+ };
67
+ this.validatorRules.add(new string_notnullorempty_validator_1.StringNotNullOrEmptyValidator(this, {
68
+ allowEmpty: options.allowEmpty,
69
+ trimWhitespace: options.trimWhitespace,
70
+ minLength: options.minLength,
71
+ }));
72
+ if (options.maxLength !== undefined &&
73
+ options.maxLength < Number.MAX_SAFE_INTEGER) {
74
+ const value = this.getValue();
75
+ if (value && value.length > options.maxLength) {
76
+ this.validatorRules.add({
77
+ addRules: () => {
78
+ this.validatorRules['addBrokenRule']('value', `value must not exceed ${options.maxLength} characters (current length: ${value.length})`);
79
+ },
80
+ });
81
+ }
82
+ }
83
+ }
84
+ }
85
+ exports.StringValueObject = StringValueObject;
86
+ //# sourceMappingURL=string.valueobject.js.map