@haskou/value-objects 4.1.0 → 5.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.
- package/README.md +78 -176
- package/dist/errors/InvalidPasswordError.d.ts +5 -0
- package/dist/errors/InvalidPasswordError.d.ts.map +1 -0
- package/dist/errors/InvalidPasswordError.js +11 -0
- package/dist/errors/InvalidPasswordError.js.map +1 -0
- package/dist/errors/index.d.ts +1 -2
- package/dist/errors/index.d.ts.map +1 -1
- package/dist/errors/index.js +1 -2
- package/dist/errors/index.js.map +1 -1
- package/dist/interfaces/PrimitiveOf.d.ts +5 -1
- package/dist/interfaces/PrimitiveOf.d.ts.map +1 -1
- package/dist/patterns/Assert.d.ts +1 -1
- package/dist/patterns/Assert.d.ts.map +1 -1
- package/dist/types/Primitive.d.ts +1 -1
- package/dist/types/Primitive.d.ts.map +1 -1
- package/dist/value-objects/Email.d.ts +1 -0
- package/dist/value-objects/Email.d.ts.map +1 -1
- package/dist/value-objects/Email.js +2 -1
- package/dist/value-objects/Email.js.map +1 -1
- package/dist/value-objects/Enum.d.ts +1 -1
- package/dist/value-objects/Enum.d.ts.map +1 -1
- package/dist/value-objects/Enum.js.map +1 -1
- package/dist/value-objects/NumberValueObject.js +1 -1
- package/dist/value-objects/NumberValueObject.js.map +1 -1
- package/dist/value-objects/Password.d.ts +8 -0
- package/dist/value-objects/Password.d.ts.map +1 -0
- package/dist/value-objects/Password.js +28 -0
- package/dist/value-objects/Password.js.map +1 -0
- package/dist/value-objects/UniqueObjectArray.d.ts.map +1 -1
- package/dist/value-objects/coordinates/Latitude.d.ts.map +1 -1
- package/dist/value-objects/coordinates/Latitude.js +5 -4
- package/dist/value-objects/coordinates/Latitude.js.map +1 -1
- package/dist/value-objects/coordinates/Longitude.d.ts.map +1 -1
- package/dist/value-objects/coordinates/Longitude.js +5 -4
- package/dist/value-objects/coordinates/Longitude.js.map +1 -1
- package/dist/value-objects/hashes/MD5Hash.d.ts +0 -3
- package/dist/value-objects/hashes/MD5Hash.d.ts.map +1 -1
- package/dist/value-objects/hashes/MD5Hash.js +0 -4
- package/dist/value-objects/hashes/MD5Hash.js.map +1 -1
- package/dist/value-objects/hashes/SHA256Hash.d.ts +0 -3
- package/dist/value-objects/hashes/SHA256Hash.d.ts.map +1 -1
- package/dist/value-objects/hashes/SHA256Hash.js +0 -4
- package/dist/value-objects/hashes/SHA256Hash.js.map +1 -1
- package/dist/value-objects/hashes/SHA512Hash.d.ts +0 -3
- package/dist/value-objects/hashes/SHA512Hash.d.ts.map +1 -1
- package/dist/value-objects/hashes/SHA512Hash.js +0 -4
- package/dist/value-objects/hashes/SHA512Hash.js.map +1 -1
- package/dist/value-objects/ids/ShortId.d.ts +2 -0
- package/dist/value-objects/ids/ShortId.d.ts.map +1 -1
- package/dist/value-objects/ids/ShortId.js +12 -3
- package/dist/value-objects/ids/ShortId.js.map +1 -1
- package/dist/value-objects/ids/UUID.d.ts +3 -0
- package/dist/value-objects/ids/UUID.d.ts.map +1 -1
- package/dist/value-objects/ids/UUID.js +23 -4
- package/dist/value-objects/ids/UUID.js.map +1 -1
- package/dist/value-objects/index.d.ts +1 -1
- package/dist/value-objects/index.d.ts.map +1 -1
- package/dist/value-objects/index.js +1 -1
- package/dist/value-objects/index.js.map +1 -1
- package/dist/value-objects/media/Media.d.ts +2 -0
- package/dist/value-objects/media/Media.d.ts.map +1 -1
- package/dist/value-objects/media/Media.js +14 -1
- package/dist/value-objects/media/Media.js.map +1 -1
- package/dist/value-objects/time/CalendarDay.d.ts +2 -1
- package/dist/value-objects/time/CalendarDay.d.ts.map +1 -1
- package/dist/value-objects/time/CalendarDay.js +25 -11
- package/dist/value-objects/time/CalendarDay.js.map +1 -1
- package/dist/value-objects/time/DayOfWeek.d.ts.map +1 -1
- package/dist/value-objects/time/DayOfWeek.js +2 -3
- package/dist/value-objects/time/DayOfWeek.js.map +1 -1
- package/dist/value-objects/time/Duration.js +2 -2
- package/dist/value-objects/time/Duration.js.map +1 -1
- package/dist/value-objects/time/Hour.d.ts +3 -0
- package/dist/value-objects/time/Hour.d.ts.map +1 -1
- package/dist/value-objects/time/Hour.js +30 -31
- package/dist/value-objects/time/Hour.js.map +1 -1
- package/dist/value-objects/time/Timestamp.d.ts +3 -0
- package/dist/value-objects/time/Timestamp.d.ts.map +1 -1
- package/dist/value-objects/time/Timestamp.js +50 -6
- package/dist/value-objects/time/Timestamp.js.map +1 -1
- package/dist/value-objects/time/TimestampInterval.d.ts +2 -4
- package/dist/value-objects/time/TimestampInterval.d.ts.map +1 -1
- package/dist/value-objects/time/TimestampInterval.js +0 -10
- package/dist/value-objects/time/TimestampInterval.js.map +1 -1
- package/package.json +50 -33
- package/dist/errors/InvalidKeyError.d.ts +0 -5
- package/dist/errors/InvalidKeyError.d.ts.map +0 -1
- package/dist/errors/InvalidKeyError.js +0 -11
- package/dist/errors/InvalidKeyError.js.map +0 -1
- package/dist/errors/InvalidSignatureError.d.ts +0 -5
- package/dist/errors/InvalidSignatureError.d.ts.map +0 -1
- package/dist/errors/InvalidSignatureError.js +0 -11
- package/dist/errors/InvalidSignatureError.js.map +0 -1
- package/dist/value-objects/crypto/CryptoAdapter.d.ts +0 -30
- package/dist/value-objects/crypto/CryptoAdapter.d.ts.map +0 -1
- package/dist/value-objects/crypto/CryptoAdapter.js +0 -96
- package/dist/value-objects/crypto/CryptoAdapter.js.map +0 -1
- package/dist/value-objects/crypto/CryptoPayload.d.ts +0 -5
- package/dist/value-objects/crypto/CryptoPayload.d.ts.map +0 -1
- package/dist/value-objects/crypto/CryptoPayload.js +0 -3
- package/dist/value-objects/crypto/CryptoPayload.js.map +0 -1
- package/dist/value-objects/crypto/EncryptedKeyPair.d.ts +0 -25
- package/dist/value-objects/crypto/EncryptedKeyPair.d.ts.map +0 -1
- package/dist/value-objects/crypto/EncryptedKeyPair.js +0 -42
- package/dist/value-objects/crypto/EncryptedKeyPair.js.map +0 -1
- package/dist/value-objects/crypto/EncryptedPayload.d.ts +0 -4
- package/dist/value-objects/crypto/EncryptedPayload.d.ts.map +0 -1
- package/dist/value-objects/crypto/EncryptedPayload.js +0 -8
- package/dist/value-objects/crypto/EncryptedPayload.js.map +0 -1
- package/dist/value-objects/crypto/EncryptedPrivateKey.d.ts +0 -11
- package/dist/value-objects/crypto/EncryptedPrivateKey.d.ts.map +0 -1
- package/dist/value-objects/crypto/EncryptedPrivateKey.js +0 -37
- package/dist/value-objects/crypto/EncryptedPrivateKey.js.map +0 -1
- package/dist/value-objects/crypto/Key.d.ts +0 -4
- package/dist/value-objects/crypto/Key.d.ts.map +0 -1
- package/dist/value-objects/crypto/Key.js +0 -8
- package/dist/value-objects/crypto/Key.js.map +0 -1
- package/dist/value-objects/crypto/KeyPair.d.ts +0 -26
- package/dist/value-objects/crypto/KeyPair.d.ts.map +0 -1
- package/dist/value-objects/crypto/KeyPair.js +0 -45
- package/dist/value-objects/crypto/KeyPair.js.map +0 -1
- package/dist/value-objects/crypto/PrivateKey.d.ts +0 -19
- package/dist/value-objects/crypto/PrivateKey.d.ts.map +0 -1
- package/dist/value-objects/crypto/PrivateKey.js +0 -56
- package/dist/value-objects/crypto/PrivateKey.js.map +0 -1
- package/dist/value-objects/crypto/PublicKey.d.ts +0 -15
- package/dist/value-objects/crypto/PublicKey.d.ts.map +0 -1
- package/dist/value-objects/crypto/PublicKey.js +0 -54
- package/dist/value-objects/crypto/PublicKey.js.map +0 -1
- package/dist/value-objects/crypto/Signature.d.ts +0 -11
- package/dist/value-objects/crypto/Signature.d.ts.map +0 -1
- package/dist/value-objects/crypto/Signature.js +0 -26
- package/dist/value-objects/crypto/Signature.js.map +0 -1
- package/dist/value-objects/crypto/encrypted-private-key/CryptoDerivation.d.ts +0 -21
- package/dist/value-objects/crypto/encrypted-private-key/CryptoDerivation.d.ts.map +0 -1
- package/dist/value-objects/crypto/encrypted-private-key/CryptoDerivation.js +0 -56
- package/dist/value-objects/crypto/encrypted-private-key/CryptoDerivation.js.map +0 -1
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.d.ts +0 -14
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.d.ts.map +0 -1
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.js +0 -33
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.js.map +0 -1
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.d.ts +0 -20
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.d.ts.map +0 -1
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.js +0 -69
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.js.map +0 -1
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.d.ts +0 -8
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.d.ts.map +0 -1
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.js +0 -10
- package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.js.map +0 -1
- package/dist/value-objects/crypto/index.d.ts +0 -9
- package/dist/value-objects/crypto/index.d.ts.map +0 -1
- package/dist/value-objects/crypto/index.js +0 -12
- package/dist/value-objects/crypto/index.js.map +0 -1
|
@@ -9,44 +9,43 @@ class Hour extends StringValueObject_1.StringValueObject {
|
|
|
9
9
|
minutes;
|
|
10
10
|
hours;
|
|
11
11
|
static addTrailZero(value) {
|
|
12
|
-
return
|
|
12
|
+
return value < 10 ? `0${value}` : value.toString();
|
|
13
|
+
}
|
|
14
|
+
static normalizeMinutes(totalMinutes) {
|
|
15
|
+
const minutesPerDay = 24 * 60;
|
|
16
|
+
return ((totalMinutes % minutesPerDay) + minutesPerDay) % minutesPerDay;
|
|
17
|
+
}
|
|
18
|
+
static parseFromNumber(value, minutes) {
|
|
19
|
+
(0, Assert_1.assert)(Number.isInteger(value) && value >= 0 && value <= 23, new InvalidHourError_1.InvalidHourError());
|
|
20
|
+
(0, Assert_1.assert)(Number.isInteger(minutes) && minutes >= 0 && minutes <= 59, new InvalidMinutesError_1.InvalidMinutesError());
|
|
21
|
+
return [Hour.addTrailZero(value), Hour.addTrailZero(minutes)];
|
|
22
|
+
}
|
|
23
|
+
static parseFromString(value) {
|
|
24
|
+
const parts = value.split(':');
|
|
25
|
+
(0, Assert_1.assert)(parts.length === 2 && parts[1] !== '', new InvalidHourError_1.InvalidHourError());
|
|
26
|
+
const [hours, minutes] = parts;
|
|
27
|
+
(0, Assert_1.assert)(/^\d{1,2}$/.test(hours), new InvalidHourError_1.InvalidHourError());
|
|
28
|
+
(0, Assert_1.assert)(/^\d{1,2}$/.test(minutes), new InvalidMinutesError_1.InvalidMinutesError());
|
|
29
|
+
const parsedHours = Number(hours);
|
|
30
|
+
const parsedMinutes = Number(minutes);
|
|
31
|
+
(0, Assert_1.assert)(parsedHours >= 0 && parsedHours <= 23, new InvalidHourError_1.InvalidHourError());
|
|
32
|
+
(0, Assert_1.assert)(parsedMinutes >= 0 && parsedMinutes <= 59, new InvalidMinutesError_1.InvalidMinutesError());
|
|
33
|
+
return [Hour.addTrailZero(parsedHours), Hour.addTrailZero(parsedMinutes)];
|
|
13
34
|
}
|
|
14
35
|
constructor(value, minutes) {
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
(0, Assert_1.assert)(Number(value) >= 0 && Number(value) <= 23, new InvalidHourError_1.InvalidHourError());
|
|
19
|
-
(0, Assert_1.assert)(Number(minutes) >= 0 && Number(minutes) <= 59, new InvalidMinutesError_1.InvalidMinutesError());
|
|
20
|
-
parsedHours = Hour.addTrailZero(value.toString());
|
|
21
|
-
parsedMinutes = Hour.addTrailZero(minutes.toString());
|
|
22
|
-
}
|
|
23
|
-
else {
|
|
24
|
-
(0, Assert_1.assert)(typeof value === 'string', new InvalidHourError_1.InvalidHourError());
|
|
25
|
-
(0, Assert_1.assert)(value.includes(':'), new InvalidHourError_1.InvalidHourError());
|
|
26
|
-
const [hours, minutes] = value.split(':');
|
|
27
|
-
(0, Assert_1.assert)(Number(hours) >= 0 && Number(hours) <= 23, new InvalidHourError_1.InvalidHourError());
|
|
28
|
-
(0, Assert_1.assert)(Number(minutes) >= 0 && Number(minutes) <= 59, new InvalidMinutesError_1.InvalidMinutesError());
|
|
29
|
-
parsedHours = Hour.addTrailZero(hours);
|
|
30
|
-
parsedMinutes = Hour.addTrailZero(minutes);
|
|
31
|
-
}
|
|
36
|
+
const [parsedHours, parsedMinutes] = typeof value === 'number' && minutes !== undefined
|
|
37
|
+
? Hour.parseFromNumber(value, minutes)
|
|
38
|
+
: Hour.parseFromString(value);
|
|
32
39
|
super(`${parsedHours}:${parsedMinutes}`);
|
|
33
40
|
this.hours = parsedHours;
|
|
34
41
|
this.minutes = parsedMinutes;
|
|
35
42
|
}
|
|
36
43
|
addMinutes(minutes) {
|
|
37
|
-
const
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
}
|
|
43
|
-
else if (newHour < 0) {
|
|
44
|
-
newHour = 24 + newHour;
|
|
45
|
-
}
|
|
46
|
-
if (newMinutes < 0) {
|
|
47
|
-
newMinutes = 60 + newMinutes;
|
|
48
|
-
}
|
|
49
|
-
return new Hour(`${newHour}:${newMinutes}`);
|
|
44
|
+
const currentMinutes = Number(this.hours) * 60 + Number(this.minutes);
|
|
45
|
+
const normalizedMinutes = Hour.normalizeMinutes(currentMinutes + minutes);
|
|
46
|
+
const newHour = Math.floor(normalizedMinutes / 60);
|
|
47
|
+
const newMinutes = normalizedMinutes % 60;
|
|
48
|
+
return new Hour(newHour, newMinutes);
|
|
50
49
|
}
|
|
51
50
|
diffInMinutes(other) {
|
|
52
51
|
let endHour = Number(other.hours);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Hour.js","sourceRoot":"","sources":["../../../src/value-objects/time/Hour.ts"],"names":[],"mappings":";;;AAAA,oEAAiE;AACjE,0EAAuE;AACvE,kDAA+C;AAC/C,4DAAyD;AAEzD,MAAa,IAAK,SAAQ,qCAAiB;IACxB,OAAO,CAAS;IAChB,KAAK,CAAS;
|
|
1
|
+
{"version":3,"file":"Hour.js","sourceRoot":"","sources":["../../../src/value-objects/time/Hour.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,9 @@ type TimestampValue = number | Date | Timestamp | string;
|
|
|
10
10
|
export declare class Timestamp extends ValueObject<number> {
|
|
11
11
|
private static readonly FACTORS;
|
|
12
12
|
private static valueMilliseconds;
|
|
13
|
+
private static getLastDayOfUtcMonth;
|
|
14
|
+
private static ensureCalendarDelta;
|
|
15
|
+
private static createUtcCalendarValue;
|
|
13
16
|
static new(value: TimestampValue): Timestamp;
|
|
14
17
|
static now(): Timestamp;
|
|
15
18
|
static fromSeconds(seconds: number | NumberValueObject): Timestamp;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Timestamp.d.ts","sourceRoot":"","sources":["../../../src/value-objects/time/Timestamp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Timestamp.d.ts","sourceRoot":"","sources":["../../../src/value-objects/time/Timestamp.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,KAAK,EAAE,MAAM,SAAS,CAAC;AAChC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,KAAK,cAAc,GAAG,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzD,qBAAa,SAAU,SAAQ,WAAW,CAAC,MAAM,CAAC;IAChD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAM7B;IAEF,OAAO,CAAC,MAAM,CAAC,iBAAiB;IAgBhC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAqBnC,OAAO,CAAC,MAAM,CAAC,mBAAmB;IAIlC,OAAO,CAAC,MAAM,CAAC,sBAAsB;WAsBvB,GAAG,CAAC,KAAK,EAAE,cAAc,GAAG,SAAS;WAIrC,GAAG,IAAI,SAAS;WAIhB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;gBAItD,KAAK,CAAC,EAAE,cAAc;IASlC,WAAW,IAAI,SAAS;IAYxB,cAAc,IAAI,MAAM;IAIxB,SAAS,IAAI,MAAM;IAInB,MAAM,IAAI,IAAI;IAId,QAAQ,IAAI,MAAM;IAIlB,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAIlC,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAInC,OAAO,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAIlC,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAI1C,cAAc,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAIzC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAMpE,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAM1D,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAM1D,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAMtD,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAMpD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAMtD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAwBxD,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,iBAAiB,GAAG,SAAS;IAsBtD,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS;IAM1C,SAAS,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAIpC,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAItC,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO;IAIrC,cAAc,IAAI,WAAW;IAI7B,MAAM,IAAI,GAAG;IAIb,QAAQ,IAAI,KAAK;IAIjB,OAAO,IAAI,IAAI;IAIf,QAAQ,IAAI,MAAM;IAIlB,UAAU,IAAI,MAAM;IAIpB,UAAU,IAAI,MAAM;IAIpB,eAAe,IAAI,MAAM;IAIzB,YAAY,IAAI,MAAM;IAItB,cAAc,IAAI,WAAW;CAGrC"}
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.Timestamp = void 0;
|
|
4
|
+
const InvalidIntegerError_1 = require("../../errors/InvalidIntegerError");
|
|
5
|
+
const InvalidNumberError_1 = require("../../errors/InvalidNumberError");
|
|
6
|
+
const Assert_1 = require("../../patterns/Assert");
|
|
4
7
|
const ValueObject_1 = require("../ValueObject");
|
|
5
8
|
const CalendarDay_1 = require("./CalendarDay");
|
|
6
9
|
const Day_1 = require("./Day");
|
|
@@ -12,10 +15,8 @@ class Timestamp extends ValueObject_1.ValueObject {
|
|
|
12
15
|
DAYS: 24 * 60 * 60 * 1000,
|
|
13
16
|
HOURS: 60 * 60 * 1000,
|
|
14
17
|
MINUTES: 60 * 1000,
|
|
15
|
-
MONTHS: 30 * 24 * 60 * 60 * 1000,
|
|
16
18
|
SECONDS: 1000,
|
|
17
19
|
WEEKS: 7 * 24 * 60 * 60 * 1000,
|
|
18
|
-
YEARS: 365 * 24 * 60 * 60 * 1000,
|
|
19
20
|
};
|
|
20
21
|
static valueMilliseconds(value) {
|
|
21
22
|
if (value instanceof Timestamp || value instanceof Date) {
|
|
@@ -29,6 +30,37 @@ class Timestamp extends ValueObject_1.ValueObject {
|
|
|
29
30
|
}
|
|
30
31
|
return Date.now().valueOf();
|
|
31
32
|
}
|
|
33
|
+
static getLastDayOfUtcMonth(year, month) {
|
|
34
|
+
const normalizedYear = year + Math.floor(month / 12);
|
|
35
|
+
const normalizedMonth = ((month % 12) + 12) % 12;
|
|
36
|
+
const days = [
|
|
37
|
+
31,
|
|
38
|
+
new Year_1.Year(normalizedYear).isLeapYear() ? 29 : 28,
|
|
39
|
+
31,
|
|
40
|
+
30,
|
|
41
|
+
31,
|
|
42
|
+
30,
|
|
43
|
+
31,
|
|
44
|
+
31,
|
|
45
|
+
30,
|
|
46
|
+
31,
|
|
47
|
+
30,
|
|
48
|
+
31,
|
|
49
|
+
];
|
|
50
|
+
return days[normalizedMonth];
|
|
51
|
+
}
|
|
52
|
+
static ensureCalendarDelta(value) {
|
|
53
|
+
(0, Assert_1.assert)(Number.isInteger(value), new InvalidIntegerError_1.InvalidIntegerError(value));
|
|
54
|
+
}
|
|
55
|
+
static createUtcCalendarValue(sourceValue, year, month, day) {
|
|
56
|
+
const integerValue = Math.floor(sourceValue);
|
|
57
|
+
const fractionalMilliseconds = sourceValue - integerValue;
|
|
58
|
+
const source = new Date(integerValue);
|
|
59
|
+
const target = new Date(0);
|
|
60
|
+
target.setUTCFullYear(year, month, day);
|
|
61
|
+
target.setUTCHours(source.getUTCHours(), source.getUTCMinutes(), source.getUTCSeconds(), source.getUTCMilliseconds());
|
|
62
|
+
return target.valueOf() + fractionalMilliseconds;
|
|
63
|
+
}
|
|
32
64
|
static new(value) {
|
|
33
65
|
return new Timestamp(value);
|
|
34
66
|
}
|
|
@@ -40,6 +72,7 @@ class Timestamp extends ValueObject_1.ValueObject {
|
|
|
40
72
|
}
|
|
41
73
|
constructor(value) {
|
|
42
74
|
super(Timestamp.valueMilliseconds(value));
|
|
75
|
+
(0, Assert_1.assert)(Number.isFinite(new Date(this.value).valueOf()), new InvalidNumberError_1.InvalidNumberError(this.value));
|
|
43
76
|
}
|
|
44
77
|
toExactHour() {
|
|
45
78
|
const date = new Date(this.valueOf());
|
|
@@ -101,12 +134,23 @@ class Timestamp extends ValueObject_1.ValueObject {
|
|
|
101
134
|
return this.clone(value);
|
|
102
135
|
}
|
|
103
136
|
addMonths(months) {
|
|
104
|
-
const
|
|
105
|
-
|
|
137
|
+
const delta = months.valueOf();
|
|
138
|
+
Timestamp.ensureCalendarDelta(delta);
|
|
139
|
+
const source = new Date(Math.floor(this.value));
|
|
140
|
+
const totalMonths = source.getUTCFullYear() * 12 + source.getUTCMonth() + delta;
|
|
141
|
+
const targetYear = Math.floor(totalMonths / 12);
|
|
142
|
+
const targetMonth = totalMonths - targetYear * 12;
|
|
143
|
+
const targetDay = Math.min(source.getUTCDate(), Timestamp.getLastDayOfUtcMonth(targetYear, targetMonth));
|
|
144
|
+
return this.clone(Timestamp.createUtcCalendarValue(this.value, targetYear, targetMonth, targetDay));
|
|
106
145
|
}
|
|
107
146
|
addYears(years) {
|
|
108
|
-
const
|
|
109
|
-
|
|
147
|
+
const delta = years.valueOf();
|
|
148
|
+
Timestamp.ensureCalendarDelta(delta);
|
|
149
|
+
const source = new Date(Math.floor(this.value));
|
|
150
|
+
const targetYear = source.getUTCFullYear() + delta;
|
|
151
|
+
const targetMonth = source.getUTCMonth();
|
|
152
|
+
const targetDay = Math.min(source.getUTCDate(), Timestamp.getLastDayOfUtcMonth(targetYear, targetMonth));
|
|
153
|
+
return this.clone(Timestamp.createUtcCalendarValue(this.value, targetYear, targetMonth, targetDay));
|
|
110
154
|
}
|
|
111
155
|
addDuration(duration) {
|
|
112
156
|
const value = this.value + duration.valueOf();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Timestamp.js","sourceRoot":"","sources":["../../../src/value-objects/time/Timestamp.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"Timestamp.js","sourceRoot":"","sources":["../../../src/value-objects/time/Timestamp.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,8 +5,8 @@ import { DayOfWeek } from './DayOfWeek';
|
|
|
5
5
|
import { Duration } from './Duration';
|
|
6
6
|
import { Timestamp } from './Timestamp';
|
|
7
7
|
export declare class TimestampInterval extends ValueObject<string> {
|
|
8
|
-
private start;
|
|
9
|
-
private end;
|
|
8
|
+
private readonly start;
|
|
9
|
+
private readonly end;
|
|
10
10
|
static fromPrimitives(primitives: PrimitiveOf<TimestampInterval>): TimestampInterval;
|
|
11
11
|
constructor(start: Timestamp, end: Timestamp);
|
|
12
12
|
toPrimitives(): {
|
|
@@ -17,8 +17,6 @@ export declare class TimestampInterval extends ValueObject<string> {
|
|
|
17
17
|
getEnd(): Timestamp;
|
|
18
18
|
getDuration(): Duration;
|
|
19
19
|
getTotalDaysOfWeek(dayOfWeek: DayOfWeek): number;
|
|
20
|
-
modifyStart(start: Timestamp): void;
|
|
21
|
-
modifyEnd(end: Timestamp): void;
|
|
22
20
|
getDaysBetweenInterval(): CalendarDay[];
|
|
23
21
|
getOverlappingInterval(searchInterval: TimestampInterval): TimestampInterval | null;
|
|
24
22
|
includes(timestamp: Timestamp): boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimestampInterval.d.ts","sourceRoot":"","sources":["../../../src/value-objects/time/TimestampInterval.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAG3D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,iBAAkB,SAAQ,WAAW,CAAC,MAAM,CAAC;IAWtD,OAAO,CAAC,KAAK;
|
|
1
|
+
{"version":3,"file":"TimestampInterval.d.ts","sourceRoot":"","sources":["../../../src/value-objects/time/TimestampInterval.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,8BAA8B,CAAC;AAG3D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,qBAAa,iBAAkB,SAAQ,WAAW,CAAC,MAAM,CAAC;IAWtD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,GAAG;WAXR,cAAc,CAC1B,UAAU,EAAE,WAAW,CAAC,iBAAiB,CAAC,GACzC,iBAAiB;gBAQD,KAAK,EAAE,SAAS,EAChB,GAAG,EAAE,SAAS;IAU1B,YAAY;;;;IAOZ,QAAQ,IAAI,SAAS;IAIrB,MAAM,IAAI,SAAS;IAInB,WAAW,IAAI,QAAQ;IAMvB,kBAAkB,CAAC,SAAS,EAAE,SAAS,GAAG,MAAM;IAmBhD,sBAAsB,IAAI,WAAW,EAAE;IAcvC,sBAAsB,CAC3B,cAAc,EAAE,iBAAiB,GAChC,iBAAiB,GAAG,IAAI;IAepB,QAAQ,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO;CAM/C"}
|
|
@@ -47,16 +47,6 @@ class TimestampInterval extends ValueObject_1.ValueObject {
|
|
|
47
47
|
}
|
|
48
48
|
return count;
|
|
49
49
|
}
|
|
50
|
-
modifyStart(start) {
|
|
51
|
-
const end = this.end;
|
|
52
|
-
(0, Assert_1.assert)(start.isBefore(end), new InvalidTimestampIntervalError_1.InvalidTimestampIntervalError(start, end));
|
|
53
|
-
this.start = start;
|
|
54
|
-
}
|
|
55
|
-
modifyEnd(end) {
|
|
56
|
-
const start = this.start;
|
|
57
|
-
(0, Assert_1.assert)(start.isBefore(end), new InvalidTimestampIntervalError_1.InvalidTimestampIntervalError(start, end));
|
|
58
|
-
this.end = end;
|
|
59
|
-
}
|
|
60
50
|
getDaysBetweenInterval() {
|
|
61
51
|
const days = [];
|
|
62
52
|
let iteratorTimestamp = new Timestamp_1.Timestamp(this.getStart());
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TimestampInterval.js","sourceRoot":"","sources":["../../../src/value-objects/time/TimestampInterval.ts"],"names":[],"mappings":";;;AAAA,8FAA2F;AAE3F,kDAA+C;AAC/C,sDAAmD;AACnD,gDAA6C;AAC7C,+CAA4C;AAE5C,yCAAsC;AACtC,2CAAwC;AAExC,MAAa,iBAAkB,SAAQ,yBAAmB;
|
|
1
|
+
{"version":3,"file":"TimestampInterval.js","sourceRoot":"","sources":["../../../src/value-objects/time/TimestampInterval.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,42 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haskou/value-objects",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "5.0.0",
|
|
4
|
+
"description": "TypeScript value objects for validated, immutable primitive values and small domain-safe data structures.",
|
|
4
5
|
"main": "dist/index.js",
|
|
5
6
|
"types": "dist/index.d.ts",
|
|
7
|
+
"exports": {
|
|
8
|
+
".": {
|
|
9
|
+
"types": "./dist/index.d.ts",
|
|
10
|
+
"require": "./dist/index.js",
|
|
11
|
+
"default": "./dist/index.js"
|
|
12
|
+
},
|
|
13
|
+
"./package.json": "./package.json"
|
|
14
|
+
},
|
|
6
15
|
"files": [
|
|
7
16
|
"dist"
|
|
8
17
|
],
|
|
18
|
+
"sideEffects": false,
|
|
9
19
|
"license": "MIT",
|
|
20
|
+
"engines": {
|
|
21
|
+
"node": ">=20.20.2"
|
|
22
|
+
},
|
|
23
|
+
"keywords": [
|
|
24
|
+
"value-object",
|
|
25
|
+
"value-objects",
|
|
26
|
+
"typescript",
|
|
27
|
+
"validation",
|
|
28
|
+
"validated-types",
|
|
29
|
+
"immutable",
|
|
30
|
+
"immutability",
|
|
31
|
+
"type-safety",
|
|
32
|
+
"domain-primitives",
|
|
33
|
+
"primitive-obsession",
|
|
34
|
+
"ddd",
|
|
35
|
+
"domain-driven-design",
|
|
36
|
+
"email-validation",
|
|
37
|
+
"uuid",
|
|
38
|
+
"hash"
|
|
39
|
+
],
|
|
10
40
|
"publishConfig": {
|
|
11
41
|
"access": "public"
|
|
12
42
|
},
|
|
@@ -17,46 +47,33 @@
|
|
|
17
47
|
"bugs": {
|
|
18
48
|
"url": "https://github.com/haskou/value-objects/issues"
|
|
19
49
|
},
|
|
20
|
-
"homepage": "https://github.
|
|
50
|
+
"homepage": "https://haskou.github.io/value-objects/",
|
|
21
51
|
"scripts": {
|
|
22
52
|
"lint": "eslint ./src --ext .ts",
|
|
23
53
|
"lint:fix": "eslint ./src --ext .ts --fix",
|
|
24
54
|
"test": "yarn lint && yarn test:unit",
|
|
25
|
-
"test:unit": "jest --
|
|
55
|
+
"test:unit": "jest --runInBand",
|
|
26
56
|
"test:coverage": "NODE_ENV=test jest --collect-coverage",
|
|
27
57
|
"build": "rm -rf dist/ && tsc",
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
31
|
-
},
|
|
32
|
-
"devDependencies": {
|
|
33
|
-
"@types/jest": "^30.0.0",
|
|
34
|
-
"@types/node": "^24.0.13",
|
|
35
|
-
"@types/uuid": "8",
|
|
36
|
-
"@typescript-eslint/eslint-plugin": "6.20.0",
|
|
37
|
-
"@typescript-eslint/parser": "6.20.0",
|
|
38
|
-
"eslint": "8.57.0",
|
|
39
|
-
"eslint-config-prettier": "^10.1.5",
|
|
40
|
-
"eslint-plugin-perfectionist": "^4.15.0",
|
|
41
|
-
"eslint-plugin-prettier": "^5.5.1",
|
|
42
|
-
"eslint-plugin-sonarjs": "^3.0.4",
|
|
43
|
-
"eslint-plugin-unused-imports": "^4.1.4",
|
|
44
|
-
"faker": "^6.6.6",
|
|
45
|
-
"jest": "^30.0.4",
|
|
46
|
-
"jest-extended": "^6.0.0",
|
|
47
|
-
"jest-runner-tsc": "^1.6.0",
|
|
48
|
-
"prettier": "^3.6.2",
|
|
49
|
-
"prettier-eslint": "^16.4.2",
|
|
50
|
-
"ts-jest": "^29.4.0",
|
|
51
|
-
"ts-node": "^10.9.2",
|
|
52
|
-
"typescript": "^5.8.3"
|
|
58
|
+
"docs:dev": "vitepress dev docs",
|
|
59
|
+
"docs:build": "vitepress build docs",
|
|
60
|
+
"docs:preview": "vitepress build docs && vitepress preview docs"
|
|
53
61
|
},
|
|
54
62
|
"dependencies": {
|
|
55
|
-
"@noble/ciphers": "^2.2.0",
|
|
56
|
-
"@noble/curves": "^2.0.1",
|
|
57
|
-
"@noble/hashes": "^2.0.1",
|
|
58
|
-
"bson-objectid": "^2.0.4",
|
|
59
63
|
"buffer": "^6.0.3",
|
|
60
|
-
"
|
|
64
|
+
"tslib": "^2.8.1"
|
|
65
|
+
},
|
|
66
|
+
"devDependencies": {
|
|
67
|
+
"@haskou/eslint-config": "^0.2.2",
|
|
68
|
+
"@types/jest": "^30.0.0",
|
|
69
|
+
"@types/node": "^26.1.2",
|
|
70
|
+
"eslint": "^10.8.0",
|
|
71
|
+
"jest": "^30.4.2",
|
|
72
|
+
"jest-extended": "^7.0.0",
|
|
73
|
+
"prettier": "^3.9.6",
|
|
74
|
+
"ts-jest": "^29.4.12",
|
|
75
|
+
"typescript": "^6.0.3",
|
|
76
|
+
"vitepress": "^1.6.4",
|
|
77
|
+
"vue": "^3.5.40"
|
|
61
78
|
}
|
|
62
79
|
}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InvalidKeyError.d.ts","sourceRoot":"","sources":["../../src/errors/InvalidKeyError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,eAAgB,SAAQ,WAAW;gBAClC,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,EAAE;CAOxD"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InvalidKeyError = void 0;
|
|
4
|
-
const DomainError_1 = require("./DomainError");
|
|
5
|
-
class InvalidKeyError extends DomainError_1.DomainError {
|
|
6
|
-
constructor(keySize, possibleKeySizes) {
|
|
7
|
-
super(`Invalid key size: ${keySize}. Supported key sizes are ${possibleKeySizes.join(', ')}`);
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.InvalidKeyError = InvalidKeyError;
|
|
11
|
-
//# sourceMappingURL=InvalidKeyError.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InvalidKeyError.js","sourceRoot":"","sources":["../../src/errors/InvalidKeyError.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AAE5C,MAAa,eAAgB,SAAQ,yBAAW;IAC9C,YAAY,OAAe,EAAE,gBAA0B;QACrD,KAAK,CACH,qBAAqB,OAAO,6BAA6B,gBAAgB,CAAC,IAAI,CAC5E,IAAI,CACL,EAAE,CACJ,CAAC;IACJ,CAAC;CACF;AARD,0CAQC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InvalidSignatureError.d.ts","sourceRoot":"","sources":["../../src/errors/InvalidSignatureError.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAE5C,qBAAa,qBAAsB,SAAQ,WAAW;gBACxC,MAAM,EAAE,MAAM;CAG3B"}
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InvalidSignatureError = void 0;
|
|
4
|
-
const DomainError_1 = require("./DomainError");
|
|
5
|
-
class InvalidSignatureError extends DomainError_1.DomainError {
|
|
6
|
-
constructor(length) {
|
|
7
|
-
super(`Signature must be a ${length}-character string`);
|
|
8
|
-
}
|
|
9
|
-
}
|
|
10
|
-
exports.InvalidSignatureError = InvalidSignatureError;
|
|
11
|
-
//# sourceMappingURL=InvalidSignatureError.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"InvalidSignatureError.js","sourceRoot":"","sources":["../../src/errors/InvalidSignatureError.ts"],"names":[],"mappings":";;;AAAA,+CAA4C;AAE5C,MAAa,qBAAsB,SAAQ,yBAAW;IACpD,YAAY,MAAc;QACxB,KAAK,CAAC,uBAAuB,MAAM,mBAAmB,CAAC,CAAC;IAC1D,CAAC;CACF;AAJD,sDAIC"}
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
import { Buffer } from 'buffer';
|
|
2
|
-
type HashAlgorithm = 'md5' | 'sha256' | 'sha512';
|
|
3
|
-
export declare class CryptoAdapter {
|
|
4
|
-
private static pemToDer;
|
|
5
|
-
private static wrapPem;
|
|
6
|
-
static decryptAes256Gcm(key: Uint8Array, iv: Uint8Array, cipherText: Uint8Array, tag: Uint8Array): Buffer;
|
|
7
|
-
static deriveEncryptionKey(sharedSecret: Uint8Array, ephemeralPublicKey: Uint8Array): Uint8Array;
|
|
8
|
-
static encryptAes256Gcm(key: Uint8Array, iv: Uint8Array, message: Uint8Array): {
|
|
9
|
-
cipherText: Uint8Array;
|
|
10
|
-
tag: Uint8Array;
|
|
11
|
-
};
|
|
12
|
-
static getPublicKey(privateKeyPem: string): string;
|
|
13
|
-
static hash(algorithm: HashAlgorithm, value: string | Uint8Array): string;
|
|
14
|
-
static privateKeyToPem(seed: Uint8Array): string;
|
|
15
|
-
static privateKeyToSeed(privateKeyPem: string): Uint8Array;
|
|
16
|
-
static privateKeyToX25519(privateKeyPem: string): Uint8Array;
|
|
17
|
-
static publicKeyToPem(publicKey: Uint8Array): string;
|
|
18
|
-
static publicKeyToX25519(publicKeyPem: string): Uint8Array;
|
|
19
|
-
static publicKeyToBytes(publicKeyPem: string): Uint8Array;
|
|
20
|
-
static randomBytes(size: number): Buffer;
|
|
21
|
-
static randomPrivateKeyPem(): string;
|
|
22
|
-
static sign(message: Uint8Array, privateKeyPem: string): Buffer;
|
|
23
|
-
static toBytes(value: string | Uint8Array): Uint8Array;
|
|
24
|
-
static verify(signature: Uint8Array, message: Uint8Array, publicKeyPem: string): boolean;
|
|
25
|
-
static x25519PublicKey(privateKey: Uint8Array): Uint8Array;
|
|
26
|
-
static x25519SharedSecret(privateKey: Uint8Array, publicKey: Uint8Array): Uint8Array;
|
|
27
|
-
static x25519RandomPrivateKey(): Uint8Array;
|
|
28
|
-
}
|
|
29
|
-
export {};
|
|
30
|
-
//# sourceMappingURL=CryptoAdapter.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CryptoAdapter.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/CryptoAdapter.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAMhC,KAAK,aAAa,GAAG,KAAK,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEjD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAC,QAAQ;IASvB,OAAO,CAAC,MAAM,CAAC,OAAO;WAOR,gBAAgB,CAC5B,GAAG,EAAE,UAAU,EACf,EAAE,EAAE,UAAU,EACd,UAAU,EAAE,UAAU,EACtB,GAAG,EAAE,UAAU,GACd,MAAM;WAIK,mBAAmB,CAC/B,YAAY,EAAE,UAAU,EACxB,kBAAkB,EAAE,UAAU,GAC7B,UAAU;WAIC,gBAAgB,CAC5B,GAAG,EAAE,UAAU,EACf,EAAE,EAAE,UAAU,EACd,OAAO,EAAE,UAAU,GAClB;QAAE,UAAU,EAAE,UAAU,CAAC;QAAC,GAAG,EAAE,UAAU,CAAA;KAAE;WAShC,YAAY,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM;WAM3C,IAAI,CAChB,SAAS,EAAE,aAAa,EACxB,KAAK,EAAE,MAAM,GAAG,UAAU,GACzB,MAAM;WAWK,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,MAAM;WAIzC,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU;WAInD,kBAAkB,CAAC,aAAa,EAAE,MAAM,GAAG,UAAU;WAMrD,cAAc,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM;WAO7C,iBAAiB,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU;WAInD,gBAAgB,CAAC,YAAY,EAAE,MAAM,GAAG,UAAU;WAIlD,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;WAIjC,mBAAmB,IAAI,MAAM;WAI7B,IAAI,CAAC,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;WAMxD,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,GAAG,UAAU;WAQ/C,MAAM,CAClB,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,UAAU,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO;WAQI,eAAe,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU;WAInD,kBAAkB,CAC9B,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,GACpB,UAAU;WAIC,sBAAsB,IAAI,UAAU;CAGnD"}
|
|
@@ -1,96 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.CryptoAdapter = void 0;
|
|
4
|
-
const aes_js_1 = require("@noble/ciphers/aes.js");
|
|
5
|
-
const ed25519_js_1 = require("@noble/curves/ed25519.js");
|
|
6
|
-
const legacy_js_1 = require("@noble/hashes/legacy.js");
|
|
7
|
-
const sha2_js_1 = require("@noble/hashes/sha2.js");
|
|
8
|
-
const utils_js_1 = require("@noble/hashes/utils.js");
|
|
9
|
-
const buffer_1 = require("buffer");
|
|
10
|
-
const privateKeyDerPrefix = (0, utils_js_1.hexToBytes)('302e020100300506032b657004220420');
|
|
11
|
-
const publicKeyDerPrefix = (0, utils_js_1.hexToBytes)('302a300506032b6570032100');
|
|
12
|
-
const gcmTagLength = 16;
|
|
13
|
-
class CryptoAdapter {
|
|
14
|
-
static pemToDer(pem) {
|
|
15
|
-
const base64 = pem
|
|
16
|
-
.replace(/-----BEGIN (?:PRIVATE|PUBLIC) KEY-----/, '')
|
|
17
|
-
.replace(/-----END (?:PRIVATE|PUBLIC) KEY-----/, '')
|
|
18
|
-
.replace(/\s/g, '');
|
|
19
|
-
return buffer_1.Buffer.from(base64, 'base64');
|
|
20
|
-
}
|
|
21
|
-
static wrapPem(label, der) {
|
|
22
|
-
return `-----BEGIN ${label}-----\n${buffer_1.Buffer.from(der).toString('base64')}\n-----END ${label}-----\n`;
|
|
23
|
-
}
|
|
24
|
-
static decryptAes256Gcm(key, iv, cipherText, tag) {
|
|
25
|
-
return buffer_1.Buffer.from((0, aes_js_1.gcm)(key, iv).decrypt((0, utils_js_1.concatBytes)(cipherText, tag)));
|
|
26
|
-
}
|
|
27
|
-
static deriveEncryptionKey(sharedSecret, ephemeralPublicKey) {
|
|
28
|
-
return (0, sha2_js_1.sha256)((0, utils_js_1.concatBytes)(sharedSecret, ephemeralPublicKey));
|
|
29
|
-
}
|
|
30
|
-
static encryptAes256Gcm(key, iv, message) {
|
|
31
|
-
const encrypted = (0, aes_js_1.gcm)(key, iv).encrypt(message);
|
|
32
|
-
return {
|
|
33
|
-
cipherText: encrypted.subarray(0, -gcmTagLength),
|
|
34
|
-
tag: encrypted.subarray(-gcmTagLength),
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
static getPublicKey(privateKeyPem) {
|
|
38
|
-
return this.publicKeyToPem(ed25519_js_1.ed25519.getPublicKey(this.privateKeyToSeed(privateKeyPem)));
|
|
39
|
-
}
|
|
40
|
-
static hash(algorithm, value) {
|
|
41
|
-
const bytes = this.toBytes(value);
|
|
42
|
-
const hash = {
|
|
43
|
-
md5: legacy_js_1.md5,
|
|
44
|
-
sha256: sha2_js_1.sha256,
|
|
45
|
-
sha512: sha2_js_1.sha512,
|
|
46
|
-
}[algorithm];
|
|
47
|
-
return (0, utils_js_1.bytesToHex)(hash(bytes));
|
|
48
|
-
}
|
|
49
|
-
static privateKeyToPem(seed) {
|
|
50
|
-
return this.wrapPem('PRIVATE KEY', (0, utils_js_1.concatBytes)(privateKeyDerPrefix, seed));
|
|
51
|
-
}
|
|
52
|
-
static privateKeyToSeed(privateKeyPem) {
|
|
53
|
-
return this.pemToDer(privateKeyPem).subarray(privateKeyDerPrefix.length);
|
|
54
|
-
}
|
|
55
|
-
static privateKeyToX25519(privateKeyPem) {
|
|
56
|
-
return ed25519_js_1.ed25519.utils.toMontgomerySecret(this.privateKeyToSeed(privateKeyPem));
|
|
57
|
-
}
|
|
58
|
-
static publicKeyToPem(publicKey) {
|
|
59
|
-
return this.wrapPem('PUBLIC KEY', (0, utils_js_1.concatBytes)(publicKeyDerPrefix, publicKey));
|
|
60
|
-
}
|
|
61
|
-
static publicKeyToX25519(publicKeyPem) {
|
|
62
|
-
return ed25519_js_1.ed25519.utils.toMontgomery(this.publicKeyToBytes(publicKeyPem));
|
|
63
|
-
}
|
|
64
|
-
static publicKeyToBytes(publicKeyPem) {
|
|
65
|
-
return this.pemToDer(publicKeyPem).subarray(publicKeyDerPrefix.length);
|
|
66
|
-
}
|
|
67
|
-
static randomBytes(size) {
|
|
68
|
-
return buffer_1.Buffer.from((0, utils_js_1.randomBytes)(size));
|
|
69
|
-
}
|
|
70
|
-
static randomPrivateKeyPem() {
|
|
71
|
-
return this.privateKeyToPem(ed25519_js_1.ed25519.utils.randomSecretKey());
|
|
72
|
-
}
|
|
73
|
-
static sign(message, privateKeyPem) {
|
|
74
|
-
return buffer_1.Buffer.from(ed25519_js_1.ed25519.sign(message, this.privateKeyToSeed(privateKeyPem)));
|
|
75
|
-
}
|
|
76
|
-
static toBytes(value) {
|
|
77
|
-
if (value instanceof Uint8Array) {
|
|
78
|
-
return value;
|
|
79
|
-
}
|
|
80
|
-
return buffer_1.Buffer.from(value);
|
|
81
|
-
}
|
|
82
|
-
static verify(signature, message, publicKeyPem) {
|
|
83
|
-
return ed25519_js_1.ed25519.verify(signature, message, this.publicKeyToBytes(publicKeyPem));
|
|
84
|
-
}
|
|
85
|
-
static x25519PublicKey(privateKey) {
|
|
86
|
-
return ed25519_js_1.x25519.getPublicKey(privateKey);
|
|
87
|
-
}
|
|
88
|
-
static x25519SharedSecret(privateKey, publicKey) {
|
|
89
|
-
return ed25519_js_1.x25519.getSharedSecret(privateKey, publicKey);
|
|
90
|
-
}
|
|
91
|
-
static x25519RandomPrivateKey() {
|
|
92
|
-
return ed25519_js_1.x25519.utils.randomSecretKey();
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
exports.CryptoAdapter = CryptoAdapter;
|
|
96
|
-
//# sourceMappingURL=CryptoAdapter.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"CryptoAdapter.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/CryptoAdapter.ts"],"names":[],"mappings":";;;AAAA,kDAA4C;AAC5C,yDAA2D;AAC3D,uDAA8C;AAC9C,mDAAuD;AACvD,qDAKgC;AAChC,mCAAgC;AAEhC,MAAM,mBAAmB,GAAG,IAAA,qBAAU,EAAC,kCAAkC,CAAC,CAAC;AAC3E,MAAM,kBAAkB,GAAG,IAAA,qBAAU,EAAC,0BAA0B,CAAC,CAAC;AAClE,MAAM,YAAY,GAAG,EAAE,CAAC;AAIxB,MAAa,aAAa;IAChB,MAAM,CAAC,QAAQ,CAAC,GAAW;QACjC,MAAM,MAAM,GAAG,GAAG;aACf,OAAO,CAAC,wCAAwC,EAAE,EAAE,CAAC;aACrD,OAAO,CAAC,sCAAsC,EAAE,EAAE,CAAC;aACnD,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAEtB,OAAO,eAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACvC,CAAC;IAEO,MAAM,CAAC,OAAO,CACpB,KAAmC,EACnC,GAAe;QAEf,OAAO,cAAc,KAAK,UAAU,eAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,cAAc,KAAK,SAAS,CAAC;IACtG,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAC5B,GAAe,EACf,EAAc,EACd,UAAsB,EACtB,GAAe;QAEf,OAAO,eAAM,CAAC,IAAI,CAAC,IAAA,YAAG,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAA,sBAAW,EAAC,UAAU,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;IACzE,CAAC;IAEM,MAAM,CAAC,mBAAmB,CAC/B,YAAwB,EACxB,kBAA8B;QAE9B,OAAO,IAAA,gBAAM,EAAC,IAAA,sBAAW,EAAC,YAAY,EAAE,kBAAkB,CAAC,CAAC,CAAC;IAC/D,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAC5B,GAAe,EACf,EAAc,EACd,OAAmB;QAEnB,MAAM,SAAS,GAAG,IAAA,YAAG,EAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEhD,OAAO;YACL,UAAU,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,YAAY,CAAC;YAChD,GAAG,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC,YAAY,CAAC;SACvC,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,YAAY,CAAC,aAAqB;QAC9C,OAAO,IAAI,CAAC,cAAc,CACxB,oBAAO,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAC3D,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,IAAI,CAChB,SAAwB,EACxB,KAA0B;QAE1B,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAClC,MAAM,IAAI,GAAG;YACX,GAAG,EAAH,eAAG;YACH,MAAM,EAAN,gBAAM;YACN,MAAM,EAAN,gBAAM;SACP,CAAC,SAAS,CAAC,CAAC;QAEb,OAAO,IAAA,qBAAU,EAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACjC,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,IAAgB;QAC5C,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE,IAAA,sBAAW,EAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC,CAAC;IAC7E,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,aAAqB;QAClD,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAC3E,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAAC,aAAqB;QACpD,OAAO,oBAAO,CAAC,KAAK,CAAC,kBAAkB,CACrC,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CACrC,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,cAAc,CAAC,SAAqB;QAChD,OAAO,IAAI,CAAC,OAAO,CACjB,YAAY,EACZ,IAAA,sBAAW,EAAC,kBAAkB,EAAE,SAAS,CAAC,CAC3C,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,iBAAiB,CAAC,YAAoB;QAClD,OAAO,oBAAO,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;IACzE,CAAC;IAEM,MAAM,CAAC,gBAAgB,CAAC,YAAoB;QACjD,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,QAAQ,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IACzE,CAAC;IAEM,MAAM,CAAC,WAAW,CAAC,IAAY;QACpC,OAAO,eAAM,CAAC,IAAI,CAAC,IAAA,sBAAW,EAAC,IAAI,CAAC,CAAC,CAAC;IACxC,CAAC;IAEM,MAAM,CAAC,mBAAmB;QAC/B,OAAO,IAAI,CAAC,eAAe,CAAC,oBAAO,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;IAC/D,CAAC;IAEM,MAAM,CAAC,IAAI,CAAC,OAAmB,EAAE,aAAqB;QAC3D,OAAO,eAAM,CAAC,IAAI,CAChB,oBAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC,CAC5D,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,OAAO,CAAC,KAA0B;QAC9C,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;YAChC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,eAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;IAEM,MAAM,CAAC,MAAM,CAClB,SAAqB,EACrB,OAAmB,EACnB,YAAoB;QAEpB,OAAO,oBAAO,CAAC,MAAM,CACnB,SAAS,EACT,OAAO,EACP,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CACpC,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,eAAe,CAAC,UAAsB;QAClD,OAAO,mBAAM,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IACzC,CAAC;IAEM,MAAM,CAAC,kBAAkB,CAC9B,UAAsB,EACtB,SAAqB;QAErB,OAAO,mBAAM,CAAC,eAAe,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAEM,MAAM,CAAC,sBAAsB;QAClC,OAAO,mBAAM,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;IACxC,CAAC;CACF;AA/ID,sCA+IC"}
|