@haskou/value-objects 4.1.0 → 6.0.0

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 (162) hide show
  1. package/README.md +78 -176
  2. package/dist/errors/InvalidPasswordError.d.ts +5 -0
  3. package/dist/errors/InvalidPasswordError.d.ts.map +1 -0
  4. package/dist/errors/InvalidPasswordError.js +11 -0
  5. package/dist/errors/InvalidPasswordError.js.map +1 -0
  6. package/dist/errors/index.d.ts +1 -2
  7. package/dist/errors/index.d.ts.map +1 -1
  8. package/dist/errors/index.js +1 -2
  9. package/dist/errors/index.js.map +1 -1
  10. package/dist/interfaces/PrimitiveOf.d.ts +5 -1
  11. package/dist/interfaces/PrimitiveOf.d.ts.map +1 -1
  12. package/dist/patterns/Assert.d.ts +1 -1
  13. package/dist/patterns/Assert.d.ts.map +1 -1
  14. package/dist/types/Primitive.d.ts +1 -1
  15. package/dist/types/Primitive.d.ts.map +1 -1
  16. package/dist/value-objects/Color.d.ts +1 -1
  17. package/dist/value-objects/Color.d.ts.map +1 -1
  18. package/dist/value-objects/Color.js +5 -2
  19. package/dist/value-objects/Color.js.map +1 -1
  20. package/dist/value-objects/Email.d.ts +1 -0
  21. package/dist/value-objects/Email.d.ts.map +1 -1
  22. package/dist/value-objects/Email.js +2 -1
  23. package/dist/value-objects/Email.js.map +1 -1
  24. package/dist/value-objects/Enum.d.ts +1 -1
  25. package/dist/value-objects/Enum.d.ts.map +1 -1
  26. package/dist/value-objects/Enum.js +1 -1
  27. package/dist/value-objects/Enum.js.map +1 -1
  28. package/dist/value-objects/NumberValueObject.js +1 -1
  29. package/dist/value-objects/NumberValueObject.js.map +1 -1
  30. package/dist/value-objects/Password.d.ts +8 -0
  31. package/dist/value-objects/Password.d.ts.map +1 -0
  32. package/dist/value-objects/Password.js +28 -0
  33. package/dist/value-objects/Password.js.map +1 -0
  34. package/dist/value-objects/UniqueObjectArray.d.ts.map +1 -1
  35. package/dist/value-objects/ValueObject.d.ts +1 -0
  36. package/dist/value-objects/ValueObject.d.ts.map +1 -1
  37. package/dist/value-objects/ValueObject.js +7 -1
  38. package/dist/value-objects/ValueObject.js.map +1 -1
  39. package/dist/value-objects/coordinates/Latitude.d.ts.map +1 -1
  40. package/dist/value-objects/coordinates/Latitude.js +5 -4
  41. package/dist/value-objects/coordinates/Latitude.js.map +1 -1
  42. package/dist/value-objects/coordinates/Longitude.d.ts.map +1 -1
  43. package/dist/value-objects/coordinates/Longitude.js +5 -4
  44. package/dist/value-objects/coordinates/Longitude.js.map +1 -1
  45. package/dist/value-objects/hashes/MD5Hash.d.ts +0 -3
  46. package/dist/value-objects/hashes/MD5Hash.d.ts.map +1 -1
  47. package/dist/value-objects/hashes/MD5Hash.js +0 -4
  48. package/dist/value-objects/hashes/MD5Hash.js.map +1 -1
  49. package/dist/value-objects/hashes/SHA256Hash.d.ts +0 -3
  50. package/dist/value-objects/hashes/SHA256Hash.d.ts.map +1 -1
  51. package/dist/value-objects/hashes/SHA256Hash.js +0 -4
  52. package/dist/value-objects/hashes/SHA256Hash.js.map +1 -1
  53. package/dist/value-objects/hashes/SHA512Hash.d.ts +0 -3
  54. package/dist/value-objects/hashes/SHA512Hash.d.ts.map +1 -1
  55. package/dist/value-objects/hashes/SHA512Hash.js +0 -4
  56. package/dist/value-objects/hashes/SHA512Hash.js.map +1 -1
  57. package/dist/value-objects/ids/ShortId.d.ts +2 -0
  58. package/dist/value-objects/ids/ShortId.d.ts.map +1 -1
  59. package/dist/value-objects/ids/ShortId.js +12 -3
  60. package/dist/value-objects/ids/ShortId.js.map +1 -1
  61. package/dist/value-objects/ids/UUID.d.ts +3 -0
  62. package/dist/value-objects/ids/UUID.d.ts.map +1 -1
  63. package/dist/value-objects/ids/UUID.js +23 -4
  64. package/dist/value-objects/ids/UUID.js.map +1 -1
  65. package/dist/value-objects/index.d.ts +1 -1
  66. package/dist/value-objects/index.d.ts.map +1 -1
  67. package/dist/value-objects/index.js +1 -1
  68. package/dist/value-objects/index.js.map +1 -1
  69. package/dist/value-objects/media/Media.d.ts +2 -0
  70. package/dist/value-objects/media/Media.d.ts.map +1 -1
  71. package/dist/value-objects/media/Media.js +14 -1
  72. package/dist/value-objects/media/Media.js.map +1 -1
  73. package/dist/value-objects/time/CalendarDay.d.ts +2 -1
  74. package/dist/value-objects/time/CalendarDay.d.ts.map +1 -1
  75. package/dist/value-objects/time/CalendarDay.js +25 -11
  76. package/dist/value-objects/time/CalendarDay.js.map +1 -1
  77. package/dist/value-objects/time/DayOfWeek.d.ts.map +1 -1
  78. package/dist/value-objects/time/DayOfWeek.js +2 -3
  79. package/dist/value-objects/time/DayOfWeek.js.map +1 -1
  80. package/dist/value-objects/time/Duration.js +2 -2
  81. package/dist/value-objects/time/Duration.js.map +1 -1
  82. package/dist/value-objects/time/Hour.d.ts +3 -0
  83. package/dist/value-objects/time/Hour.d.ts.map +1 -1
  84. package/dist/value-objects/time/Hour.js +30 -31
  85. package/dist/value-objects/time/Hour.js.map +1 -1
  86. package/dist/value-objects/time/Timestamp.d.ts +3 -1
  87. package/dist/value-objects/time/Timestamp.d.ts.map +1 -1
  88. package/dist/value-objects/time/Timestamp.js +50 -9
  89. package/dist/value-objects/time/Timestamp.js.map +1 -1
  90. package/dist/value-objects/time/TimestampInterval.d.ts +2 -4
  91. package/dist/value-objects/time/TimestampInterval.d.ts.map +1 -1
  92. package/dist/value-objects/time/TimestampInterval.js +0 -10
  93. package/dist/value-objects/time/TimestampInterval.js.map +1 -1
  94. package/package.json +50 -33
  95. package/dist/errors/InvalidKeyError.d.ts +0 -5
  96. package/dist/errors/InvalidKeyError.d.ts.map +0 -1
  97. package/dist/errors/InvalidKeyError.js +0 -11
  98. package/dist/errors/InvalidKeyError.js.map +0 -1
  99. package/dist/errors/InvalidSignatureError.d.ts +0 -5
  100. package/dist/errors/InvalidSignatureError.d.ts.map +0 -1
  101. package/dist/errors/InvalidSignatureError.js +0 -11
  102. package/dist/errors/InvalidSignatureError.js.map +0 -1
  103. package/dist/value-objects/crypto/CryptoAdapter.d.ts +0 -30
  104. package/dist/value-objects/crypto/CryptoAdapter.d.ts.map +0 -1
  105. package/dist/value-objects/crypto/CryptoAdapter.js +0 -96
  106. package/dist/value-objects/crypto/CryptoAdapter.js.map +0 -1
  107. package/dist/value-objects/crypto/CryptoPayload.d.ts +0 -5
  108. package/dist/value-objects/crypto/CryptoPayload.d.ts.map +0 -1
  109. package/dist/value-objects/crypto/CryptoPayload.js +0 -3
  110. package/dist/value-objects/crypto/CryptoPayload.js.map +0 -1
  111. package/dist/value-objects/crypto/EncryptedKeyPair.d.ts +0 -25
  112. package/dist/value-objects/crypto/EncryptedKeyPair.d.ts.map +0 -1
  113. package/dist/value-objects/crypto/EncryptedKeyPair.js +0 -42
  114. package/dist/value-objects/crypto/EncryptedKeyPair.js.map +0 -1
  115. package/dist/value-objects/crypto/EncryptedPayload.d.ts +0 -4
  116. package/dist/value-objects/crypto/EncryptedPayload.d.ts.map +0 -1
  117. package/dist/value-objects/crypto/EncryptedPayload.js +0 -8
  118. package/dist/value-objects/crypto/EncryptedPayload.js.map +0 -1
  119. package/dist/value-objects/crypto/EncryptedPrivateKey.d.ts +0 -11
  120. package/dist/value-objects/crypto/EncryptedPrivateKey.d.ts.map +0 -1
  121. package/dist/value-objects/crypto/EncryptedPrivateKey.js +0 -37
  122. package/dist/value-objects/crypto/EncryptedPrivateKey.js.map +0 -1
  123. package/dist/value-objects/crypto/Key.d.ts +0 -4
  124. package/dist/value-objects/crypto/Key.d.ts.map +0 -1
  125. package/dist/value-objects/crypto/Key.js +0 -8
  126. package/dist/value-objects/crypto/Key.js.map +0 -1
  127. package/dist/value-objects/crypto/KeyPair.d.ts +0 -26
  128. package/dist/value-objects/crypto/KeyPair.d.ts.map +0 -1
  129. package/dist/value-objects/crypto/KeyPair.js +0 -45
  130. package/dist/value-objects/crypto/KeyPair.js.map +0 -1
  131. package/dist/value-objects/crypto/PrivateKey.d.ts +0 -19
  132. package/dist/value-objects/crypto/PrivateKey.d.ts.map +0 -1
  133. package/dist/value-objects/crypto/PrivateKey.js +0 -56
  134. package/dist/value-objects/crypto/PrivateKey.js.map +0 -1
  135. package/dist/value-objects/crypto/PublicKey.d.ts +0 -15
  136. package/dist/value-objects/crypto/PublicKey.d.ts.map +0 -1
  137. package/dist/value-objects/crypto/PublicKey.js +0 -54
  138. package/dist/value-objects/crypto/PublicKey.js.map +0 -1
  139. package/dist/value-objects/crypto/Signature.d.ts +0 -11
  140. package/dist/value-objects/crypto/Signature.d.ts.map +0 -1
  141. package/dist/value-objects/crypto/Signature.js +0 -26
  142. package/dist/value-objects/crypto/Signature.js.map +0 -1
  143. package/dist/value-objects/crypto/encrypted-private-key/CryptoDerivation.d.ts +0 -21
  144. package/dist/value-objects/crypto/encrypted-private-key/CryptoDerivation.d.ts.map +0 -1
  145. package/dist/value-objects/crypto/encrypted-private-key/CryptoDerivation.js +0 -56
  146. package/dist/value-objects/crypto/encrypted-private-key/CryptoDerivation.js.map +0 -1
  147. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.d.ts +0 -14
  148. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.d.ts.map +0 -1
  149. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.js +0 -33
  150. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.js.map +0 -1
  151. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.d.ts +0 -20
  152. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.d.ts.map +0 -1
  153. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.js +0 -69
  154. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.js.map +0 -1
  155. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.d.ts +0 -8
  156. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.d.ts.map +0 -1
  157. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.js +0 -10
  158. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.js.map +0 -1
  159. package/dist/value-objects/crypto/index.d.ts +0 -9
  160. package/dist/value-objects/crypto/index.d.ts.map +0 -1
  161. package/dist/value-objects/crypto/index.js +0 -12
  162. package/dist/value-objects/crypto/index.js.map +0 -1
