Socket
Socket
Sign inDemoInstall

@halcyon-agile/node-event-sourcing

Package Overview
Dependencies
40
Maintainers
1
Versions
47
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

Comparing version 1.0.37 to 1.0.38

6

dist/AggregateRoot.d.ts

@@ -1,2 +0,2 @@

import { EventDto } from "./Dto";
import { CreateEventDto, EventDto } from "./Dto";
export default class AggregateRoot {

@@ -7,5 +7,7 @@ aggregateId: string;

snapshotIn: number;
createEvent(eventData: EventDto): Promise<void>;
payload: unknown;
createEvent(createEventData: CreateEventDto): Promise<void>;
retrieve(aggregateId: string): Promise<this>;
retrieveAll(aggregateId: string): Promise<this>;
apply(event: EventDto): void;
}

@@ -7,2 +7,3 @@ "use strict";

const EventStore_1 = __importDefault(require("./EventStore"));
const rfdc_1 = __importDefault(require("rfdc"));
class AggregateRoot {

@@ -14,9 +15,9 @@ constructor() {

}
async createEvent(eventData) {
this.apply(eventData);
eventData = {
...eventData,
async createEvent(createEventData) {
const eventData = {
...createEventData,
aggregateId: this.aggregateId,
version: this.version,
};
this.apply(eventData);
await EventStore_1.default.createEvent(eventData);

@@ -26,3 +27,4 @@ this.version++;

this.events.length &&
Number.isInteger(this.events[0].version / this.snapshotIn)) {
Number.isInteger(this.version / this.snapshotIn) &&
this.version >= this.snapshotIn) {
const payload = JSON.parse(JSON.stringify(this));

@@ -51,5 +53,8 @@ delete payload.events;

events = (await EventStore_1.default.query(aggregateId, {
limit: this.snapshotIn + 10,
limit: this.snapshotIn + 1,
reverse: true,
})).Items;
events?.sort(function (a, b) {
return Number(a.version) - Number(b.version);
});
}

@@ -59,5 +64,19 @@ else {

}
events?.sort(function (a, b) {
return Number(a.version) - Number(b.version);
events?.forEach((event) => {
this.version = Number(event.version) + 1;
this.apply({
aggregateId: String(event.aggregateId),
version: Number(event.version),
event: String(event.event),
payload: event.payload,
});
});
return this;
}
async retrieveAll(aggregateId) {
this.aggregateId = aggregateId;
this.events = [];
this.payload = undefined;
let events = [];
events = (await EventStore_1.default.query(aggregateId)).Items;
events?.forEach((event) => {

@@ -75,10 +94,11 @@ this.version = Number(event.version) + 1;

apply(event) {
const eventData = (0, rfdc_1.default)()(event);
// @ts-ignore
if (typeof this[`apply${event.event}`] === "function") {
// @ts-ignore
this[`apply${event.event}`](event.payload);
this[`apply${event.event}`]({ ...eventData.payload });
}
this.events.push(event);
this.events.push({ ...eventData });
}
}
exports.default = AggregateRoot;

@@ -0,1 +1,5 @@

interface CreateEventDto {
event: string;
payload: any;
}
interface EventDto {

@@ -20,2 +24,2 @@ aggregateId: string;

}
export { EventDto, EventHandlersClassType, ListenerHandlerClassType };
export { CreateEventDto, EventDto, EventHandlersClassType, ListenerHandlerClassType, };

@@ -15,2 +15,3 @@ import DynamoDB from "aws-sdk/clients/dynamodb";

Put: {
ConditionExpression: string;
TableName: string;

@@ -17,0 +18,0 @@ Item: {

@@ -80,2 +80,3 @@ "use strict";

Put: {
ConditionExpression: "attribute_not_exists(aggregateId)",
TableName: this.tableName,

@@ -94,2 +95,3 @@ Item: {

.put({
ConditionExpression: "attribute_not_exists(aggregateId)",
TableName: this.tableName,

@@ -96,0 +98,0 @@ Item: {

@@ -31,3 +31,3 @@ "use strict";

return;
const event = Helper_1.tryParseJSONObject(message.value?.toString());
const event = (0, Helper_1.tryParseJSONObject)(message.value?.toString());
if (process.env.KAFKA_LOG_LEVEL?.toUpperCase() === "INFO") {

@@ -34,0 +34,0 @@ console.info(`Listener ${this.groupId} consuming ${topic} in partition ${partition}`);

@@ -33,3 +33,3 @@ "use strict";

return;
const event = Helper_1.tryParseJSONObject(message.value?.toString());
const event = (0, Helper_1.tryParseJSONObject)(message.value?.toString());
if (process.env.KAFKA_LOG_LEVEL?.toUpperCase() === "INFO") {

@@ -36,0 +36,0 @@ console.info(`Projector ${this.groupId}_${this.projector.name} consuming ${topic} in partition ${partition}`);

"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {

@@ -6,0 +10,0 @@ if (k2 === undefined) k2 = k;

{
"name": "@halcyon-agile/node-event-sourcing",
"version": "1.0.37",
"version": "1.0.38",
"description": "> Opinionated OOP based node.js event sourcing library inspired by laravel-event-sourcing",
"main": "dist/index.js",
"type": "module",
"files": [

@@ -20,25 +20,27 @@ "dist/*"

"devDependencies": {
"@types/async": "^3.2.7",
"@types/jest": "^26.0.24",
"@typescript-eslint/eslint-plugin": "^4.29.0",
"@typescript-eslint/parser": "^4.29.0",
"dotenv": "^10.0.0",
"eslint": "^7.32.0",
"eslint-config-prettier": "^8.3.0",
"eslint-plugin-prettier": "^3.4.0",
"jest": "^27.0.6",
"nanoid": "^3.1.23",
"prettier": "^2.3.2",
"ts-jest": "^27.0.4",
"ts-node": "^10.2.1",
"typescript": "^4.3.5"
"@types/async": "^3.2.13",
"@types/jest": "^28.1.3",
"@typescript-eslint/eslint-plugin": "^5.29.0",
"@typescript-eslint/parser": "^5.29.0",
"dotenv": "^16.0.1",
"eslint": "^8.18.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-prettier": "^4.0.0",
"jest": "^28.1.1",
"nanoid": "^4.0.0",
"prettier": "^2.7.1",
"ts-jest": "^28.0.5",
"ts-node": "^10.8.1",
"typescript": "^4.7.4"
},
"dependencies": {
"async": "^3.2.1",
"aws-sdk": "^2.951.0",
"kafkajs": "^1.15.0"
"async": "^3.2.4",
"aws-sdk": "^2.1160.0",
"kafkajs": "^2.0.2",
"rfdc": "^1.3.0"
},
"directories": {
"example": "examples",
"test": "test"
"src": "src",
"tests": "tests",
"event-publisher": "event-publisher"
},

@@ -45,0 +47,0 @@ "repository": {

@@ -7,6 +7,5 @@ # NODE EVENT SOURCING

- [x] Reliable event publisher
- [x] Reliable event publishing
- [x] Built for microservices
- [x] CQRS
- [ ] Dead letter queue support

@@ -13,0 +12,0 @@ ## Current Limitations

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc