@haskou/value-objects 2.7.4 → 2.9.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 (87) hide show
  1. package/README.md +73 -10
  2. package/dist/errors/InvalidEncryptedPrivateKeyFormatError.d.ts +5 -0
  3. package/dist/errors/InvalidEncryptedPrivateKeyFormatError.d.ts.map +1 -0
  4. package/dist/errors/InvalidEncryptedPrivateKeyFormatError.js +11 -0
  5. package/dist/errors/InvalidEncryptedPrivateKeyFormatError.js.map +1 -0
  6. package/dist/errors/InvalidPasswordError.d.ts +5 -0
  7. package/dist/errors/InvalidPasswordError.d.ts.map +1 -0
  8. package/dist/errors/InvalidPasswordError.js +11 -0
  9. package/dist/errors/InvalidPasswordError.js.map +1 -0
  10. package/dist/errors/index.d.ts +2 -0
  11. package/dist/errors/index.d.ts.map +1 -1
  12. package/dist/errors/index.js +2 -0
  13. package/dist/errors/index.js.map +1 -1
  14. package/dist/patterns/Assert.d.ts +1 -1
  15. package/dist/patterns/Assert.d.ts.map +1 -1
  16. package/dist/value-objects/Password.d.ts +8 -0
  17. package/dist/value-objects/Password.d.ts.map +1 -0
  18. package/dist/value-objects/Password.js +28 -0
  19. package/dist/value-objects/Password.js.map +1 -0
  20. package/dist/value-objects/crypto/AsymmetricEncryptedPayload.d.ts +5 -0
  21. package/dist/value-objects/crypto/AsymmetricEncryptedPayload.d.ts.map +1 -0
  22. package/dist/value-objects/crypto/AsymmetricEncryptedPayload.js +11 -0
  23. package/dist/value-objects/crypto/AsymmetricEncryptedPayload.js.map +1 -0
  24. package/dist/value-objects/crypto/CryptoAdapter.d.ts +3 -2
  25. package/dist/value-objects/crypto/CryptoAdapter.d.ts.map +1 -1
  26. package/dist/value-objects/crypto/CryptoAdapter.js +9 -4
  27. package/dist/value-objects/crypto/CryptoAdapter.js.map +1 -1
  28. package/dist/value-objects/crypto/EncryptedKeyPair.d.ts +4 -4
  29. package/dist/value-objects/crypto/EncryptedKeyPair.d.ts.map +1 -1
  30. package/dist/value-objects/crypto/EncryptedKeyPair.js.map +1 -1
  31. package/dist/value-objects/crypto/EncryptedPayload.d.ts +2 -0
  32. package/dist/value-objects/crypto/EncryptedPayload.d.ts.map +1 -1
  33. package/dist/value-objects/crypto/EncryptedPayload.js +15 -0
  34. package/dist/value-objects/crypto/EncryptedPayload.js.map +1 -1
  35. package/dist/value-objects/crypto/EncryptedPrivateKey.d.ts +3 -2
  36. package/dist/value-objects/crypto/EncryptedPrivateKey.d.ts.map +1 -1
  37. package/dist/value-objects/crypto/EncryptedPrivateKey.js +6 -4
  38. package/dist/value-objects/crypto/EncryptedPrivateKey.js.map +1 -1
  39. package/dist/value-objects/crypto/KeyPair.d.ts +2 -2
  40. package/dist/value-objects/crypto/KeyPair.d.ts.map +1 -1
  41. package/dist/value-objects/crypto/KeyPair.js +1 -1
  42. package/dist/value-objects/crypto/KeyPair.js.map +1 -1
  43. package/dist/value-objects/crypto/PrivateKey.d.ts +6 -3
  44. package/dist/value-objects/crypto/PrivateKey.d.ts.map +1 -1
  45. package/dist/value-objects/crypto/PrivateKey.js +43 -31
  46. package/dist/value-objects/crypto/PrivateKey.js.map +1 -1
  47. package/dist/value-objects/crypto/PublicKey.d.ts +5 -2
  48. package/dist/value-objects/crypto/PublicKey.d.ts.map +1 -1
  49. package/dist/value-objects/crypto/PublicKey.js +11 -4
  50. package/dist/value-objects/crypto/PublicKey.js.map +1 -1
  51. package/dist/value-objects/crypto/StrictBase64.d.ts +15 -0
  52. package/dist/value-objects/crypto/StrictBase64.d.ts.map +1 -0
  53. package/dist/value-objects/crypto/StrictBase64.js +36 -0
  54. package/dist/value-objects/crypto/StrictBase64.js.map +1 -0
  55. package/dist/value-objects/crypto/SymmetricEncryptedPayload.d.ts +5 -0
  56. package/dist/value-objects/crypto/SymmetricEncryptedPayload.d.ts.map +1 -0
  57. package/dist/value-objects/crypto/SymmetricEncryptedPayload.js +11 -0
  58. package/dist/value-objects/crypto/SymmetricEncryptedPayload.js.map +1 -0
  59. package/dist/value-objects/crypto/SymmetricKey.d.ts +49 -0
  60. package/dist/value-objects/crypto/SymmetricKey.d.ts.map +1 -0
  61. package/dist/value-objects/crypto/SymmetricKey.js +149 -0
  62. package/dist/value-objects/crypto/SymmetricKey.js.map +1 -0
  63. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.d.ts +2 -2
  64. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.d.ts.map +1 -1
  65. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.js.map +1 -1
  66. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.d.ts +7 -5
  67. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.d.ts.map +1 -1
  68. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.js +41 -17
  69. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.js.map +1 -1
  70. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.d.ts +24 -0
  71. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.d.ts.map +1 -0
  72. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.js +105 -0
  73. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.js.map +1 -0
  74. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.d.ts +2 -2
  75. package/dist/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.d.ts.map +1 -1
  76. package/dist/value-objects/crypto/index.d.ts +3 -0
  77. package/dist/value-objects/crypto/index.d.ts.map +1 -1
  78. package/dist/value-objects/crypto/index.js +3 -0
  79. package/dist/value-objects/crypto/index.js.map +1 -1
  80. package/dist/value-objects/index.d.ts +1 -0
  81. package/dist/value-objects/index.d.ts.map +1 -1
  82. package/dist/value-objects/index.js +1 -0
  83. package/dist/value-objects/index.js.map +1 -1
  84. package/dist/value-objects/time/DayOfWeek.d.ts.map +1 -1
  85. package/dist/value-objects/time/DayOfWeek.js +2 -3
  86. package/dist/value-objects/time/DayOfWeek.js.map +1 -1
  87. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptedPrivateKeyLegacy.js","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAGhC,oDAAiD;AACjD,8CAA2C;AAC3C,yDAAsD;AACtD,6EAA0E;AAE1E,MAAa,yBAA0B,SAAQ,uDAA0B;IAC/D,MAAM,CAAU,iBAAiB,GAAG,MAAM,CAAC;IAC3C,MAAM,CAAU,gBAAgB,GAAG,QAAQ,CAAC;IAC5C,MAAM,CAAU,UAAU,GAAG,EAAE,CAAC;IAChC,MAAM,CAAU,MAAM,GAAG,aAAa,CAAC;IACvC,MAAM,CAAU,cAAc,GAAG,CAAC,CAAC;IAEpC,OAAO,CAAC,KAAe;QAC5B,OAAO,KAAK,CAAC,MAAM,KAAK,yBAAyB,CAAC,cAAc,CAAC;IACnE,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,KAAe,EACf,QAAoC;QAEpC,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;QACtD,MAAM,UAAU,GAAG,eAAM,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,eAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,eAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,eAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE1C,MAAM,GAAG,GAAG,MAAM,mCAAgB,CAAC,WAAW,CAC5C,QAAQ,CAAC,OAAO,EAAE,EAClB,IAAI,EACJ,yBAAyB,CAAC,iBAAiB,EAC3C,yBAAyB,CAAC,UAAU,EACpC,yBAAyB,CAAC,gBAAgB,CAC3C,CAAC;QAEF,MAAM,SAAS,GAAG,6BAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QAE3E,OAAO,IAAI,uBAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC;IAEM,iBAAiB;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;;AApCH,8DAqCC"}