package/README.md CHANGED
@@ -1,212 +1,114 @@
1
- [![npm version](https://badge.fury.io/js/@haskou%2Fvalue-objects.svg)](https://badge.fury.io/js/@haskou%2Fvalue-objects)
1
+ # @haskou/value-objects
2
2
 
3
- # Value Objects
3
+ [![CI](https://github.com/haskou/value-objects/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/haskou/value-objects/actions/workflows/ci.yml?query=branch%3Amaster)
4
+ [![codecov](https://codecov.io/gh/haskou/value-objects/branch/master/graph/badge.svg)](https://codecov.io/gh/haskou/value-objects)
5
+ [![npm version](https://img.shields.io/npm/v/@haskou/value-objects.svg)](https://www.npmjs.com/package/@haskou/value-objects)
6
+ [![Renovate](https://img.shields.io/badge/renovate-enabled-brightgreen?logo=renovatebot)](https://docs.renovatebot.com/)
7
+ [![license](https://img.shields.io/npm/l/@haskou/value-objects.svg)](LICENSE.txt)
4
8
 
5
- A TypeScript lightweight library for creating safe, immutable,
6
- and validated **Value Objects**. Perfect for applications that require **Domain-Driven Design (DDD)** and **type safety**.
9
+ A TypeScript library for validated, immutable primitive wrappers and small utility value objects.
7
10
 
8
- ## 🚀 Quick Start
11
+ It provides ready-to-use objects for strings, numbers, identifiers, dates, coordinates, hashes, media, and collections. Validation happens when an object is created, so code receiving one of these objects can rely on its shape.
9
12
 
10
- ```bash
11
- npm install @haskou/value-objects
12
- ```
13
+ Cryptographic operations are intentionally outside this package. Pigeon Swarm-specific cryptography lives in `@haskou/pigeon-swarm-crypto`; dependency direction is one-way, with the crypto package allowed to consume generic value-object representations and never the reverse.
13
14
 
14
- ```typescript
15
- import { Email, PositiveNumber, Color, Hour } from 'value-objects';
15
+ ## Documentation
16
16
 
17
- // ✅ Automatic validation on construction
18
- const email = new Email('user@example.com'); // Valid
19
- const price = new PositiveNumber(29.99); // Valid
20
- const color = new Color('#FF0000'); // Valid
21
- const hour = new Hour('09:30'); // Valid
17
+ Full documentation is available at **https://haskou.github.io/value-objects/**.
22
18
 
23
- // ❌ Immediate errors with invalid values
24
- const badEmail = new Email('not-an-email'); // Error!
25
- const badPrice = new PositiveNumber(-5); // Error!
26
- ```
19
+ The documentation includes installation, quick start, examples, error handling, serialization notes, and one reference page per exported class.
27
20
 
28
- ## 🤔 Why use Value Objects?
21
+ Reusable agent instructions and engineering skills are available at **https://github.com/haskou/ddd-engineer-skills**.
29
22
 
30
- **Without Value Objects:**
31
- ```typescript
32
- function createUser(email: string, age: number): void {
33
- // Are they valid? We don't know until runtime
34
- if (!email.includes('@')) throw new Error('Invalid email');
35
- if (age <= 0) throw new Error('Invalid age');
36
- // Creation stuff
37
- }
23
+ ## Installation
24
+
25
+ ```bash
26
+ npm install @haskou/value-objects
38
27
  ```
39
28
 
40
- **With Value Objects:**
41
- ```typescript
42
- function createUser(email: Email, age: PositiveNumber): void {
43
- // If we get here, values ARE valid
44
- // Creation stuff
45
- }
29
+ ```bash
30
+ yarn add @haskou/value-objects
46
31
  ```
47
32
 
48
- This prevents defensive programming and if-else validations
49
- since it implements Null Object pattern (see technical documentation).
50
- Also value-objects can be modified easily keeping the same logic along
51
- your application.
52
-
53
- ## 📦 Available Value Objects
54
-
55
- ### 🔤 Basic
56
- - **`StringValueObject`** - Strings with length validation
57
- - **`NumberValueObject`** - Numbers with math operations
58
- - **`Integer`** - Whole numbers
59
- - **`PositiveNumber`** - Positive numbers (> 0)
60
-
61
- ### 🆔 Identifiers
62
- - **`ShortId`** - MongoDB ObjectId strings (24‑character hex)
63
- - **`UUID`** - Universally Unique Identifier (v4)
64
-
65
- ### ✨ Specialized
66
- - **`Email`** - Email addresses with automatic validation
67
- - **`Color`** - Hex colors (#FF0000)
68
-
69
- ### 🕒 Time
70
- - **`Hour`** - Time in 24h format (09:30)
71
- - **`Year`** - Years with leap year calculations
72
- - **`CalendarDay`** - Calendar days
73
- - **`Day`** - Days of month (1-31)
74
- - **`DayOfWeek`** - Days of the week
75
- - **`Month`** - Months (1-12)
76
- - **`MonthOfYear`** - Month/year combinations
77
- - **`Timestamp`** - Timestamps with operations
78
- - **`TimestampInterval`** - Time intervals
79
- - **`Duration`** - Duration in milliseconds
80
-
81
- ### 🌍 Coordinates
82
- - **`Latitude`** - Latitude (-90 to 90)
83
- - **`Longitude`** - Longitude (-180 to 180)
84
- - **`Coordinates`** - Coordinate pairs
85
-
86
- ### 🔐 Cryptography
87
- - **`KeyPair`** - Ed25519 key pair generation, signing, and verification
88
- - **`PrivateKey`** - Ed25519 private key (PEM format) with signing
89
- - **`PublicKey`** - Ed25519 public key (PEM format) with signature verification
90
- - **`Signature`** - Base64-encoded ed25519 digital signature
91
- - **`EncryptedPrivateKey`** - AES-256-GCM encrypted private key (scrypt-based, password-protected)
92
- - **`EncryptedKeyPair`** - Key pair with encrypted private key
93
-
94
- ### 📎 Media
95
- - **`Media`** - Binary/string content with Buffer, size, and Base64 helpers
96
-
97
- ### #️ Hashes
98
- - **`MD5Hash`** - MD5 hashes with helpers
99
- - **`SHA256Hash`** - SHA‑256 hashes with helpers
100
- - **`SHA512Hash`** - SHA‑512 hashes with helpers
101
-
102
- ### 📝 Other
103
- - **`Enum`** - Base class for typed enumerations
104
- - **`UniqueObjectArray`** - Iterable collection that keeps comparable items unique
105
-
106
- ## 💡 Basic Examples
33
+ ## Quick start
107
34
 
108
35
  ```typescript
109
- // Validated strings
110
- const name = new StringValueObject('John Doe');
111
- const code = new StringValueObject('ABC', 3); // max 3 characters
112
-
113
- // Numbers with operations
114
- const price = new NumberValueObject(29.99);
115
- const discount = new NumberValueObject(5.00);
116
- const total = price.subtract(discount); // 24.99
36
+ import { Color, Email, Hour, PositiveNumber } from '@haskou/value-objects';
117
37
 
118
- // Emails
119
38
  const email = new Email('user@example.com');
120
- console.log(email.getDomain()); // 'example.com'
39
+ const price = new PositiveNumber(29.99);
40
+ const color = new Color('#FF0000');
41
+ const hour = new Hour('09:30');
121
42
 
122
- // Colors
123
- const red = new Color('#FF0000');
124
- const blue = Color.BLUE; // Predefined color
43
+ console.log(email.valueOf()); // 'user@example.com'
44
+ console.log(price.valueOf()); // 29.99
45
+ console.log(color.toString()); // '#FF0000'
46
+ console.log(hour.addMinutes(45).toString()); // '10:15'
47
+ ```
125
48
 
126
- // Coordinates
127
- const latitude = new Latitude(40.7128); // New York
128
- const longitude = new Longitude(-74.0060);
129
- const coords = new Coordinates(latitude, longitude);
49
+ Invalid values throw specific errors.
130
50
 
131
- // Time
132
- const hour = new Hour('09:30');
133
- const year = new Year(2024);
134
- console.log(year.isLeapYear()); // true
135
-
136
- // IDs
137
- const id = ShortId.generate(); // 69ad70897364ee0d1406b1d0
138
- const uuid = UUID.generate(); // 3fd4c04a-8e73-4e10-aef3-f491b32ec538
139
-
140
- // Hashes
141
- const md5 = MD5Hash.from('hello'); // 5d41402abc4b2a76b9719d911017c592
142
- const sha256 = SHA256Hash.from('hello'); // 2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824
143
- const sha512 = SHA512Hash.from('hello'); // 9b71d224bd62f3785d96d46ad3ea3d73319bfbc2890caadae2dff72519673ca72323c3d99ba5c11d7c7acc6e14b8c5da0c4663475c2e5c3adef46f73bcdec043
144
- console.log(md5.toBase64());
145
-
146
- // Crypto
147
- const keyPair = KeyPair.generate(); // Ed25519 key pair
148
- const signature = keyPair.sign('hello world'); // Sign a message
149
- keyPair.isValidSignature('hello world', signature); // true
150
-
151
- // Encrypted key pairs
152
- const encrypted = await keyPair.encryptKeyPair('my-password');
153
- const sig = encrypted.sign('message', 'my-password');
154
- encrypted.isValidSignature('message', sig); // true
155
-
156
- // Media
157
- const media = new Media('hello world');
158
- console.log(media.getSize()); // 11
159
- console.log(media.getBase64()); // 'aGVsbG8gd29ybGQ='
160
- console.log(media.getBuffer()); // <Buffer 68 65 6c 6c 6f ...>
161
-
162
- // Unique collections
163
- const weekdays = UniqueObjectArray.fromArray([
164
- DayOfWeek.MONDAY,
165
- DayOfWeek.TUESDAY,
166
- DayOfWeek.MONDAY,
167
- ]);
168
- console.log(weekdays.length()); // 2
169
- console.log(weekdays.toArray().map((day) => day.toString())); // ['monday', 'tuesday']
51
+ ```typescript
52
+ import { Email, InvalidEmailError } from '@haskou/value-objects';
53
+
54
+ try {
55
+ new Email('not-an-email');
56
+ } catch (error) {
57
+ if (error instanceof InvalidEmailError) {
58
+ console.error('Invalid email');
59
+ }
60
+ }
170
61
  ```
171
62
 
172
- ## 📚 Technical Documentation
173
-
174
- Need more details? Check the complete documentation:
63
+ ## Available categories
175
64
 
176
- **[📖 TECHNICAL_DOCUMENTATION.md](./TECHNICAL_DOCUMENTATION.md)**
65
+ | Category | Examples |
66
+ | --- | --- |
67
+ | Base | `ValueObject`, `NullObject`, `Enum` |
68
+ | Strings | `StringValueObject`, `Password`, `Email`, `Color` |
69
+ | Numbers | `NumberValueObject`, `Integer`, `PositiveNumber` |
70
+ | IDs | `ShortId`, `UUID` |
71
+ | Time | `Timestamp`, `CalendarDay`, `Hour`, `Duration`, `MonthOfYear` |
72
+ | Coordinates | `Latitude`, `Longitude`, `Coordinates` |
73
+ | Hashes | `MD5Hash`, `SHA256Hash`, `SHA512Hash` |
74
+ | Media | `Media` |
75
+ | Collections | `UniqueObjectArray` |
177
76
 
178
- Includes:
179
- - ✅ Complete API for all Value Objects
180
- - ✅ Advanced usage examples
181
- - ✅ Error handling
182
- - ✅ Design principles (immutability, null safety, etc.)
183
- - ✅ Composition and extensibility patterns
77
+ See the complete API reference in the documentation: https://haskou.github.io/value-objects/reference/
184
78
 
185
- ## 🛠️ Development
79
+ ## Documentation development
186
80
 
187
81
  ```bash
188
- # Install dependencies
189
- npm install
82
+ # Start local docs server
83
+ yarn docs:dev
84
+
85
+ # Build static documentation
86
+ yarn docs:build
190
87
 
191
- # Run tests
192
- npm test
88
+ # Preview the built site
89
+ yarn docs:preview
90
+ ```
91
+
92
+ ## Package development
193
93
 
194
- # Build
195
- npm run build
94
+ ```bash
95
+ yarn install
96
+ yarn test
97
+ yarn build
196
98
  ```
197
99
 
198
- ## 🤝 Contributing
100
+ ## Release branches
199
101
 
200
- 1. Fork the repository
201
- 2. Create a branch: `git checkout -b my-feature`
202
- 3. Make your changes and add tests
203
- 4. Run tests: `npm test`
204
- 5. Submit a pull request
102
+ Publishing is handled by CI when a pull request is merged into the default branch.
205
103
 
206
- ## 📄 License
104
+ | Branch prefix | npm bump |
105
+ | --- | --- |
106
+ | `fix/*` | Patch |
107
+ | `feat/*` | Minor |
108
+ | `break/*` | Major |
207
109
 
208
- MIT License - see the [LICENSE](LICENSE.txt) file for details.
110
+ Branches without one of these prefixes still run CI, but they do not publish to npm.
209
111
 
210
- ---
112
+ ## License
211
113
 
212
- **Made with ❤️ and TypeScript**
114
+ MIT. See [LICENSE.txt](LICENSE.txt).
@@ -0,0 +1,5 @@
1
+ import { DomainError } from './DomainError';
2
+ export declare class InvalidPasswordError extends DomainError {
3
+ constructor(minLength: number, maxLength: number);
4
+ }
5
+ //# sourceMappingURL=InvalidPasswordError.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvalidPasswordError.d.ts","sourceRoot":"","sources":["../../src/errors/InvalidPasswordError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,oBAAqB,SAAQ,WAAW;gBACvC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM;CAKjD"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InvalidPasswordError = void 0;
4
+ const DomainError_1 = require("./DomainError");
5
+ class InvalidPasswordError extends DomainError_1.DomainError {
6
+ constructor(minLength, maxLength) {
7
+ super(`Password must be between ${minLength} and ${maxLength} characters long and include at least one uppercase letter, one lowercase letter, one number and one symbol.`);
8
+ }
9
+ }
10
+ exports.InvalidPasswordError = InvalidPasswordError;
11
+ //# sourceMappingURL=InvalidPasswordError.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InvalidPasswordError.js","sourceRoot":"","sources":["../../src/errors/InvalidPasswordError.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AAE5C,MAAa,oBAAqB,SAAQ,yBAAW;IACnD,YAAY,SAAiB,EAAE,SAAiB;QAC9C,KAAK,CACH,4BAA4B,SAAS,QAAQ,SAAS,8GAA8G,CACrK,CAAC;IACJ,CAAC;CACF;AAND,oDAMC"}
@@ -13,12 +13,11 @@ export * from './InvalidLongitudeError';
13
13
  export * from './InvalidEmailError';
14
14
  export * from './InvalidMinutesError';
15
15
  export * from './InvalidNumberError';
16
+ export * from './InvalidPasswordError';
16
17
  export * from './InvalidPositiveNumberError';
17
18
  export * from './InvalidStringLengthError';
18
19
  export * from './InvalidTimestampIntervalError';
19
- export * from './InvalidKeyError';
20
20
  export * from './InvalidLengthError';
21
- export * from './InvalidSignatureError';
22
21
  export * from './NullObjectError';
23
22
  export * from './ValueNotInEnumError';
24
23
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,mBAAmB,CAAC;AAClC,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,qBAAqB,CAAC;AACpC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,qBAAqB,CAAC;AACpC,cAAc,uBAAuB,CAAC;AACtC,cAAc,sBAAsB,CAAC;AACrC,cAAc,wBAAwB,CAAC;AACvC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,iCAAiC,CAAC;AAChD,cAAc,sBAAsB,CAAC;AACrC,cAAc,mBAAmB,CAAC;AAClC,cAAc,uBAAuB,CAAC"}
@@ -16,12 +16,11 @@ tslib_1.__exportStar(require("./InvalidLongitudeError"), exports);
16
16
  tslib_1.__exportStar(require("./InvalidEmailError"), exports);
17
17
  tslib_1.__exportStar(require("./InvalidMinutesError"), exports);
18
18
  tslib_1.__exportStar(require("./InvalidNumberError"), exports);
19
+ tslib_1.__exportStar(require("./InvalidPasswordError"), exports);
19
20
  tslib_1.__exportStar(require("./InvalidPositiveNumberError"), exports);
20
21
  tslib_1.__exportStar(require("./InvalidStringLengthError"), exports);
21
22
  tslib_1.__exportStar(require("./InvalidTimestampIntervalError"), exports);
22
- tslib_1.__exportStar(require("./InvalidKeyError"), exports);
23
23
  tslib_1.__exportStar(require("./InvalidLengthError"), exports);
24
- tslib_1.__exportStar(require("./InvalidSignatureError"), exports);
25
24
  tslib_1.__exportStar(require("./NullObjectError"), exports);
26
25
  tslib_1.__exportStar(require("./ValueNotInEnumError"), exports);
27
26
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,wDAA8B;AAC9B,8DAAoC;AACpC,4DAAkC;AAClC,kEAAwC;AACxC,6DAAmC;AACnC,8DAAoC;AACpC,+DAAqC;AACrC,6DAAmC;AACnC,gEAAsC;AACtC,iEAAuC;AACvC,kEAAwC;AACxC,8DAAoC;AACpC,gEAAsC;AACtC,+DAAqC;AACrC,uEAA6C;AAC7C,qEAA2C;AAC3C,0EAAgD;AAChD,4DAAkC;AAClC,+DAAqC;AACrC,kEAAwC;AACxC,4DAAkC;AAClC,gEAAsC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/errors/index.ts"],"names":[],"mappings":";;;AAAA,sDAA4B;AAC5B,wDAA8B;AAC9B,8DAAoC;AACpC,4DAAkC;AAClC,kEAAwC;AACxC,6DAAmC;AACnC,8DAAoC;AACpC,+DAAqC;AACrC,6DAAmC;AACnC,gEAAsC;AACtC,iEAAuC;AACvC,kEAAwC;AACxC,8DAAoC;AACpC,gEAAsC;AACtC,+DAAqC;AACrC,iEAAuC;AACvC,uEAA6C;AAC7C,qEAA2C;AAC3C,0EAAgD;AAChD,+DAAqC;AACrC,4DAAkC;AAClC,gEAAsC"}
@@ -1,5 +1,9 @@
1
1
  import { Primitive } from '../types/Primitive';
2
+ type SerializedValue = Primitive | SerializedValue[] | {
3
+ [key: string]: SerializedValue;
4
+ };
2
5
  export type PrimitiveOf<T extends {
3
- toPrimitives(): Primitive | Record<string, Primitive>;
6
+ toPrimitives(): SerializedValue;
4
7
  }> = ReturnType<T['toPrimitives']>;
8
+ export {};
5
9
  //# sourceMappingURL=PrimitiveOf.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PrimitiveOf.d.ts","sourceRoot":"","sources":["../../src/interfaces/PrimitiveOf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,MAAM,WAAW,CACrB,CAAC,SAAS;IAAE,YAAY,IAAI,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;CAAE,IACjE,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"PrimitiveOf.d.ts","sourceRoot":"","sources":["../../src/interfaces/PrimitiveOf.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,KAAK,eAAe,GAChB,SAAS,GACT,eAAe,EAAE,GACjB;IACE,CAAC,GAAG,EAAE,MAAM,GAAG,eAAe,CAAC;CAChC,CAAC;AAEN,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS;IAAE,YAAY,IAAI,eAAe,CAAA;CAAE,IACnE,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { BaseError } from '../errors/BaseError';
2
2
  import { DomainError } from '../errors/DomainError';
3
3
  export type Errors = Error | BaseError | DomainError | string;
4
- export declare function assert(condition: boolean | unknown | undefined, error: string | Errors): void;
4
+ export declare function assert(condition: boolean | unknown | undefined, error: string | Errors): asserts condition;
5
5
  //# sourceMappingURL=Assert.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Assert.d.ts","sourceRoot":"","sources":["../../src/patterns/Assert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;AAE9D,wBAAgB,MAAM,CACpB,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,EACxC,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,IAAI,CAMN"}
1
+ {"version":3,"file":"Assert.d.ts","sourceRoot":"","sources":["../../src/patterns/Assert.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEpD,MAAM,MAAM,MAAM,GAAG,KAAK,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;AAE9D,wBAAgB,MAAM,CACpB,SAAS,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,EACxC,KAAK,EAAE,MAAM,GAAG,MAAM,GACrB,OAAO,CAAC,SAAS,CAMnB"}
@@ -1,2 +1,2 @@
1
- export type Primitive = string | number | boolean | bigint | symbol | Record<string, unknown> | Array<unknown> | null | undefined;
1
+ export type Primitive = string | number | boolean | bigint | symbol | null | undefined;
2
2
  //# sourceMappingURL=Primitive.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Primitive.d.ts","sourceRoot":"","sources":["../../src/types/Primitive.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,MAAM,GACN,MAAM,GACN,OAAO,GACP,MAAM,GACN,MAAM,GACN,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACvB,KAAK,CAAC,OAAO,CAAC,GACd,IAAI,GACJ,SAAS,CAAC"}
1
+ {"version":3,"file":"Primitive.d.ts","sourceRoot":"","sources":["../../src/types/Primitive.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACnB,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC"}
@@ -14,6 +14,6 @@ export declare class Color extends StringValueObject {
14
14
  static readonly BROWN: Color;
15
15
  constructor(value: string | StringValueObject);
16
16
  private ensureIsValidColor;
17
- isEqual(other: Color): boolean;
17
+ hasValue(other: unknown): boolean;
18
18
  }
19
19
  //# sourceMappingURL=Color.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Color.d.ts","sourceRoot":"","sources":["../../src/value-objects/Color.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBAAa,KAAM,SAAQ,iBAAiB;IAC1C,gBAAuB,GAAG,QAAwB;IAClD,gBAAuB,KAAK,QAAwB;IACpD,gBAAuB,IAAI,QAAwB;IACnD,gBAAuB,KAAK,QAAwB;IACpD,gBAAuB,KAAK,QAAwB;IACpD,gBAAuB,MAAM,QAAwB;IACrD,gBAAuB,IAAI,QAAwB;IACnD,gBAAuB,OAAO,QAAwB;IACtD,gBAAuB,MAAM,QAAwB;IACrD,gBAAuB,MAAM,QAAwB;IACrD,gBAAuB,IAAI,QAAwB;IACnD,gBAAuB,KAAK,QAAwB;gBAExC,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAU7C,OAAO,CAAC,kBAAkB;IAMnB,OAAO,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;CAGtC"}
1
+ {"version":3,"file":"Color.d.ts","sourceRoot":"","sources":["../../src/value-objects/Color.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAGxD,qBAAa,KAAM,SAAQ,iBAAiB;IAC1C,gBAAuB,GAAG,QAAwB;IAClD,gBAAuB,KAAK,QAAwB;IACpD,gBAAuB,IAAI,QAAwB;IACnD,gBAAuB,KAAK,QAAwB;IACpD,gBAAuB,KAAK,QAAwB;IACpD,gBAAuB,MAAM,QAAwB;IACrD,gBAAuB,IAAI,QAAwB;IACnD,gBAAuB,OAAO,QAAwB;IACtD,gBAAuB,MAAM,QAAwB;IACrD,gBAAuB,MAAM,QAAwB;IACrD,gBAAuB,IAAI,QAAwB;IACnD,gBAAuB,KAAK,QAAwB;gBAExC,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAU7C,OAAO,CAAC,kBAAkB;IAMnB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;CAQzC"}
@@ -5,6 +5,7 @@ const InvalidColorError_1 = require("../errors/InvalidColorError");
5
5
  const Assert_1 = require("../patterns/Assert");
6
6
  const NullObject_1 = require("./NullObject");
7
7
  const StringValueObject_1 = require("./StringValueObject");
8
+ const ValueObject_1 = require("./ValueObject");
8
9
  class Color extends StringValueObject_1.StringValueObject {
9
10
  static RED = new Color('#FF0000');
10
11
  static GREEN = new Color('#00FF00');
@@ -29,8 +30,10 @@ class Color extends StringValueObject_1.StringValueObject {
29
30
  const hexColorPattern = /^#([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6})$/;
30
31
  (0, Assert_1.assert)(hexColorPattern.test(this.value), new InvalidColorError_1.InvalidColorError(this.value));
31
32
  }
32
- isEqual(other) {
33
- return this.value.toLowerCase() === other?.toString().toLowerCase();
33
+ hasValue(other) {
34
+ const otherValue = other instanceof ValueObject_1.ValueObject ? other.valueOf() : other;
35
+ return (typeof otherValue === 'string' &&
36
+ this.value.toLowerCase() === otherValue.toLowerCase());
34
37
  }
35
38
  }
36
39
  exports.Color = Color;
@@ -1 +1 @@
1
- {"version":3,"file":"Color.js","sourceRoot":"","sources":["../../src/value-objects/Color.ts"],"names":[],"mappings":";;;AAAA,mEAAgE;AAChE,+CAA4C;AAC5C,6CAA0C;AAC1C,2DAAwD;AAExD,MAAa,KAAM,SAAQ,qCAAiB;IACnC,MAAM,CAAU,GAAG,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,CAAU,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAU,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,CAAU,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAU,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAU,MAAM,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,CAAU,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,CAAU,OAAO,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,CAAU,MAAM,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,CAAU,MAAM,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,CAAU,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,CAAU,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAEpD,YAAY,KAAiC;QAC3C,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAExB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAEO,kBAAkB;QACxB,MAAM,eAAe,GAAG,oCAAoC,CAAC;QAE7D,IAAA,eAAM,EAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,qCAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9E,CAAC;IAEM,OAAO,CAAC,KAAY;QACzB,OAAO,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,EAAE,QAAQ,EAAE,CAAC,WAAW,EAAE,CAAC;IACtE,CAAC;;AAhCH,sBAiCC"}
1
+ {"version":3,"file":"Color.js","sourceRoot":"","sources":["../../src/value-objects/Color.ts"],"names":[],"mappings":";;;AAAA,mEAAgE;AAChE,+CAA4C;AAC5C,6CAA0C;AAC1C,2DAAwD;AACxD,+CAA4C;AAE5C,MAAa,KAAM,SAAQ,qCAAiB;IACnC,MAAM,CAAU,GAAG,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3C,MAAM,CAAU,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAU,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,CAAU,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAU,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7C,MAAM,CAAU,MAAM,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,CAAU,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,CAAU,OAAO,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC/C,MAAM,CAAU,MAAM,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,CAAU,MAAM,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC9C,MAAM,CAAU,IAAI,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,CAAU,KAAK,GAAG,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC;IAEpD,YAAY,KAAiC;QAC3C,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAExB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAEO,kBAAkB;QACxB,MAAM,eAAe,GAAG,oCAAoC,CAAC;QAE7D,IAAA,eAAM,EAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,qCAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9E,CAAC;IAEM,QAAQ,CAAC,KAAc;QAC5B,MAAM,UAAU,GAAG,KAAK,YAAY,yBAAW,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QAE1E,OAAO,CACL,OAAO,UAAU,KAAK,QAAQ;YAC9B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,UAAU,CAAC,WAAW,EAAE,CACtD,CAAC;IACJ,CAAC;;AArCH,sBAsCC"}
@@ -1,5 +1,6 @@
1
1
  import { StringValueObject } from './StringValueObject';
2
2
  export declare class Email extends StringValueObject {
3
+ private static readonly PATTERN;
3
4
  constructor(value: string | StringValueObject);
4
5
  private ensureIsValidEmail;
5
6
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Email.d.ts","sourceRoot":"","sources":["../../src/value-objects/Email.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBAAa,KAAM,SAAQ,iBAAiB;gBAC9B,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAU7C,OAAO,CAAC,kBAAkB;CAM3B"}
1
+ {"version":3,"file":"Email.d.ts","sourceRoot":"","sources":["../../src/value-objects/Email.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBAAa,KAAM,SAAQ,iBAAiB;IAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CACwE;gBAE3F,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAU7C,OAAO,CAAC,kBAAkB;CAG3B"}
@@ -6,6 +6,7 @@ const Assert_1 = require("../patterns/Assert");
6
6
  const NullObject_1 = require("./NullObject");
7
7
  const StringValueObject_1 = require("./StringValueObject");
8
8
  class Email extends StringValueObject_1.StringValueObject {
9
+ static PATTERN = /^[\w+\-.!#$%&'*/=?^`{|}~]+@(?:[\w-]+\.)+(?:[a-z]{2,63}|xn--[a-z0-9](?:[a-z0-9-]{0,57}[a-z0-9])?)$/i;
9
10
  constructor(value) {
10
11
  super(value?.valueOf());
11
12
  if (NullObject_1.NullObject.isNullObject(this)) {
@@ -14,7 +15,7 @@ class Email extends StringValueObject_1.StringValueObject {
14
15
  this.ensureIsValidEmail(this.value);
15
16
  }
16
17
  ensureIsValidEmail(value) {
17
- (0, Assert_1.assert)(new RegExp(/^[\w+\-.]+@(?:[\w-]+\.)+[a-zA-Z]{2,13}$/).test(value), new InvalidEmailError_1.InvalidEmailError(value));
18
+ (0, Assert_1.assert)(Email.PATTERN.test(value), new InvalidEmailError_1.InvalidEmailError(value));
18
19
  }
19
20
  }
20
21
  exports.Email = Email;
@@ -1 +1 @@
1
- {"version":3,"file":"Email.js","sourceRoot":"","sources":["../../src/value-objects/Email.ts"],"names":[],"mappings":";;;AAAA,mEAAgE;AAChE,+CAA4C;AAC5C,6CAA0C;AAC1C,2DAAwD;AAExD,MAAa,KAAM,SAAQ,qCAAiB;IAC1C,YAAY,KAAiC;QAC3C,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAExB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAEO,kBAAkB,CAAC,KAAa;QACtC,IAAA,eAAM,EACJ,IAAI,MAAM,CAAC,yCAAyC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EACjE,IAAI,qCAAiB,CAAC,KAAK,CAAC,CAC7B,CAAC;IACJ,CAAC;CACF;AAjBD,sBAiBC"}
1
+ {"version":3,"file":"Email.js","sourceRoot":"","sources":["../../src/value-objects/Email.ts"],"names":[],"mappings":";;;AAAA,mEAAgE;AAChE,+CAA4C;AAC5C,6CAA0C;AAC1C,2DAAwD;AAExD,MAAa,KAAM,SAAQ,qCAAiB;IAClC,MAAM,CAAU,OAAO,GAC7B,oGAAoG,CAAC;IAEvG,YAAY,KAAiC;QAC3C,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAExB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;IAEO,kBAAkB,CAAC,KAAa;QACtC,IAAA,eAAM,EAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,qCAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;IAClE,CAAC;;AAhBH,sBAiBC"}
@@ -3,7 +3,7 @@ import { ValueObject } from './ValueObject';
3
3
  export declare abstract class Enum<T extends Primitive = Primitive> extends ValueObject<T> {
4
4
  protected readonly value: T;
5
5
  constructor(value: T);
6
- private ensureIsValidValue;
7
6
  abstract getValues(): T[];
7
+ private ensureIsValidValue;
8
8
  }
9
9
  //# sourceMappingURL=Enum.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Enum.d.ts","sourceRoot":"","sources":["../../src/value-objects/Enum.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,8BAAsB,IAAI,CACxB,CAAC,SAAS,SAAS,GAAG,SAAS,CAC/B,SAAQ,WAAW,CAAC,CAAC,CAAC;IACV,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAAR,KAAK,EAAE,CAAC;IAUvC,OAAO,CAAC,kBAAkB;aAUV,SAAS,IAAI,CAAC,EAAE;CACjC"}
1
+ {"version":3,"file":"Enum.d.ts","sourceRoot":"","sources":["../../src/value-objects/Enum.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,8BAAsB,IAAI,CACxB,CAAC,SAAS,SAAS,GAAG,SAAS,CAC/B,SAAQ,WAAW,CAAC,CAAC,CAAC;IACV,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;gBAAR,KAAK,EAAE,CAAC;aAUvB,SAAS,IAAI,CAAC,EAAE;IAEhC,OAAO,CAAC,kBAAkB;CAS3B"}
@@ -16,7 +16,7 @@ class Enum extends ValueObject_1.ValueObject {
16
16
  this.ensureIsValidValue();
17
17
  }
18
18
  ensureIsValidValue() {
19
- const isValueInEnum = this.getValues().some((enumValue) => this.isEqual(enumValue));
19
+ const isValueInEnum = this.getValues().some((enumValue) => this.hasValue(enumValue));
20
20
  (0, Assert_1.assert)(isValueInEnum, new ValueNotInEnumError_1.ValueNotInEnumError(this.valueOf(), this.getValues()));
21
21
  }
22
22
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Enum.js","sourceRoot":"","sources":["../../src/value-objects/Enum.ts"],"names":[],"mappings":";;;AAAA,uEAAoE;AACpE,+CAA4C;AAE5C,6CAA0C;AAC1C,+CAA4C;AAE5C,MAAsB,IAEpB,SAAQ,yBAAc;IACS;IAA/B,YAA+B,KAAQ;QACrC,KAAK,CAAC,KAAK,CAAC,CAAC;QADgB,UAAK,GAAL,KAAK,CAAG;QAGrC,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAEO,kBAAkB;QACxB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CACxD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CACxB,CAAC;QACF,IAAA,eAAM,EACJ,aAAa,EACb,IAAI,yCAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAC1D,CAAC;IACJ,CAAC;CAGF;AAxBD,oBAwBC"}
1
+ {"version":3,"file":"Enum.js","sourceRoot":"","sources":["../../src/value-objects/Enum.ts"],"names":[],"mappings":";;;AAAA,uEAAoE;AACpE,+CAA4C;AAE5C,6CAA0C;AAC1C,+CAA4C;AAE5C,MAAsB,IAEpB,SAAQ,yBAAc;IACS;IAA/B,YAA+B,KAAQ;QACrC,KAAK,CAAC,KAAK,CAAC,CAAC;QADgB,UAAK,GAAL,KAAK,CAAG;QAGrC,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAIO,kBAAkB;QACxB,MAAM,aAAa,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE,CACxD,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CACzB,CAAC;QACF,IAAA,eAAM,EACJ,aAAa,EACb,IAAI,yCAAmB,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,IAAI,CAAC,SAAS,EAAE,CAAC,CAC1D,CAAC;IACJ,CAAC;CACF;AAxBD,oBAwBC"}
@@ -14,7 +14,7 @@ class NumberValueObject extends ValueObject_1.ValueObject {
14
14
  (0, Assert_1.assert)(this.isValidNumber(this.value), new InvalidNumberError_1.InvalidNumberError(this.value));
15
15
  }
16
16
  isValidNumber(value) {
17
- return !isNaN(value.valueOf());
17
+ return Number.isFinite(value.valueOf());
18
18
  }
19
19
  isZero() {
20
20
  return this.value === 0;
@@ -1 +1 @@
1
- {"version":3,"file":"NumberValueObject.js","sourceRoot":"","sources":["../../src/value-objects/NumberValueObject.ts"],"names":[],"mappings":";;;AAAA,qEAAkE;AAClE,+CAA4C;AAC5C,6CAA0C;AAC1C,+CAA4C;AAE5C,MAAa,iBAAkB,SAAQ,yBAAmB;IACxD,YAAY,KAAiC;QAC3C,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAExB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAA,eAAM,EAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,uCAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,CAAC;IAEO,aAAa,CAAC,KAAa;QACjC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACjC,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;IAC1B,CAAC;IAEM,aAAa,CAAC,KAAiC;QACpD,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC;IAEM,oBAAoB,CAAC,KAAiC;QAC3D,OAAO,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IACvC,CAAC;IAEM,UAAU,CAAC,KAAiC;QACjD,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC;IAEM,iBAAiB,CAAC,KAAiC;QACxD,OAAO,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IACvC,CAAC;IAEM,GAAG,CAAC,KAAiC;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;IAEM,QAAQ,CAAC,KAAiC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;IAEM,QAAQ,CAAC,KAAiC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;IAEM,MAAM,CAAC,KAAiC;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;CACF;AAlDD,8CAkDC"}
1
+ {"version":3,"file":"NumberValueObject.js","sourceRoot":"","sources":["../../src/value-objects/NumberValueObject.ts"],"names":[],"mappings":";;;AAAA,qEAAkE;AAClE,+CAA4C;AAC5C,6CAA0C;AAC1C,+CAA4C;AAE5C,MAAa,iBAAkB,SAAQ,yBAAmB;IACxD,YAAY,KAAiC;QAC3C,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;QAExB,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAA,eAAM,EAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,uCAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,CAAC;IAEO,aAAa,CAAC,KAAa;QACjC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC1C,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,KAAK,KAAK,CAAC,CAAC;IAC1B,CAAC;IAEM,aAAa,CAAC,KAAiC;QACpD,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC;IAEM,oBAAoB,CAAC,KAAiC;QAC3D,OAAO,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IACvC,CAAC;IAEM,UAAU,CAAC,KAAiC;QACjD,OAAO,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC;IAEM,iBAAiB,CAAC,KAAiC;QACxD,OAAO,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;IACvC,CAAC;IAEM,GAAG,CAAC,KAAiC;QAC1C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;IAEM,QAAQ,CAAC,KAAiC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;IAEM,QAAQ,CAAC,KAAiC;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;IAEM,MAAM,CAAC,KAAiC;QAC7C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAClD,CAAC;CACF;AAlDD,8CAkDC"}
@@ -0,0 +1,8 @@
1
+ import { StringValueObject } from './StringValueObject';
2
+ export declare class Password extends StringValueObject {
3
+ private static readonly MAX_LENGTH;
4
+ private static readonly MIN_LENGTH;
5
+ constructor(value: string | StringValueObject);
6
+ private isValidPassword;
7
+ }
8
+ //# sourceMappingURL=Password.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Password.d.ts","sourceRoot":"","sources":["../../src/value-objects/Password.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD,qBAAa,QAAS,SAAQ,iBAAiB;IAC7C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAO;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;gBAE5B,KAAK,EAAE,MAAM,GAAG,iBAAiB;IAa7C,OAAO,CAAC,eAAe;CAUxB"}
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Password = void 0;
4
+ const InvalidPasswordError_1 = require("../errors/InvalidPasswordError");
5
+ const patterns_1 = require("../patterns");
6
+ const NullObject_1 = require("./NullObject");
7
+ const StringValueObject_1 = require("./StringValueObject");
8
+ class Password extends StringValueObject_1.StringValueObject {
9
+ static MAX_LENGTH = 256;
10
+ static MIN_LENGTH = 12;
11
+ constructor(value) {
12
+ super(value);
13
+ if (NullObject_1.NullObject.isNullObject(this)) {
14
+ return this;
15
+ }
16
+ (0, patterns_1.assert)(this.isValidPassword(), new InvalidPasswordError_1.InvalidPasswordError(Password.MIN_LENGTH, Password.MAX_LENGTH));
17
+ }
18
+ isValidPassword() {
19
+ return (this.value.length >= Password.MIN_LENGTH &&
20
+ this.value.length <= Password.MAX_LENGTH &&
21
+ /[A-Z]/.test(this.value) &&
22
+ /[a-z]/.test(this.value) &&
23
+ /[0-9]/.test(this.value) &&
24
+ /[^A-Za-z0-9]/.test(this.value));
25
+ }
26
+ }
27
+ exports.Password = Password;
28
+ //# sourceMappingURL=Password.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Password.js","sourceRoot":"","sources":["../../src/value-objects/Password.ts"],"names":[],"mappings":";;;AAAA,yEAAsE;AACtE,0CAAqC;AACrC,6CAA0C;AAC1C,2DAAwD;AAExD,MAAa,QAAS,SAAQ,qCAAiB;IACrC,MAAM,CAAU,UAAU,GAAG,GAAG,CAAC;IACjC,MAAM,CAAU,UAAU,GAAG,EAAE,CAAC;IAExC,YAAY,KAAiC;QAC3C,KAAK,CAAC,KAAK,CAAC,CAAC;QAEb,IAAI,uBAAU,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;YAClC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAA,iBAAM,EACJ,IAAI,CAAC,eAAe,EAAE,EACtB,IAAI,2CAAoB,CAAC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAC,CACnE,CAAC;IACJ,CAAC;IAEO,eAAe;QACrB,OAAO,CACL,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU;YACxC,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU;YACxC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YACxB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAChC,CAAC;IACJ,CAAC;;AA1BH,4BA2BC"}
@@ -1 +1 @@
1
- {"version":3,"file":"UniqueObjectArray.d.ts","sourceRoot":"","sources":["../../src/value-objects/UniqueObjectArray.ts"],"names":[],"mappings":"AAAA,UAAU,cAAc;IACtB,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CACjC;AACD,qBAAa,iBAAiB,CAAC,CAAC,SAAS,cAAc,CACrD,YAAW,QAAQ,CAAC,CAAC,CAAC;IAEtB,OAAO,CAAC,KAAK,CAAW;WAEV,SAAS,CAAC,CAAC,SAAS,cAAc,EAC9C,KAAK,EAAE,CAAC,EAAE,GACT,iBAAiB,CAAC,CAAC,CAAC;IAShB,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAI1B,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAUtB,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAYxB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;IAIhC,MAAM,IAAI,MAAM;IAIhB,OAAO,IAAI,CAAC,EAAE;CAGtB"}
1
+ {"version":3,"file":"UniqueObjectArray.d.ts","sourceRoot":"","sources":["../../src/value-objects/UniqueObjectArray.ts"],"names":[],"mappings":"AAAA,UAAU,cAAc;IACtB,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;CACjC;AACD,qBAAa,iBAAiB,CAC5B,CAAC,SAAS,cAAc,CACxB,YAAW,QAAQ,CAAC,CAAC,CAAC;IACtB,OAAO,CAAC,KAAK,CAAW;WAEV,SAAS,CAAC,CAAC,SAAS,cAAc,EAC9C,KAAK,EAAE,CAAC,EAAE,GACT,iBAAiB,CAAC,CAAC,CAAC;IAShB,QAAQ,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAI1B,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAUtB,MAAM,CAAC,IAAI,EAAE,CAAC,GAAG,OAAO;IAYxB,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,CAAC,CAAC;IAIhC,MAAM,IAAI,MAAM;IAIhB,OAAO,IAAI,CAAC,EAAE;CAGtB"}
@@ -4,6 +4,7 @@ export declare abstract class ValueObject<T extends Primitive = Primitive> {
4
4
  constructor(value: T | Nullish);
5
5
  private isNullish;
6
6
  protected clone(value: T): this;
7
+ hasValue(other: unknown): boolean;
7
8
  isEqual(other: unknown): boolean;
8
9
  isNotEqual(other: unknown): boolean;
9
10
  valueOf(): T;
@@ -1 +1 @@
1
- {"version":3,"file":"ValueObject.d.ts","sourceRoot":"","sources":["../../src/value-objects/ValueObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAG9C,8BAAsB,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC/D,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAG,CAAC,CAAC;gBAEjB,KAAK,EAAE,CAAC,GAAG,OAAO;IAO9B,OAAO,CAAC,SAAS;IAIjB,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAMxB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAIhC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAInC,OAAO,IAAI,CAAC;IAIZ,QAAQ,IAAI,MAAM;CAG1B"}
1
+ {"version":3,"file":"ValueObject.d.ts","sourceRoot":"","sources":["../../src/value-objects/ValueObject.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAG9C,8BAAsB,WAAW,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS;IAC/D,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAG,CAAC,CAAC;gBAEjB,KAAK,EAAE,CAAC,GAAG,OAAO;IAO9B,OAAO,CAAC,SAAS;IAIjB,SAAS,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,IAAI;IAMxB,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAMjC,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAQhC,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO;IAInC,OAAO,IAAI,CAAC;IAIZ,QAAQ,IAAI,MAAM;CAG1B"}