Skip to content

Releases: haskou/value-objects

v3.0.1

Choose a tag to compare

@github-actions github-actions released this 10 Jul 14:40

Changes

  • fix(deps): ⬆️ update dependency @noble/hashes to ^2.2.0

Release details

Pull request notes

This PR contains the following updates:

Package Change Age Confidence
@noble/hashes (source) ^2.0.1^2.2.0 age confidence

Configuration

📅 Schedule: (in timezone Europe/Madrid)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Enabled.

Rebasing: Whenever PR is behind base branch, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

v3.0.0

Choose a tag to compare

@github-actions github-actions released this 10 Jul 14:36

Changes

  • fix(value-objects)!: 💥 Enforce strict validation and immutability

Release details

Pull request notes

Summary

  • Remove TimestampInterval.modifyStart() and modifyEnd() so interval boundaries remain immutable.
  • Reject non-finite numbers and invalid timestamps.
  • Validate real calendar dates and preserve Unix epoch input.
  • Validate UUID structure, version, and RFC variant.
  • Correct Duration day and hour component calculations.

Breaking changes

  • TimestampInterval.modifyStart() and modifyEnd() are no longer available.
  • NumberValueObject, Integer, and Timestamp reject Infinity, -Infinity, and invalid date values.
  • UUID rejects 36-character strings that do not match the standard UUID structure.
  • CalendarDay rejects normalized dates such as 2022-02-31.

Root cause

Several validators delegated to permissive JavaScript behavior. Date normalized nonexistent dates, numeric validation rejected only NaN, and the UUID pattern checked character count without checking field structure. Duration.getHours() used seconds per hour as its modulo, and mutable timestamp intervals left the inherited primitive value out of sync with their boundaries.

Validation

  • yarn test (808 tests)
  • yarn test:coverage (100% statements, branches, functions, and lines)
  • yarn build
  • yarn docs:build
  • Prettier check for all changed files

v2.13.1

Choose a tag to compare

@github-actions github-actions released this 25 Jun 22:20

Changes

  • fix(docs): 🐛 separate documentation sections

Release details

Pull request notes

What changed

  • Split documentation navigation into separate Getting Started, Guide, and Reference sections.
  • Added a Guide index page.
  • Removed the VitePress logo configuration and deleted the unused logo asset.
  • Simplified the reference overview copy.

Why

The previous documentation sidebar mixed unrelated sections, which made the docs feel harder to navigate.

Validation

  • Ran yarn docs:build.

v2.13.0

Choose a tag to compare

@github-actions github-actions released this 25 Jun 19:43

Changes

  • feat(deps): ⬆️ add Renovate dependency updates

Release details

Pull request notes

What changed

  • Added renovate.json so Renovate can open dependency update PRs.
  • Added a Renovate-enabled badge to the README.
  • Updated the README introduction.
  • Updated direct devDependencies currently reported by yarn outdated:
    • @haskou/eslint-config to ^0.1.2
    • @types/node to ^26.0.1
    • vue to ^3.5.39

Why

The package had dependency drift, and Renovate will keep future dependency updates visible as reviewable PRs.

Validation

  • Parsed renovate.json with Node.
  • Ran yarn outdated after updating dependencies.
  • Ran yarn test.
  • Ran yarn build.

v2.12.0

Choose a tag to compare

@github-actions github-actions released this 24 Jun 16:58

Changes

  • feat(eslint): ➕ Add @haskou/eslint-config

Release details

Pull request notes

Replace eslint configurations with generic one.

v2.11.0

Choose a tag to compare

@haskou haskou released this 23 Jun 15:37

Changes

  • docs: 📝 Fix VitePress build and preview commands (#20)

Release details

v2.10.1

Choose a tag to compare

@github-actions github-actions released this 12 Jun 15:10

Changes

  • fix(package): 🐛 Harden npm package configuration

Release details

Pull request notes

Changes

  • Add stricter npm package metadata: exports, engines, sideEffects, and runtime tslib.
  • Require coverage thresholds and remove the test mode that allowed no tests.
  • Generate UUID and ShortId values internally using existing secure random bytes, removing external ID generator dependencies.
  • Modernize lint/Jest/TypeScript config for the latest toolchain.
  • Update and prune dependencies so the package stays lighter.

Why

The published package referenced tslib from dist without declaring it as a runtime dependency, which breaks clean consumers. The package also carried avoidable runtime/dev dependencies and older tooling config.

Validation

  • yarn lint
  • yarn build
  • yarn test:coverage with 100% global coverage
  • npm pack + install in a clean temporary consumer + require package + generate UUID, ShortId, and SymmetricKey
  • yarn outdated returns no outdated packages

v2.10.0

Choose a tag to compare

@github-actions github-actions released this 10 Jun 16:29

Changes

  • feat(crypto): ✨ Raise symmetric payload limit

Release details

Pull request notes

Summary

  • Raise SymmetricKey payload and ciphertext limit from 1 MiB to 8 MiB.
  • Keep asymmetric payload encryption capped at 1 MiB.
  • Validate decoded ciphertext size before strict Base64 regex checks to avoid expensive/fragile validation on oversized payloads.
  • Update README and technical documentation with separate asymmetric and symmetric limits.

Validation

  • yarn lint
  • yarn build
  • yarn test:coverage (100% statements, branches, functions, and lines)

v2.9.0

Choose a tag to compare

@haskou haskou released this 10 Jun 16:14

Changes

  • feat(crypto): ✨ Add OWASP-aligned crypto formats

Release details

Pull request notes

  • Added versioned asymmetric payload encryption with ephemeral X25519, HKDF-SHA256 and AES-256-GCM.
  • Added symmetric AES-256-GCM keys and password-derived keys.
  • Added encrypted private key v3 with scrypt.N16384.r8.p5 + AES-256-GCM.
  • Preserved backward-compatible decrypt support for previous payload formats.
  • Added strict Base64 validation and domain errors for encrypted private key format issues.

v2.8.0

Choose a tag to compare

@github-actions github-actions released this 09 Jun 14:50

Changes

  • feat(crypto): ✨ Add symmetric encrypted payloads

Release details

Pull request notes

Summary

  • Add SymmetricKey for AES-256-GCM payload encryption and decryption.
  • Add typed symmetric/asymmetric encrypted payload value objects and scheme detection.
  • Reuse SymmetricKey internally for EncryptedPrivateKeyV2 while keeping the existing serialized private-key format.
  • Document symmetric encryption, deterministic password-based key derivation, payload formats, and security boundaries.
  • Extend tests to keep global coverage at 100%.

Validation

  • yarn lint
  • yarn test:coverage (100% statements, branches, functions, and lines)
  • yarn build