1
+ {"version":3,"file":"EncryptedPrivateKeyLegacy.js","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyLegacy.ts"],"names":[],"mappings":";;;AAAA,mCAAgC;AAEhC,oDAAiD;AACjD,8CAA2C;AAE3C,yDAAsD;AACtD,6EAA0E;AAE1E,MAAa,yBAA0B,SAAQ,uDAA0B;IAC/D,MAAM,CAAU,iBAAiB,GAAG,MAAM,CAAC;IAC3C,MAAM,CAAU,gBAAgB,GAAG,QAAQ,CAAC;IAC5C,MAAM,CAAU,UAAU,GAAG,EAAE,CAAC;IAChC,MAAM,CAAU,MAAM,GAAG,aAAa,CAAC;IACvC,MAAM,CAAU,cAAc,GAAG,CAAC,CAAC;IAEpC,OAAO,CAAC,KAAe;QAC5B,OAAO,KAAK,CAAC,MAAM,KAAK,yBAAyB,CAAC,cAAc,CAAC;IACnE,CAAC;IAEM,KAAK,CAAC,OAAO,CAClB,KAAe,EACf,QAAwB;QAExB,MAAM,CAAC,aAAa,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,KAAK,CAAC;QACtD,MAAM,UAAU,GAAG,eAAM,CAAC,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;QACxD,MAAM,EAAE,GAAG,eAAM,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;QACxC,MAAM,IAAI,GAAG,eAAM,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;QAC5C,MAAM,GAAG,GAAG,eAAM,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;QAE1C,MAAM,GAAG,GAAG,MAAM,mCAAgB,CAAC,WAAW,CAC5C,QAAQ,CAAC,OAAO,EAAE,EAClB,IAAI,EACJ,yBAAyB,CAAC,iBAAiB,EAC3C,yBAAyB,CAAC,UAAU,EACpC,yBAAyB,CAAC,gBAAgB,CAC3C,CAAC;QAEF,MAAM,SAAS,GAAG,6BAAa,CAAC,gBAAgB,CAAC,GAAG,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QAE3E,OAAO,IAAI,uBAAU,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9C,CAAC;IAEM,iBAAiB;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;;AApCH,8DAqCC"}
@@ -1,5 +1,5 @@
1
- import { StringValueObject } from '../../StringValueObject';
2
1
  import { PrivateKey } from '../PrivateKey';
2
+ import { CryptoPassword } from '../SymmetricKey';
3
3
  import { EncryptedPrivateKeyVersion } from './EncryptedPrivateKeyVersion';
