UNPKG

@typescript-eda/domain

Version:

Core domain primitives for event-driven architecture

52 lines 1.87 kB
"use strict"; // Copyright 2021-2024 The Connect Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. Object.defineProperty(exports, "__esModule", { value: true }); exports.ValueObject = void 0; /** * @fileoverview This file defines the ValueObject class, a base class for objects that are defined by their properties, not by an identifier. * @author rydnr * @module domain/value-object */ /** * Represents a value object, which is an object defined by its properties rather than a unique identifier. * @template T The type of the properties of the value object. */ class ValueObject { props; /** * Creates an instance of ValueObject. * @param {T} props The properties of the value object. * @protected */ constructor(props) { this.props = props; } /** * Compares this value object with another for equality. * @param {ValueObject<T>} [vo] The value object to compare with. * @returns {boolean} True if the value objects are equal, false otherwise. */ equals(vo) { if (vo === null || vo === undefined) { return false; } if (vo.props === undefined) { return false; } return JSON.stringify(this.props) === JSON.stringify(vo.props); } } exports.ValueObject = ValueObject; //# sourceMappingURL=value-object.js.map