45872ffc2aa8a2df128b2d8e1779a26d2e271314f733c06cbae10393e20545ca.json raw

   1  {"ast":null,"code":"/**\n * Base class for all domain events.\n * Domain events capture significant occurrences in the domain that\n * domain experts care about.\n */\nexport class DomainEvent {\n  occurredAt;\n  eventId;\n  constructor() {\n    this.occurredAt = new Date();\n    this.eventId = crypto.randomUUID();\n  }\n}\n/**\n * Base class for aggregate roots that can raise domain events.\n */\nexport class AggregateRoot {\n  _domainEvents = [];\n  addDomainEvent(event) {\n    this._domainEvents.push(event);\n  }\n  pullDomainEvents() {\n    const events = [...this._domainEvents];\n    this._domainEvents = [];\n    return events;\n  }\n  /**\n   * Check if there are any pending domain events.\n   */\n  hasPendingEvents() {\n    return this._domainEvents.length > 0;\n  }\n}","map":null,"metadata":{},"sourceType":"module","externalDependencies":[]}