4
4
  export declare class EncryptedPrivateKeyV2 extends EncryptedPrivateKeyVersion {
5
5
  private static readonly VERSION;
@@ -8,13 +8,15 @@ export declare class EncryptedPrivateKeyV2 extends EncryptedPrivateKeyVersion {
8
8
  private static readonly SCRYPT_R;
9
9
  private static readonly SCRYPT_P;
10
10
  private static readonly SALT_ENTROPY;
11
- private static readonly IV_ENTROPY;
12
- private static readonly KEY_LENGTH;
13
11
  private static readonly CIPHER;
14
12
  private static readonly EXPECTED_PARTS;
13
+ private static readonly SYMMETRIC_PAYLOAD_VERSION;
15
14
  private static hasSupportedScryptParameters;
16
- static encrypt(privateKey: PrivateKey, password: string | StringValueObject): Promise<string>;
15
+ private static deriveSymmetricKey;
16
+ private static toSymmetricPayload;
17
+ static encrypt(privateKey: PrivateKey, password: CryptoPassword): Promise<string>;
17
18
  matches(parts: string[]): boolean;
18
- decrypt(parts: string[], password: string | StringValueObject): Promise<PrivateKey>;
19
+ decrypt(parts: string[], password: CryptoPassword): Promise<PrivateKey>;
20
+ needsReEncryption(): boolean;
19
21
  }
20
22
  //# sourceMappingURL=EncryptedPrivateKeyV2.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptedPrivateKeyV2.d.ts","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,qBAAa,qBAAsB,SAAQ,0BAA0B;IACnE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAQ;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAY;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAS;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAK;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAK;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAM;IAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAM;IACxC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAK;IAE3C,OAAO,CAAC,MAAM,CAAC,4BAA4B;WAQvB,OAAO,CACzB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GACnC,OAAO,CAAC,MAAM,CAAC;IAoCX,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAS3B,OAAO,CAClB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GACnC,OAAO,CAAC,UAAU,CAAC;CAwBvB"}
1
+ {"version":3,"file":"EncryptedPrivateKeyV2.d.ts","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,OAAO,EAAE,cAAc,EAAgB,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,qBAAa,qBAAsB,SAAQ,0BAA0B;IACnE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAQ;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAY;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAS;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAK;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAK;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAM;IAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAK;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAQ;IAEzD,OAAO,CAAC,MAAM,CAAC,4BAA4B;mBAQtB,kBAAkB;IAQvC,OAAO,CAAC,MAAM,CAAC,kBAAkB;WAkBb,OAAO,CACzB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC;IA8BX,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAS3B,OAAO,CAClB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,UAAU,CAAC;IAyBf,iBAAiB,IAAI,OAAO;CAGpC"}
@@ -2,8 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EncryptedPrivateKeyV2 = void 0;
4
4
  const buffer_1 = require("buffer");
5
- const CryptoAdapter_1 = require("../CryptoAdapter");
5
+ const InvalidEncryptedPrivateKeyFormatError_1 = require("../../../errors/InvalidEncryptedPrivateKeyFormatError");
6
+ const patterns_1 = require("../../../patterns");
6
7
  const PrivateKey_1 = require("../PrivateKey");
8
+ const SymmetricEncryptedPayload_1 = require("../SymmetricEncryptedPayload");
9
+ const SymmetricKey_1 = require("../SymmetricKey");
7
10
  const CryptoDerivation_1 = require("./CryptoDerivation");
8
11
  const EncryptedPrivateKeyVersion_1 = require("./EncryptedPrivateKeyVersion");
9
12
  class EncryptedPrivateKeyV2 extends EncryptedPrivateKeyVersion_1.EncryptedPrivateKeyVersion {
@@ -13,24 +16,43 @@ class EncryptedPrivateKeyV2 extends EncryptedPrivateKeyVersion_1.EncryptedPrivat
13
16
  static SCRYPT_R = 8;
14
17
  static SCRYPT_P = 1;
15
18
  static SALT_ENTROPY = 16;
16
- static IV_ENTROPY = 12;
17
- static KEY_LENGTH = 32;
18
19
  static CIPHER = 'aes-256-gcm';
19
20
  static EXPECTED_PARTS = 9;
21
+ static SYMMETRIC_PAYLOAD_VERSION = 'v1';
20
22
  static hasSupportedScryptParameters(parts) {
21
23
  return (parts[2] === `N${EncryptedPrivateKeyV2.SCRYPT_N}` &&
22
24
  parts[3] === `r${EncryptedPrivateKeyV2.SCRYPT_R}` &&
23
25
  parts[4] === `p${EncryptedPrivateKeyV2.SCRYPT_P}`);
24
26
  }
27
+ static async deriveSymmetricKey(password, salt, options) {
28
+ return SymmetricKey_1.SymmetricKey.fromPassword(password, { ...options, salt });
29
+ }
30
+ static toSymmetricPayload(parts) {
31
+ const iv = parts[6];
32
+ const tag = parts[7];
33
+ const cipherText = parts[8];
34
+ return new SymmetricEncryptedPayload_1.SymmetricEncryptedPayload([
35
+ EncryptedPrivateKeyV2.SYMMETRIC_PAYLOAD_VERSION,
36
+ EncryptedPrivateKeyV2.CIPHER,
37
+ iv,
38
+ cipherText,
39
+ tag,
40
+ ].join('.'));
41
+ }
25
42
  static async encrypt(privateKey, password) {
26
43
  const salt = await CryptoDerivation_1.CryptoDerivation.randomBytesAsync(EncryptedPrivateKeyV2.SALT_ENTROPY);
27
- const key = await CryptoDerivation_1.CryptoDerivation.scryptAsync(password.valueOf(), salt, EncryptedPrivateKeyV2.KEY_LENGTH, {
44
+ const key = await EncryptedPrivateKeyV2.deriveSymmetricKey(password, salt, {
28
45
  N: EncryptedPrivateKeyV2.SCRYPT_N,
29
46
  p: EncryptedPrivateKeyV2.SCRYPT_P,
30
47
  r: EncryptedPrivateKeyV2.SCRYPT_R,
31
48
  });
32
- const iv = await CryptoDerivation_1.CryptoDerivation.randomBytesAsync(EncryptedPrivateKeyV2.IV_ENTROPY);
33
- const { cipherText, tag } = CryptoAdapter_1.CryptoAdapter.encryptAes256Gcm(key, iv, buffer_1.Buffer.from(privateKey.valueOf()));
49
+ const symmetricPayload = key
50
+ .encrypt(privateKey.valueOf())
51
+ .valueOf()
52
+ .split('.');
53
+ const iv = symmetricPayload[2];
54
+ const cipherText = symmetricPayload[3];
55
+ const tag = symmetricPayload[4];
34
56
  return [
35
57
  EncryptedPrivateKeyV2.VERSION,
36
58
  EncryptedPrivateKeyV2.KDF,
@@ -38,9 +60,9 @@ class EncryptedPrivateKeyV2 extends EncryptedPrivateKeyVersion_1.EncryptedPrivat
38
60
  `r${EncryptedPrivateKeyV2.SCRYPT_R}`,
39
61
  `p${EncryptedPrivateKeyV2.SCRYPT_P}`,
40
62
  salt.toString('base64'),
41
- iv.toString('base64'),
42
- buffer_1.Buffer.from(tag).toString('base64'),
43
- buffer_1.Buffer.from(cipherText).toString('base64'),
63
+ iv,
64
+ tag,
65
+ cipherText,
44
66
  ].join('.');
45
67
  }
46
68
  matches(parts) {
@@ -50,20 +72,22 @@ class EncryptedPrivateKeyV2 extends EncryptedPrivateKeyVersion_1.EncryptedPrivat
50
72
  EncryptedPrivateKeyV2.hasSupportedScryptParameters(parts));
51
73
  }
52
74
  async decrypt(parts, password) {
53
- if (!EncryptedPrivateKeyV2.hasSupportedScryptParameters(parts)) {
54
- throw new Error('Unsupported encrypted private key parameters');
55
- }
75
+ (0, patterns_1.assert)(EncryptedPrivateKeyV2.hasSupportedScryptParameters(parts), new InvalidEncryptedPrivateKeyFormatError_1.InvalidEncryptedPrivateKeyFormatError('Unsupported encrypted private key parameters'));
56
76
  const N = parseInt(parts[2].slice(1), 10);
57
77
  const r = parseInt(parts[3].slice(1), 10);
58
78
  const p = parseInt(parts[4].slice(1), 10);
59
79
  const salt = buffer_1.Buffer.from(parts[5], 'base64');
60
- const iv = buffer_1.Buffer.from(parts[6], 'base64');
61
- const tag = buffer_1.Buffer.from(parts[7], 'base64');
62
- const cipherText = buffer_1.Buffer.from(parts[8], 'base64');
63
- const key = await CryptoDerivation_1.CryptoDerivation.scryptAsync(password.valueOf(), salt, EncryptedPrivateKeyV2.KEY_LENGTH, { N, p, r });
64
- const decrypted = CryptoAdapter_1.CryptoAdapter.decryptAes256Gcm(key, iv, cipherText, tag);
80
+ const key = await EncryptedPrivateKeyV2.deriveSymmetricKey(password, salt, {
81
+ N,
82
+ p,
83
+ r,
84
+ });
85
+ const decrypted = key.decrypt(EncryptedPrivateKeyV2.toSymmetricPayload(parts));
65
86
  return new PrivateKey_1.PrivateKey(decrypted.toString());
66
87
  }
88
+ needsReEncryption() {
89
+ return true;
90
+ }
67
91
  }
68
92
  exports.EncryptedPrivateKeyV2 = EncryptedPrivateKeyV2;
69
93
  //# sourceMappingURL=EncryptedPrivateKeyV2.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptedPrivateKeyV2.js","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EncryptedPrivateKeyV2.js","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV2.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import { PrivateKey } from '../PrivateKey';
2
+ import { CryptoPassword } from '../SymmetricKey';
3
+ import { EncryptedPrivateKeyVersion } from './EncryptedPrivateKeyVersion';
4
+ export declare class EncryptedPrivateKeyV3 extends EncryptedPrivateKeyVersion {
5
+ private static readonly VERSION;
6
+ private static readonly KDF;
7
+ private static readonly SCRYPT_N;
8
+ private static readonly SCRYPT_R;
9
+ private static readonly SCRYPT_P;
10
+ private static readonly SALT_ENTROPY;
11
+ private static readonly CIPHER;
12
+ private static readonly EXPECTED_PARTS;
13
+ private static readonly SYMMETRIC_PAYLOAD_VERSION;
14
+ private static hasSupportedScryptParameters;
15
+ private static getHeaderParts;
16
+ private static getAad;
17
+ private static ensureSaltIsValid;
18
+ private static deriveSymmetricKey;
19
+ private static toSymmetricPayload;
20
+ static encrypt(privateKey: PrivateKey, password: CryptoPassword): Promise<string>;
21
+ matches(parts: string[]): boolean;
22
+ decrypt(parts: string[], password: CryptoPassword): Promise<PrivateKey>;
23
+ }
24
+ //# sourceMappingURL=EncryptedPrivateKeyV3.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EncryptedPrivateKeyV3.d.ts","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAG3C,OAAO,EAAE,cAAc,EAAgB,MAAM,iBAAiB,CAAC;AAE/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAE1E,qBAAa,qBAAsB,SAAQ,0BAA0B;IACnE,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAQ;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAY;IACvC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAS;IACzC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAK;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAK;IACrC,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAM;IAC1C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAiB;IAC/C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAK;IAC3C,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAQ;IAEzD,OAAO,CAAC,MAAM,CAAC,4BAA4B;IAQ3C,OAAO,CAAC,MAAM,CAAC,cAAc;IAU7B,OAAO,CAAC,MAAM,CAAC,MAAM;IAIrB,OAAO,CAAC,MAAM,CAAC,iBAAiB;mBAUX,kBAAkB;IAQvC,OAAO,CAAC,MAAM,CAAC,kBAAkB;WAkBb,OAAO,CACzB,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,MAAM,CAAC;IA4BX,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;IAS3B,OAAO,CAClB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,UAAU,CAAC;CA2BvB"}
@@ -0,0 +1,105 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EncryptedPrivateKeyV3 = void 0;
4
+ const InvalidEncryptedPrivateKeyFormatError_1 = require("../../../errors/InvalidEncryptedPrivateKeyFormatError");
5
+ const patterns_1 = require("../../../patterns");
6
+ const PrivateKey_1 = require("../PrivateKey");
7
+ const StrictBase64_1 = require("../StrictBase64");
8
+ const SymmetricEncryptedPayload_1 = require("../SymmetricEncryptedPayload");
9
+ const SymmetricKey_1 = require("../SymmetricKey");
10
+ const CryptoDerivation_1 = require("./CryptoDerivation");
11
+ const EncryptedPrivateKeyVersion_1 = require("./EncryptedPrivateKeyVersion");
12
+ class EncryptedPrivateKeyV3 extends EncryptedPrivateKeyVersion_1.EncryptedPrivateKeyVersion {
13
+ static VERSION = 'v3';
14
+ static KDF = 'scrypt';
15
+ static SCRYPT_N = 16384;
16
+ static SCRYPT_R = 8;
17
+ static SCRYPT_P = 5;
18
+ static SALT_ENTROPY = 16;
19
+ static CIPHER = 'aes-256-gcm';
20
+ static EXPECTED_PARTS = 9;
21
+ static SYMMETRIC_PAYLOAD_VERSION = 'v1';
22
+ static hasSupportedScryptParameters(parts) {
23
+ return (parts[2] === `N${EncryptedPrivateKeyV3.SCRYPT_N}` &&
24
+ parts[3] === `r${EncryptedPrivateKeyV3.SCRYPT_R}` &&
25
+ parts[4] === `p${EncryptedPrivateKeyV3.SCRYPT_P}`);
26
+ }
27
+ static getHeaderParts() {
28
+ return [
29
+ EncryptedPrivateKeyV3.VERSION,
30
+ EncryptedPrivateKeyV3.KDF,
31
+ `N${EncryptedPrivateKeyV3.SCRYPT_N}`,
32
+ `r${EncryptedPrivateKeyV3.SCRYPT_R}`,
33
+ `p${EncryptedPrivateKeyV3.SCRYPT_P}`,
34
+ ];
35
+ }
36
+ static getAad(parts) {
37
+ return parts.slice(0, 5).join('.');
38
+ }
39
+ static ensureSaltIsValid(saltB64) {
40
+ return StrictBase64_1.StrictBase64.decodeCanonicalFixedLength(saltB64, new InvalidEncryptedPrivateKeyFormatError_1.InvalidEncryptedPrivateKeyFormatError('Invalid encrypted private key salt'), EncryptedPrivateKeyV3.SALT_ENTROPY);
41
+ }
42
+ static async deriveSymmetricKey(password, salt, options) {
43
+ return SymmetricKey_1.SymmetricKey.fromPassword(password, { ...options, salt });
44
+ }
45
+ static toSymmetricPayload(parts) {
46
+ const iv = parts[6];
47
+ const tag = parts[7];
48
+ const cipherText = parts[8];
49
+ return new SymmetricEncryptedPayload_1.SymmetricEncryptedPayload([
50
+ EncryptedPrivateKeyV3.SYMMETRIC_PAYLOAD_VERSION,
51
+ EncryptedPrivateKeyV3.CIPHER,
52
+ iv,
53
+ cipherText,
54
+ tag,
55
+ ].join('.'));
56
+ }
57
+ static async encrypt(privateKey, password) {
58
+ const salt = await CryptoDerivation_1.CryptoDerivation.randomBytesAsync(EncryptedPrivateKeyV3.SALT_ENTROPY);
59
+ const key = await EncryptedPrivateKeyV3.deriveSymmetricKey(password, salt, {
60
+ N: EncryptedPrivateKeyV3.SCRYPT_N,
61
+ p: EncryptedPrivateKeyV3.SCRYPT_P,
62
+ r: EncryptedPrivateKeyV3.SCRYPT_R,
63
+ });
64
+ const symmetricPayload = key
65
+ .encrypt(privateKey.valueOf(), {
66
+ aad: EncryptedPrivateKeyV3.getHeaderParts().join('.'),
67
+ })
68
+ .valueOf()
69
+ .split('.');
70
+ const iv = symmetricPayload[2];
71
+ const cipherText = symmetricPayload[3];
72
+ const tag = symmetricPayload[4];
73
+ return [
74
+ ...EncryptedPrivateKeyV3.getHeaderParts(),
75
+ salt.toString('base64'),
76
+ iv,
77
+ tag,
78
+ cipherText,
79
+ ].join('.');
80
+ }
81
+ matches(parts) {
82
+ return (parts.length === EncryptedPrivateKeyV3.EXPECTED_PARTS &&
83
+ parts[0] === EncryptedPrivateKeyV3.VERSION &&
84
+ parts[1] === EncryptedPrivateKeyV3.KDF &&
85
+ EncryptedPrivateKeyV3.hasSupportedScryptParameters(parts));
86
+ }
87
+ async decrypt(parts, password) {
88
+ (0, patterns_1.assert)(EncryptedPrivateKeyV3.hasSupportedScryptParameters(parts), new InvalidEncryptedPrivateKeyFormatError_1.InvalidEncryptedPrivateKeyFormatError('Unsupported encrypted private key parameters'));
89
+ const N = parseInt(parts[2].slice(1), 10);
90
+ const r = parseInt(parts[3].slice(1), 10);
91
+ const p = parseInt(parts[4].slice(1), 10);
92
+ const salt = EncryptedPrivateKeyV3.ensureSaltIsValid(parts[5]);
93
+ const key = await EncryptedPrivateKeyV3.deriveSymmetricKey(password, salt, {
94
+ N,
95
+ p,
96
+ r,
97
+ });
98
+ const decrypted = key.decrypt(EncryptedPrivateKeyV3.toSymmetricPayload(parts), {
99
+ aad: EncryptedPrivateKeyV3.getAad(parts),
100
+ });
101
+ return new PrivateKey_1.PrivateKey(decrypted.toString());
102
+ }
103
+ }
104
+ exports.EncryptedPrivateKeyV3 = EncryptedPrivateKeyV3;
105
+ //# sourceMappingURL=EncryptedPrivateKeyV3.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EncryptedPrivateKeyV3.js","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyV3.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,8 @@
1
- import { StringValueObject } from '../../StringValueObject';
2
1
  import { PrivateKey } from '../PrivateKey';
2
+ import { CryptoPassword } from '../SymmetricKey';
3
3
  export declare abstract class EncryptedPrivateKeyVersion {
4
4
  abstract matches(parts: string[]): boolean;
5
- abstract decrypt(parts: string[], password: string | StringValueObject): Promise<PrivateKey>;
5
+ abstract decrypt(parts: string[], password: CryptoPassword): Promise<PrivateKey>;
6
6
  needsReEncryption(): boolean;
7
7
  }
8
8
  //# sourceMappingURL=EncryptedPrivateKeyVersion.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"EncryptedPrivateKeyVersion.d.ts","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAE3C,8BAAsB,0BAA0B;aAC9B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;aACjC,OAAO,CACrB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,MAAM,GAAG,iBAAiB,GACnC,OAAO,CAAC,UAAU,CAAC;IAEf,iBAAiB,IAAI,OAAO;CAGpC"}
1
+ {"version":3,"file":"EncryptedPrivateKeyVersion.d.ts","sourceRoot":"","sources":["../../../../src/value-objects/crypto/encrypted-private-key/EncryptedPrivateKeyVersion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEjD,8BAAsB,0BAA0B;aAC9B,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO;aACjC,OAAO,CACrB,KAAK,EAAE,MAAM,EAAE,EACf,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,UAAU,CAAC;IAEf,iBAAiB,IAAI,OAAO;CAGpC"}
@@ -1,3 +1,4 @@
1
+ export * from './AsymmetricEncryptedPayload';
1
2
  export * from './EncryptedKeyPair';
2
3
  export * from './EncryptedPayload';
3
4
  export * from './EncryptedPrivateKey';
@@ -6,4 +7,6 @@ export * from './KeyPair';
6
7
  export * from './PrivateKey';
7
8
  export * from './PublicKey';
8
9
  export * from './Signature';
10
+ export * from './SymmetricEncryptedPayload';
11
+ export * from './SymmetricKey';
9
12
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/index.ts"],"names":[],"mappings":"AAAA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/value-objects/crypto/index.ts"],"names":[],"mappings":"AAAA,cAAc,8BAA8B,CAAC;AAC7C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,uBAAuB,CAAC;AACtC,cAAc,OAAO,CAAC;AACtB,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,6BAA6B,CAAC;AAC5C,cAAc,gBAAgB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./AsymmetricEncryptedPayload"), exports);
4
5
  tslib_1.__exportStar(require("./EncryptedKeyPair"), exports);
5
6
  tslib_1.__exportStar(require("./EncryptedPayload"), exports);
6
7
  tslib_1.__exportStar(require("./EncryptedPrivateKey"), exports);
@@ -9,4 +10,6 @@ tslib_1.__exportStar(require("./KeyPair"), exports);
9
10
  tslib_1.__exportStar(require("./PrivateKey"), exports);
10
11
  tslib_1.__exportStar(require("./PublicKey"), exports);
11
12
  tslib_1.__exportStar(require("./Signature"), exports);
13
+ tslib_1.__exportStar(require("./SymmetricEncryptedPayload"), exports);
14
+ tslib_1.__exportStar(require("./SymmetricKey"), exports);
12
15
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/index.ts"],"names":[],"mappings":";;;AAAA,6DAAmC;AACnC,6DAAmC;AACnC,gEAAsC;AACtC,gDAAsB;AACtB,oDAA0B;AAC1B,uDAA6B;AAC7B,sDAA4B;AAC5B,sDAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/value-objects/crypto/index.ts"],"names":[],"mappings":";;;AAAA,uEAA6C;AAC7C,6DAAmC;AACnC,6DAAmC;AACnC,gEAAsC;AACtC,gDAAsB;AACtB,oDAA0B;AAC1B,uDAA6B;AAC7B,sDAA4B;AAC5B,sDAA4B;AAC5B,sEAA4C;AAC5C,yDAA+B"}
@@ -9,6 +9,7 @@ export * from './Email';
9
9
  export * from './Enum';
10
10
  export * from './Integer';
11
11
  export * from './NumberValueObject';
12
+ export * from './Password';
12
13
  export * from './PositiveNumber';
13
14
  export * from './StringValueObject';
14
15
  export * from './NullObject';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/value-objects/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/value-objects/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC;AACzB,cAAc,OAAO,CAAC;AACtB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,SAAS,CAAC;AACxB,cAAc,SAAS,CAAC;AACxB,cAAc,QAAQ,CAAC;AACvB,cAAc,WAAW,CAAC;AAC1B,cAAc,qBAAqB,CAAC;AACpC,cAAc,YAAY,CAAC;AAC3B,cAAc,kBAAkB,CAAC;AACjC,cAAc,qBAAqB,CAAC;AACpC,cAAc,cAAc,CAAC;AAC7B,cAAc,qBAAqB,CAAC;AACpC,cAAc,eAAe,CAAC"}
@@ -12,6 +12,7 @@ tslib_1.__exportStar(require("./Email"), exports);
12
12
  tslib_1.__exportStar(require("./Enum"), exports);
13
13
  tslib_1.__exportStar(require("./Integer"), exports);
14
14
  tslib_1.__exportStar(require("./NumberValueObject"), exports);
15
+ tslib_1.__exportStar(require("./Password"), exports);
15
16
  tslib_1.__exportStar(require("./PositiveNumber"), exports);
16
17
  tslib_1.__exportStar(require("./StringValueObject"), exports);
17
18
  tslib_1.__exportStar(require("./NullObject"), exports);
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/value-objects/index.ts"],"names":[],"mappings":";;;AAAA,wDAA8B;AAC9B,mDAAyB;AACzB,mDAAyB;AACzB,gDAAsB;AACtB,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB;AACxB,kDAAwB;AACxB,iDAAuB;AACvB,oDAA0B;AAC1B,8DAAoC;AACpC,2DAAiC;AACjC,8DAAoC;AACpC,uDAA6B;AAC7B,8DAAoC;AACpC,wDAA8B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/value-objects/index.ts"],"names":[],"mappings":";;;AAAA,wDAA8B;AAC9B,mDAAyB;AACzB,mDAAyB;AACzB,gDAAsB;AACtB,kDAAwB;AACxB,iDAAuB;AACvB,kDAAwB;AACxB,kDAAwB;AACxB,iDAAuB;AACvB,oDAA0B;AAC1B,8DAAoC;AACpC,qDAA2B;AAC3B,2DAAiC;AACjC,8DAAoC;AACpC,uDAA6B;AAC7B,8DAAoC;AACpC,wDAA8B"}
@@ -1 +1 @@
1
- {"version":3,"file":"DayOfWeek.d.ts","sourceRoot":"","sources":["../../../src/value-objects/time/DayOfWeek.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AAED,eAAO,MAAM,qBAAqB;;;;;;;;CAQjC,CAAC;AAEF,qBAAa,SAAU,SAAQ,IAAI;IACjC,OAAc,MAAM,YAAqC;IACzD,OAAc,OAAO,YAAsC;IAC3D,OAAc,SAAS,YAAwC;IAC/D,OAAc,QAAQ,YAAuC;IAC7D,OAAc,MAAM,YAAqC;IACzD,OAAc,QAAQ,YAAuC;IAC7D,OAAc,MAAM,YAAqC;WAE3C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;WAalC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS;IAMrD,SAAS,IAAI,MAAM,EAAE;IAIrB,QAAQ,IAAI,MAAM;CAG1B"}
1
+ {"version":3,"file":"DayOfWeek.d.ts","sourceRoot":"","sources":["../../../src/value-objects/time/DayOfWeek.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAC/B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,SAAS,cAAc;IACvB,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,MAAM,WAAW;CAClB;AAED,eAAO,MAAM,qBAAqB;;;;;;;;CAQjC,CAAC;AAEF,qBAAa,SAAU,SAAQ,IAAI;IACjC,OAAc,MAAM,YAAqC;IACzD,OAAc,OAAO,YAAsC;IAC3D,OAAc,SAAS,YAAwC;IAC/D,OAAc,QAAQ,YAAuC;IAC7D,OAAc,MAAM,YAAqC;IACzD,OAAc,QAAQ,YAAuC;IAC7D,OAAc,MAAM,YAAqC;WAE3C,UAAU,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS;WAWlC,aAAa,CAAC,SAAS,EAAE,SAAS,GAAG,SAAS;IAMrD,SAAS,IAAI,MAAM,EAAE;IAIrB,QAAQ,IAAI,MAAM;CAG1B"}
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.DayOfWeek = exports.timeStampDayToDaysMap = exports.EDaysOfWeek = void 0;
4
4
  const InvalidDayError_1 = require("../../errors/InvalidDayError");
5
+ const patterns_1 = require("../../patterns");
5
6
  const Enum_1 = require("../Enum");
6
7
  var EDaysOfWeek;
7
8
  (function (EDaysOfWeek) {
@@ -32,9 +33,7 @@ class DayOfWeek extends Enum_1.Enum {
32
33
  static SUNDAY = new DayOfWeek(EDaysOfWeek.SUNDAY);
33
34
  static fromNumber(day) {
34
35
  const [eDay] = Object.entries(exports.timeStampDayToDaysMap).find(([, value]) => value === day) || [];
35
- if (!eDay) {
36
- throw new InvalidDayError_1.InvalidDayError(eDay);
37
- }
36
+ (0, patterns_1.assert)(eDay, new InvalidDayError_1.InvalidDayError(eDay));
38
37
  return new DayOfWeek(eDay);
39
38
  }
40
39
  static fromTimestamp(timestamp) {
@@ -1 +1 @@
1
- {"version":3,"file":"DayOfWeek.js","sourceRoot":"","sources":["../../../src/value-objects/time/DayOfWeek.ts"],"names":[],"mappings":";;;AAAA,kEAA+D;AAC/D,kCAA+B;AAG/B,IAAY,WAQX;AARD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,kCAAmB,CAAA;IACnB,sCAAuB,CAAA;IACvB,oCAAqB,CAAA;IACrB,gCAAiB,CAAA;IACjB,oCAAqB,CAAA;IACrB,gCAAiB,CAAA;AACnB,CAAC,EARW,WAAW,2BAAX,WAAW,QAQtB;AAEY,QAAA,qBAAqB,GAAG;IACnC,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;IACvB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;IACvB,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;IACvB,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzB,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IACxB,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAa,SAAU,SAAQ,WAAI;IAC1B,MAAM,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,CAAC,OAAO,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAElD,MAAM,CAAC,UAAU,CAAC,GAAW;QAClC,MAAM,CAAC,IAAI,CAAC,GACV,MAAM,CAAC,OAAO,CAAC,6BAAqB,CAAC,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,GAAG,CAC7B,IAAI,EAAE,CAAC;QAEV,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,MAAM,IAAI,iCAAe,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC;QAED,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,SAAoB;QAC9C,MAAM,eAAe,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;QAEjD,OAAO,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC;IAEM,SAAS;QACd,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAEM,QAAQ;QACb,OAAO,6BAAqB,CAAC,IAAI,CAAC,KAAoB,CAAC,CAAC;IAC1D,CAAC;;AAlCH,8BAmCC"}
1
+ {"version":3,"file":"DayOfWeek.js","sourceRoot":"","sources":["../../../src/value-objects/time/DayOfWeek.ts"],"names":[],"mappings":";;;AAAA,kEAA+D;AAC/D,6CAAwC;AACxC,kCAA+B;AAG/B,IAAY,WAQX;AARD,WAAY,WAAW;IACrB,gCAAiB,CAAA;IACjB,kCAAmB,CAAA;IACnB,sCAAuB,CAAA;IACvB,oCAAqB,CAAA;IACrB,gCAAiB,CAAA;IACjB,oCAAqB,CAAA;IACrB,gCAAiB,CAAA;AACnB,CAAC,EARW,WAAW,2BAAX,WAAW,QAQtB;AAEY,QAAA,qBAAqB,GAAG;IACnC,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;IACvB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;IACvB,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzB,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;IACvB,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,CAAC;IACzB,CAAC,WAAW,CAAC,OAAO,CAAC,EAAE,CAAC;IACxB,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;CAC3B,CAAC;AAEF,MAAa,SAAU,SAAQ,WAAI;IAC1B,MAAM,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,CAAC,OAAO,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IACpD,MAAM,CAAC,SAAS,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;IACxD,MAAM,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IACtD,MAAM,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAElD,MAAM,CAAC,UAAU,CAAC,GAAW;QAClC,MAAM,CAAC,IAAI,CAAC,GACV,MAAM,CAAC,OAAO,CAAC,6BAAqB,CAAC,CAAC,IAAI,CACxC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,GAAG,CAC7B,IAAI,EAAE,CAAC;QAEV,IAAA,iBAAM,EAAC,IAAI,EAAE,IAAI,iCAAe,CAAC,IAAI,CAAC,CAAC,CAAC;QAExC,OAAO,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAEM,MAAM,CAAC,aAAa,CAAC,SAAoB;QAC9C,MAAM,eAAe,GAAG,SAAS,CAAC,YAAY,EAAE,CAAC;QAEjD,OAAO,SAAS,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;IAC/C,CAAC;IAEM,SAAS;QACd,OAAO,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAEM,QAAQ;QACb,OAAO,6BAAqB,CAAC,IAAI,CAAC,KAAoB,CAAC,CAAC;IAC1D,CAAC;;AAhCH,8BAiCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@haskou/value-objects",
3
- "version": "2.7.4",
3
+ "version": "2.9.0",
4
4
  "main": "dist/index.js",
5
5
  "types": "dist/index.d.ts",
6
6
  "files": [