{"_id":"@codeforbreakfast/eventsourcing-aggregates","_rev":"26-478a4d6e3e183f04ab654e68b0806cef","name":"@codeforbreakfast/eventsourcing-aggregates","dist-tags":{"latest":"0.9.4"},"versions":{"0.2.0":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.2.0","keywords":["event-sourcing","cqrs","aggregates","domain-driven-design","ddd","effect","functional-programming"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.2.0","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"fae8b38a9d7b39ea91ff8e3a0b174ee3c5e223c1","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.2.0.tgz","fileCount":6,"integrity":"sha512-yLAi78DbcGesBz0IYxfB/ruGolB19Jzd8UD2AHBb0LY062LAZnhnhPOryfic9Nrf9h7v+WEytJUEuxGgr77WTQ==","signatures":[{"sig":"MEYCIQC7+AXTW2VTaHOBOeOWZQcad+ggqccQ28r1TMu3HT08KwIhAJZ4pcpl/AowWCMUH+M+y/yHpA8aBVhLyRNEvD+nH8sE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14445},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"a1cd158103971be49c0fc80bf6cec2efdd9785d6","scripts":{"lint":"eslint . --ext .ts,.tsx","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"bun run clean && bun run build","publish:package":"bun publish --access public"},"_npmUser":{"name":"graemef","email":"graemef@gmail.com"},"repository":{"url":"git+https://github.com/codeforbreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"10.8.2","description":"Aggregate patterns for event sourcing with Effect","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"@codeforbreakfast/eventsourcing-store":"workspace:*","@codeforbreakfast/eventsourcing-projections":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.17.14","eslint":"9.36.0","vitest":"3.2.4","typescript":"5.9.2","@types/node":"24.5.2"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.2.0_1758449814195_0.6211205246355251","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.3.0","keywords":["event-sourcing","cqrs","aggregates","domain-driven-design","ddd","effect","functional-programming"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.3.0","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"67296265d0cfaad11cfc98cd291246756a002e20","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.3.0.tgz","fileCount":6,"integrity":"sha512-OBfsFihCngC2FJLFJXBbopCeNQaFDB4h76BX9OueWxU3aPr0j6aXd37qg5/vh4AvEsq8E+92erqUL8MUdr0qew==","signatures":[{"sig":"MEYCIQDsOzUv7+GV1rL1hsET/LdfpsowhdKsO+zfLM/KArBIkQIhAKwlxEQRX8Bsyxuwx5fUUVCk7qwHZo39XHqSezMcbyk9","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":14396},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"fb64ff2d03d1d1940de91d498ce77963573ea2e5","scripts":{"lint":"eslint . --ext .ts,.tsx","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"bun run clean && bun run build","publish:package":"bun publish --access public"},"_npmUser":{"name":"graemef","email":"graemef@gmail.com"},"repository":{"url":"git+https://github.com/codeforbreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"10.8.2","description":"Aggregate patterns for event sourcing with Effect","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"@codeforbreakfast/eventsourcing-store":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.17.14","eslint":"9.36.0","vitest":"3.2.4","typescript":"5.9.2","@types/node":"24.5.2"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.3.0_1758455504737_0.9233318182402817","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.4.0","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.4.0","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"ebf02e51337007faa89bdaf5a3460795454d35e5","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.4.0.tgz","fileCount":7,"integrity":"sha512-ih8Wh/RMqkD0d0DY4PI9e+lJqBnPBJLgW2B9oo09Bd6QV9lpmD1CW6w8LjApSlZ3I3+h5JCDun/D++utdga2Jw==","signatures":[{"sig":"MEUCIHxYg/1hnGe6pZsURIGFP1gg+J2tyW6i9+e7bc9++shnAiEAqWbxBcdcXeFwtOKUGrEs0BXsCOMG3ev9uuJEXYVryp4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26217},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"91a605488848987629e10ba81fdec39412844f8b","scripts":{"lint":"eslint . --ext .ts,.tsx","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"bun run clean && bun run build","publish:package":"bun publish --access public"},"_npmUser":{"name":"graemef","email":"graemef@gmail.com"},"repository":{"url":"git+https://github.com/codeforbreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"10.8.2","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"@codeforbreakfast/eventsourcing-store":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.17.14","eslint":"9.36.0","vitest":"3.2.4","typescript":"5.9.2","@types/node":"24.5.2"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.4.0_1758457381297_0.862385958458536","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.4.1","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.4.1","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"ce9fc75c3b19739d23802742637e06f5cca66521","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.4.1.tgz","fileCount":7,"integrity":"sha512-4LtksenT5xNoxgpFevrkTuYm/Mll2ezP0leNxu1Q4D+Zsx5x3BAc6AZjUxS3xhyJZ4GsZ1d6zhcef8X2IDtu0Q==","signatures":[{"sig":"MEUCIBv7zEpoqegS0SjxXB0N27m1bHyIucSftwTYQ7eXvaoyAiEAob8meJRAKo/DOdG2QFE7ge5VP9wG/vflBkHlj4XdkzE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26217},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"d66a71f2237dac8eb5a2b344fa6bc474ec6cce72","scripts":{"lint":"eslint . --ext .ts,.tsx","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"bun run clean && bun run build","publish:package":"bun publish --access public"},"_npmUser":{"name":"graemef","email":"graemef@gmail.com"},"repository":{"url":"git+https://github.com/codeforbreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"10.8.2","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"@codeforbreakfast/eventsourcing-store":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.17.14","eslint":"9.36.0","vitest":"3.2.4","typescript":"5.9.2","@types/node":"24.5.2"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.4.1_1758459655955_0.10355086151735504","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.5.0","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.5.0","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"b64507a0b0d34a2c57cec30b17db2cc58a158c32","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.5.0.tgz","fileCount":7,"integrity":"sha512-1axpOwxhtS28Q3hJ09oHnI6TpGNp6q62midEc0wbdjA3nG8Q/UPCH4n+8zlOnPk5x45Ht4FXBWZZbIdXeO78yg==","signatures":[{"sig":"MEUCIQCm6hWELzJx0UXogef658rzACx2c3wDHszgbTpHFwcxVwIgFDxnvBC2RyzeLwSdkbsKCKaDtAdUI8gFlzlrZ+U5/kM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":26199},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"cb3f8719089467198209dafda72aedfa33f910db","scripts":{"lint":"eslint . --ext .ts,.tsx","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"bun run clean && bun run build","publish:package":"bun publish --access public"},"_npmUser":{"name":"graemef","email":"graemef@gmail.com"},"repository":{"url":"git+https://github.com/codeforbreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"10.8.2","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"@codeforbreakfast/eventsourcing-store":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.17.14","eslint":"9.36.0","vitest":"3.2.4","typescript":"5.9.2","@types/node":"24.5.2"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.5.0_1758462658243_0.32536982083481236","host":"s3://npm-registry-packages-npm-production"}},"0.5.1":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.5.1","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.5.1","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"8f0aca2eb926e7c43392c097554971a758147053","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.5.1.tgz","fileCount":7,"integrity":"sha512-JEHTjo5TgBjfluppIuF6BIUiAehyV2BMqkY3CVbDRE3+GLyouOeo5uHzJTnK5VVSOrRKnOaGiT/1/uqP5H35Rw==","signatures":[{"sig":"MEQCIC55Ex8fDlVpqxQEIQjZ54Pij1kWONJhVyutuk7iLnNoAiBeFjj7wGRvdldVxqlmnWEe9CVmAQ48pH5HW7B+/ar7MQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30933},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"d2171855d7ad9b419abb1b213586048a0199001e","scripts":{"lint":"eslint . --ext .ts,.tsx","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"bun run clean && bun run build","publish:package":"bun publish --access public"},"_npmUser":{"name":"graemef","email":"graemef@gmail.com"},"repository":{"url":"git+https://github.com/codeforbreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"10.8.2","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"@codeforbreakfast/eventsourcing-store":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.17.14","eslint":"9.36.0","vitest":"3.2.4","typescript":"5.9.2","@types/node":"24.5.2"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.5.1_1758469474685_0.45445000412780345","host":"s3://npm-registry-packages-npm-production"}},"0.5.2":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.5.2","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":"Code for Breakfast","license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.5.2","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"de6dfb1562eb564644adb4ce887e4e14c6ae46c9","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.5.2.tgz","fileCount":7,"integrity":"sha512-Tu68hY237CYlKlUYJViOy7Mvr9eipIArlSwAK3hPzhPBWn+pJGSt9TPzNMuanrxSDdNdLkAWDBub3Q1bDg7SAg==","signatures":[{"sig":"MEUCIQC9Ac8CF+wEFgbFDcVN0uAtPkiGsL1og8/pfWEIr6QMhwIgAsYA5+suZxI+tWeJOrIeEnj1uD/v+byuy/O0nhJbKHM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":30927},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"de6dfb1562eb564644adb4ce887e4e14c6ae46c9","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"lint":"eslint . --ext .ts,.tsx","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"bun run clean && bun run build","publish:package":"bun publish --access public"},"_npmUser":{"name":"graemef","email":"graemef@gmail.com"},"_integrity":"sha512-Tu68hY237CYlKlUYJViOy7Mvr9eipIArlSwAK3hPzhPBWn+pJGSt9TPzNMuanrxSDdNdLkAWDBub3Q1bDg7SAg==","repository":{"url":"https://github.com/codeforbreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"10.8.3","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","dependencies":{"@codeforbreakfast/eventsourcing-store":"0.6.2"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.17.14","eslint":"9.36.0","vitest":"3.2.4","typescript":"5.9.2","@types/node":"24.5.2"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.5.2_1758470928526_0.47692538553286545","host":"s3://npm-registry-packages-npm-production"}},"0.5.4":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.5.4","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":"Code for Breakfast","license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.5.4","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"7638883951545d5e0e41ea751f6ef57f1b60ad02","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.5.4.tgz","fileCount":15,"integrity":"sha512-2rOZnaObnsX9oRhhw9czuAxpOtKnaG5UpipNJOHVCZbHUqBCyScd8Lj/EQ+VQTCry1ZLaT5tuzewLqlK/xfTmQ==","signatures":[{"sig":"MEQCICIvgR6W9L+EmlRR5oWgf2n/YeM90gOOQb4ubC1ddkM8AiBntBcWG8QOTJv+aR8PFC2LS+3jLP7O4fr1YOPpA+Wfuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41034},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"7638883951545d5e0e41ea751f6ef57f1b60ad02","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"lint":"eslint . --ext .ts,.tsx","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build --force","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"bun run build","publish:package":"bun publish --access public"},"_npmUser":{"name":"graemef","email":"graemef@gmail.com"},"_integrity":"sha512-2rOZnaObnsX9oRhhw9czuAxpOtKnaG5UpipNJOHVCZbHUqBCyScd8Lj/EQ+VQTCry1ZLaT5tuzewLqlK/xfTmQ==","repository":{"url":"https://github.com/codeforbreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"10.8.3","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","dependencies":{"@codeforbreakfast/eventsourcing-store":"0.6.4"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.17.14","eslint":"9.36.0","vitest":"3.2.4","typescript":"5.9.2","@types/node":"24.5.2"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.5.4_1758474861550_0.19329352445827208","host":"s3://npm-registry-packages-npm-production"}},"0.5.5":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.5.5","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":"Code for Breakfast","license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.5.5","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"beef8bd9875d2d7859a920df67ac59830f1c3d0e","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.5.5.tgz","fileCount":15,"integrity":"sha512-T6b9Zbv3PyWCocLFN/Sk3UAijHkAIULMjWFGnCPwILjXH1BZbbtUXr9MFw3hmkhRHHp0ygO620fhE+5W3Cgnkg==","signatures":[{"sig":"MEUCIQCgRQkjnHuILy68IKKPQHaw/1+/JbpTQC3L2WLDRS8pvwIgPQ7n1GfZ0RNzDtifkplsDNFl8ByBWIHlUfrW0fxHjaw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41034},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"beef8bd9875d2d7859a920df67ac59830f1c3d0e","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"lint":"eslint . --ext .ts,.tsx","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build --force","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"bun run build","publish:package":"bun publish --access public"},"_npmUser":{"name":"graemef","email":"graemef@gmail.com"},"_integrity":"sha512-T6b9Zbv3PyWCocLFN/Sk3UAijHkAIULMjWFGnCPwILjXH1BZbbtUXr9MFw3hmkhRHHp0ygO620fhE+5W3Cgnkg==","repository":{"url":"https://github.com/codeforbreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"10.8.3","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","dependencies":{"@codeforbreakfast/eventsourcing-store":"0.6.5"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.17.14","eslint":"9.36.0","vitest":"3.2.4","typescript":"5.9.2","@types/node":"24.5.2"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.5.5_1758476922235_0.6156522286848092","host":"s3://npm-registry-packages-npm-production"}},"0.5.6":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.5.6","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":"Code for Breakfast","license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.5.6","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"8e2a149fcbd491ae75e8617f35390be2342ad41a","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.5.6.tgz","fileCount":15,"integrity":"sha512-BwZd/FCTDhFqCRJwmw/hxmw8ljzgRePJFJ35hXb/BSgv/+Z9ZtfRGBBMMWuceel9++HYroxjV6PT8Ee7cEmY2w==","signatures":[{"sig":"MEUCIErRTxM+1K7eu43O9Jw5mtCEBvDCeCi3gUC9turvmex0AiEAqBe1eYMP6hvPcWzCYfSwZJu33vXi0PMK0OZ8C4PwjBg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41034},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","shasum":"8e2a149fcbd491ae75e8617f35390be2342ad41a","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"lint":"eslint . --ext .ts,.tsx","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build --force","clean":"rm -rf dist","typecheck":"tsc --noEmit","prepublishOnly":"bun run build","publish:package":"bun publish --access public"},"_npmUser":{"name":"graemef","email":"graemef@gmail.com"},"_integrity":"sha512-BwZd/FCTDhFqCRJwmw/hxmw8ljzgRePJFJ35hXb/BSgv/+Z9ZtfRGBBMMWuceel9++HYroxjV6PT8Ee7cEmY2w==","repository":{"url":"https://github.com/codeforbreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"10.8.3","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"24.3.0","dependencies":{"@codeforbreakfast/eventsourcing-store":"0.6.6"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.17.14","eslint":"9.36.0","vitest":"3.2.4","typescript":"5.9.2","@types/node":"24.5.2"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.5.6_1758697845073_0.6783081451319517","host":"s3://npm-registry-packages-npm-production"}},"0.5.7":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.5.7","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.5.7","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"0e9525ceea731fdf2331db53570934830e55d389","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.5.7.tgz","fileCount":15,"integrity":"sha512-YCiRYI3rV/m/O3NTo8Py2r6Y6y3/wm7MX7Rm62PFIrhEpAlL7h6P9zg3pUy3uSBeS0DjlxCIJbOshFzDX/Rx3w==","signatures":[{"sig":"MEYCIQDDToQUCJ4JN+Qpf/vn7pP3kPkCcJurWn60R7tY6CYapwIhANGXpmbUXKphg7dKDZqZempsypSPE/q0C6TKwcB3LbNR","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":41001},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"9510ad686c016cbbf486f3572a78ce3b8e031131","scripts":{"lint":"eslint . --ext .ts,.tsx","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build --force","clean":"rm -rf dist","typecheck":"tsc --noEmit","publish:package":"npm publish --access public"},"_npmUser":{"name":"graemef","email":"graemef@gmail.com"},"repository":{"url":"git+https://github.com/codeforbreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"10.8.2","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"@codeforbreakfast/eventsourcing-store":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.17.14","eslint":"9.36.0","vitest":"3.2.4","typescript":"5.9.2","@types/node":"24.5.2"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.5.7_1758706997556_0.7401813300214923","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.6.0","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.6.0","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"982aa986a1a389ad44efe4ef1d344ffab9bc4e2e","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.6.0.tgz","fileCount":33,"integrity":"sha512-3wwBd2NrdzQNmKulF/svsa7pFY5pDmnhUPBR5qw3daNp2aCuYW2j5/bZWZome3n5gMhvbVt8ZMcvXdC1ZNwR/g==","signatures":[{"sig":"MEYCIQDL+dKyLYcWZ9pS/6SP8pELAwNeDPUtRI91aPnOm+pN/AIhAMWomzf81iCtFGkHq6UyQ+izoVOP0U9bzVozPKg7rYVM","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":66140},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"18e324d0d06e1524923d166cf7f6d84958155b5a","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"bun test","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build --force","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"bun test --watch","publish:package":"npm publish --access public"},"_npmUser":{"name":"graemef","email":"graemef@gmail.com"},"repository":{"url":"git+https://github.com/codeforbreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"10.8.2","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"@codeforbreakfast/eventsourcing-store":"workspace:*","@codeforbreakfast/eventsourcing-commands":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.17.14","eslint":"9.36.0","typescript":"5.9.2","@types/node":"24.5.2","@codeforbreakfast/buntest":"workspace:*","@codeforbreakfast/eventsourcing-store-inmemory":"workspace:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.6.0_1759054233110_0.21493811051801837","host":"s3://npm-registry-packages-npm-production"}},"0.6.3":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.6.3","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.6.3","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"70c197bdc159c65ee4be1b50570215b5c0709408","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.6.3.tgz","fileCount":33,"integrity":"sha512-BMUBQDn2QtNDHoXdU5FxhMZqxU18ZnWZqip8HphsWmoaqWLxlaHEo7OaI2UHLCAQB9xY3sPntD1bfc8Go0vTfQ==","signatures":[{"sig":"MEUCIDrOiyp4UB4E7kwecymKIc18cePMIXQs/qefqVNOFgjMAiEAwxZ64lZrgirCzUQXgQG/koIKkVpQd/gQfnyvJidrKbQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-aggregates@0.6.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":66302},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"b51721207db43b5ba8b9228b79cfa36219146005","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"bun test","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build --force","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"bun test --watch","validate:pack":"bun pm pack --dry-run","publish:package":"npm publish --access public","check:publishable":"npm view $npm_package_name@$npm_package_version version >/dev/null 2>&1 && exit 1 || exit 0"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8a39a153-f3f3-4d69-b634-6436185a06af"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"11.6.1","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"@codeforbreakfast/eventsourcing-store":"workspace:*","@codeforbreakfast/eventsourcing-commands":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.17.14","eslint":"9.36.0","typescript":"5.9.2","@types/node":"24.5.2","@codeforbreakfast/buntest":"workspace:*","@codeforbreakfast/eventsourcing-store-inmemory":"workspace:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.6.3_1759068014093_0.9545399012695697","host":"s3://npm-registry-packages-npm-production"}},"0.6.4":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.6.4","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.6.4","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"3c0fce658d25569732a86ec75d8b3111c223d00a","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.6.4.tgz","fileCount":33,"integrity":"sha512-qr/6rEmyjpurGxoydTu3aLS2urmdd1VaY06P09VqV9gbi8i3G6srZG7yXrsD+hfNEwYOk4jU+4Q1bdsF48UP0g==","signatures":[{"sig":"MEYCIQC+mr3XkCJj9qsOKGdIF6OGNtPTKah7J3ZdvbfBIQnERQIhANjhnkUFQ593g1FHwgR1KiEMp83uj7wpZWc/ady6cDn+","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-aggregates@0.6.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":66302},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"4272dfe3fcd478fa8ece441ac05b36cd4089a1d1","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"bun test","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build --force","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"bun test --watch","validate:pack":"bun pm pack --dry-run","publish:package":"npm publish --access public","check:publishable":"npm view $npm_package_name@$npm_package_version version >/dev/null 2>&1 && exit 1 || exit 0"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8a39a153-f3f3-4d69-b634-6436185a06af"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"11.6.1","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"@codeforbreakfast/eventsourcing-store":"workspace:*","@codeforbreakfast/eventsourcing-commands":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.17.14","eslint":"9.36.0","typescript":"5.9.2","@types/node":"24.5.2","@codeforbreakfast/buntest":"workspace:*","@codeforbreakfast/eventsourcing-store-inmemory":"workspace:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.6.4_1759077247513_0.38790541463157124","host":"s3://npm-registry-packages-npm-production"}},"0.6.5":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.6.5","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.6.5","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"e0af2aedc10099b52afafa22829155de70398cc7","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.6.5.tgz","fileCount":33,"integrity":"sha512-ZsLDBrvhBTx+56X0iLJpDVIU1EQ0/1j0stkLH0hWtU0NvHTGf1yX77K/kp26GR846QtcgKSZE/I15B+PfJKj3w==","signatures":[{"sig":"MEYCIQCRBPTiVPTqc8uSIpOcroEiOvM+/owmhnSWRgbnZhTWUgIhAK2cZIUsxJxRaNXdLswR4FpG79Bra3KTZO5DXmUAiOTQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-aggregates@0.6.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":67199},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"35106a1245f942e488807eea940f69a8a8af3b13","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"bun test","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build --force","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"bun test --watch","validate:pack":"bun pm pack --dry-run","publish:package":"npm publish --access public","check:publishable":"npm view $npm_package_name@$npm_package_version version >/dev/null 2>&1 && exit 1 || exit 0"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8a39a153-f3f3-4d69-b634-6436185a06af"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"11.6.1","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.0.1","@codeforbreakfast/eventsourcing-store":"workspace:*","@codeforbreakfast/eventsourcing-commands":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.17.14","eslint":"9.36.0","typescript":"5.9.2","@types/node":"24.5.2","@codeforbreakfast/buntest":"workspace:*","@codeforbreakfast/eventsourcing-store-inmemory":"workspace:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.6.5_1759154766165_0.8485976507721225","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.7.0","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.7.0","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"242dd8afd6d3df386a41db3d905ef6e644d73da5","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.7.0.tgz","fileCount":33,"integrity":"sha512-F2F45jYn6GkucSZvEoTPzZwc7q3a+EqA07sWncC/vdN2lDKPx1KlLZeBXlv0Fex+ZzFusvJQDKz+2CuEtLyMkQ==","signatures":[{"sig":"MEUCIQCcK1m4cIodsc9CLU4M5/XmNrhyMk5QxcOrHe5wQgohVwIgfDokv3YbYiCqNnclHOxaxndluNOoYbdARj8G2NyVU1A=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-aggregates@0.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":79084},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"25c05b1804fe30d707ce5508addc73813ed6ebfc","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"bun test","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build --force","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"bun test --watch","validate:docs":"bun ../../scripts/validate-markdown-examples.ts","validate:pack":"bun pm pack --dry-run","publish:package":"npm publish --access public","check:publishable":"npm view $npm_package_name@$npm_package_version version >/dev/null 2>&1 && exit 1 || exit 0"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8a39a153-f3f3-4d69-b634-6436185a06af"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"11.6.1","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.0.1","@codeforbreakfast/eventsourcing-store":"workspace:*","@codeforbreakfast/eventsourcing-commands":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.18.1","eslint":"9.36.0","typescript":"5.9.3","@types/node":"24.6.2","@codeforbreakfast/buntest":"workspace:*","@codeforbreakfast/eventsourcing-store-inmemory":"workspace:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.7.0_1759677754350_0.6852173248884019","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.7.1","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.7.1","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"3f8d7346aff1d2ebc26623dd69ca1a1241412ed3","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.7.1.tgz","fileCount":33,"integrity":"sha512-KLbe8MAK8yIqLkTAlWyqCkrzrStJYCFFSAjowmQFQ5S4mKPLbeSZ8k7eesVPDRN6zxA1Mp4FP9qSn8TNlMIu1Q==","signatures":[{"sig":"MEQCIByAw110mN/sqDGSPwEc0yMpyPGR44TACMmJtzpxAVn5AiAM2WBB5L8sWvpf4ywfhgO+EnCrRhpBNhLxFg5/ugL3oQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-aggregates@0.7.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":79084},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"64395671cd2e58b786dc4f009dca9a0db2e22214","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"bun test","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build --force","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"bun test --watch","validate:docs":"bun ../../scripts/validate-markdown-examples.ts","validate:pack":"bun pm pack --dry-run","publish:package":"npm publish --access public","check:publishable":"npm view $npm_package_name@$npm_package_version version >/dev/null 2>&1 && exit 1 || exit 0"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8a39a153-f3f3-4d69-b634-6436185a06af"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"11.6.1","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.0.1","@codeforbreakfast/eventsourcing-store":"workspace:*","@codeforbreakfast/eventsourcing-commands":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.18.1","eslint":"9.36.0","typescript":"5.9.3","@types/node":"24.6.2","@codeforbreakfast/buntest":"workspace:*","@codeforbreakfast/eventsourcing-store-inmemory":"workspace:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.7.1_1759689713236_0.3802651999342239","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.7.2","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.7.2","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"02b7be632784cfbaadb6333b400da0bd3d60b4db","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.7.2.tgz","fileCount":33,"integrity":"sha512-WPc3gbZEocYJTdj8AD2cjf5cTgmawdWE3PkyhOPNHsGb1BMPyPQwwyPM7t1Im2bIdaiBNsoUD7mNCqRg7Xt5Bw==","signatures":[{"sig":"MEYCIQDJL7trodB+FHsWWCqFFEefDQr/l1KufEtrmB4jh8sLQgIhAN7O0A5CNIszffunlFR5wF8S1A5fpN6D+j0WLSgRDSet","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-aggregates@0.7.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":79135},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"37f4fc8c1953c6018760271ab3d6b8c4d30ec88c","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"bun test","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --build","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"bun test --watch","validate:docs":"bun ../../scripts/validate-markdown-examples.ts","validate:pack":"bun pm pack --dry-run","publish:package":"npm publish --access public","check:publishable":"npm view $npm_package_name@$npm_package_version version >/dev/null 2>&1 && exit 1 || exit 0"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8a39a153-f3f3-4d69-b634-6436185a06af"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"11.6.1","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.0.1","@codeforbreakfast/eventsourcing-store":"workspace:*","@codeforbreakfast/eventsourcing-commands":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.18.1","eslint":"9.36.0","typescript":"5.9.3","@types/node":"24.6.2","@codeforbreakfast/buntest":"workspace:*","@codeforbreakfast/eventsourcing-store-inmemory":"workspace:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.7.2_1759854549793_0.9508388409129169","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.8.0","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.8.0","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"fcdde74545f38d9843a0ae8037890b15ab973685","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.8.0.tgz","fileCount":31,"integrity":"sha512-KnINdYldqf/1PhyfF+neyQaSOzDFAhOC7c28i0QJrS7BAyk9cHFwkCaM9ySzi0V1orq0WrAMnc0DvYdZcqwgyw==","signatures":[{"sig":"MEUCIQCSXq9hQz3m6kaHJ4m9NEoPcPAFE5lFaKqSHBHhXBu4NwIgcxuoFa5ZU584RiFI34pkqqvQFvxyL9LugiztmoIVlnQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-aggregates@0.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":83093},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"a08bc28abdeee0246774319e45da970b1a47a151","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"bun test","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --project tsconfig.build.json","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"bun test --watch","validate:docs":"bun ../../scripts/validate-markdown-examples.ts","validate:pack":"bun pm pack --dry-run","publish:package":"npm publish --access public","check:publishable":"npm view $npm_package_name@$npm_package_version version >/dev/null 2>&1 && exit 1 || exit 0"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8a39a153-f3f3-4d69-b634-6436185a06af"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"11.6.1","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.0.1","@codeforbreakfast/eventsourcing-store":"workspace:*","@codeforbreakfast/eventsourcing-commands":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.18.4","eslint":"9.36.0","typescript":"5.9.3","@types/node":"24.6.2","@codeforbreakfast/buntest":"workspace:*","@codeforbreakfast/eventsourcing-store-inmemory":"workspace:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.8.0_1760169352252_0.12357160701207848","host":"s3://npm-registry-packages-npm-production"}},"0.8.1":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.8.1","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.8.1","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"5fb23a6382ece82167d9f158b4852a89dc43b07c","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.8.1.tgz","fileCount":32,"integrity":"sha512-OuogDf364Vn1LnDKMV3BkoOhdJGJyPKWETROTuQuo3F+qVwvMdR3R8ltmfmrJXo0XNR3+clJQWIY5leyUsBTvg==","signatures":[{"sig":"MEUCIDLeNXo0UMWOUL6N724l0Hddzq7As19ZmnzYqYjowrEDAiEA7MxypMvSijMeHLE2GV/t5/zi9KB6X7+O1ubAMGOg16k=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-aggregates@0.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":91694},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"6b33e587b5948de08c6fcfd7bebc0f93e22cd24b","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"bun test","build":"bun build ./src/index.ts --outdir ./dist --target bun --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc --project tsconfig.build.json","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"bun test --watch","validate:docs":"bun ../../scripts/validate-markdown-examples.ts","validate:pack":"bun pm pack --dry-run","publish:package":"npm publish --access public","check:publishable":"npm view $npm_package_name@$npm_package_version version >/dev/null 2>&1 && exit 1 || exit 0"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8a39a153-f3f3-4d69-b634-6436185a06af"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"11.6.1","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.0.1","@codeforbreakfast/eventsourcing-store":"workspace:*","@codeforbreakfast/eventsourcing-commands":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.18.4","eslint":"9.36.0","typescript":"5.9.3","@types/node":"24.6.2","@codeforbreakfast/buntest":"workspace:*","@codeforbreakfast/eventsourcing-store-inmemory":"workspace:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.8.1_1760267627171_0.17378490388019108","host":"s3://npm-registry-packages-npm-production"}},"0.8.2":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.8.2","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.8.2","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"a41858c040d2d7c107819df9ef01f7f212e6771b","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.8.2.tgz","fileCount":32,"integrity":"sha512-WuIG0tzmsfdKn15YAGVuN47N5EGTinE9o8KxPz4jXR6+4K4jE2CTdx5AES62usN6sUCILS9cCvIf6+zsyHkouQ==","signatures":[{"sig":"MEUCIQCT0UzTM72uscrdJs2yTwHnvWF9RGpISPpsJNJVcSpFfgIgfOUWwE8G2a0cChSLdE5Q2mckxkRmoPJjecs6ggT+AU4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-aggregates@0.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":91657},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"209ef435978ce052d57ea888fdc847b07011a674","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"bun test","build":"bun build ./src/index.ts --outdir ./dist --target node --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"bun test --watch","validate:docs":"bun ../../scripts/validate-markdown-examples.ts","validate:pack":"bun pm pack --dry-run","publish:package":"npm publish --access public","check:publishable":"npm view $npm_package_name@$npm_package_version version >/dev/null 2>&1 && exit 1 || exit 0"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8a39a153-f3f3-4d69-b634-6436185a06af"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"11.6.2","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.0.1","@codeforbreakfast/eventsourcing-store":"workspace:*","@codeforbreakfast/eventsourcing-commands":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.18.4","eslint":"9.37.0","typescript":"5.9.3","@types/node":"24.7.1","@codeforbreakfast/buntest":"workspace:*","@codeforbreakfast/eventsourcing-store-inmemory":"workspace:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.8.2_1760430179259_0.8719039018067554","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.9.0","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.9.0","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"09af141b6e5264e0c075e68a92a41b51c217f076","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.9.0.tgz","fileCount":32,"integrity":"sha512-3eRYUwKUVP18gOnr9Dm7WfNQTcvJaZtROJAu2MfI218nHsdnzQ9ldw1B+f9ZQlptH/7guAfCGTTAMCsIRgDVUQ==","signatures":[{"sig":"MEQCIDeYi7rThjCL09Bt/gbY6tVEbcw/1drl/ucpdhHZA0i+AiBdjPJ0NIKX2hOfUrkVSvuXyM4cg2g2ZVO6dus5x8sOyQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-aggregates@0.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":95149},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"b86d91ea14ffcb2c9209ebfcbf6c48b4a9ff5876","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"bun test","build":"bun build ./src/index.ts --outdir ./dist --target node --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"bun test --watch","validate:docs":"bun ../../scripts/validate-markdown-examples.ts","validate:pack":"bun pm pack --dry-run","publish:package":"npm publish --access public","check:publishable":"npm view $npm_package_name@$npm_package_version version >/dev/null 2>&1 && exit 1 || exit 0"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8a39a153-f3f3-4d69-b634-6436185a06af"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"11.6.2","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.1.0","@codeforbreakfast/eventsourcing-store":"workspace:*","@codeforbreakfast/eventsourcing-commands":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.18.4","eslint":"9.37.0","typescript":"5.9.3","@types/node":"24.7.2","@codeforbreakfast/buntest":"workspace:*","@codeforbreakfast/eventsourcing-store-inmemory":"workspace:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.9.0_1760796634263_0.1350344855720873","host":"s3://npm-registry-packages-npm-production"}},"0.9.1":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.9.1","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.9.1","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"47c2d5e952a3a0606e2bac32f457480789439dc5","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.9.1.tgz","fileCount":32,"integrity":"sha512-She3kRb7f8g74+/X0GrrKkDpsQJ0W7hhgx4oDnhlz5naL1n/DVCsCgBiHbsHLBib3F+z7dHfJBNYE6kh8H8tvA==","signatures":[{"sig":"MEUCIQD0IFLyZj/Fcq7IIiL5B2UkZkXhyIJGdv+kGGcdDU2ptwIgfQS8iSZr6Jbpv2Hgp66eT483hDGQbn6vnLicP+L1Io4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-aggregates@0.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":95149},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"8aeb86d53d72d178720c7a9543b57a8a85177f25","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"bun test","build":"bun build ./src/index.ts --outdir ./dist --target node --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"bun test --watch","validate:docs":"bun ../../scripts/validate-markdown-examples.ts","validate:pack":"bun pm pack --dry-run","publish:package":"npm publish --access public","check:publishable":"npm view $npm_package_name@$npm_package_version version >/dev/null 2>&1 && exit 1 || exit 0"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8a39a153-f3f3-4d69-b634-6436185a06af"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"11.6.2","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.1.0","@codeforbreakfast/eventsourcing-store":"workspace:*","@codeforbreakfast/eventsourcing-commands":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.18.4","eslint":"9.38.0","typescript":"5.9.3","@types/node":"24.9.1","@codeforbreakfast/buntest":"workspace:*","@codeforbreakfast/eventsourcing-store-inmemory":"workspace:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.9.1_1761488005096_0.8801450018080663","host":"s3://npm-registry-packages-npm-production"}},"0.9.2":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.9.2","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.9.2","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"1365466e2cfc2391161c3cb14de6cd47f49886a5","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.9.2.tgz","fileCount":32,"integrity":"sha512-pHacUu7Yuzffx5nx3vR8p3DXBQDa+MI4JZA95PAuDNuZQ/FPohgAjSDsRsRmo7MO7TLQhmbIQw2YkviJsVd0bw==","signatures":[{"sig":"MEUCIQDKplfyA8u4qKvZon4FG+cL23c9DqN76tCPsFWmrfHBvgIgGGcZ+taVPqB5XiKG5cPOSyz1iUF6wWqJkcgiV9Lwt50=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-aggregates@0.9.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94667},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"7f67156700fc3a5d4036c8d9fd4f905897e41917","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"bun test","build":"bun build ./src/index.ts --outdir ./dist --target node --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"bun test --watch","validate:docs":"bun ../../scripts/validate-markdown-examples.ts","validate:pack":"bun pm pack --dry-run","publish:package":"npm publish --access public","check:publishable":"npm view $npm_package_name@$npm_package_version version >/dev/null 2>&1 && exit 1 || exit 0"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8a39a153-f3f3-4d69-b634-6436185a06af"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"11.6.2","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.1.0","@codeforbreakfast/eventsourcing-store":"workspace:*","@codeforbreakfast/eventsourcing-commands":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.18.4","eslint":"9.38.0","typescript":"5.9.3","@types/node":"24.9.2","@codeforbreakfast/buntest":"workspace:*","@codeforbreakfast/eventsourcing-store-inmemory":"workspace:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.9.2_1762159722636_0.0902402604013608","host":"s3://npm-registry-packages-npm-production"}},"0.9.3":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.9.3","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-aggregates@0.9.3","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"36cef09cfa0c3d19eebd8408a9dd728b01bf4438","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.9.3.tgz","fileCount":32,"integrity":"sha512-e1GpA2zx+w9nq7ZOMMaZaPLcw+47Mabltea3N+2ROmabaQBngYbqglWn4LYomRK0HNBOtI1VMVzGt7asFrSKgA==","signatures":[{"sig":"MEYCIQDxS2U4wmBEJWwv4thz1/y6Oq9wqKxM9WpgoOUh14KmUQIhAKPH/jzql7o5fM0YUGkSofK9n3LTG6l0D7JxIZXKh8SL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-aggregates@0.9.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":94692},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","module":"./dist/index.js","engines":{"node":">=18.0.0"},"exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"gitHead":"572968daaa6a79b98fb010df951d5f75bcd7f1c7","scripts":{"lint":"eslint . --ext .ts,.tsx","test":"bun test","build":"bun build ./src/index.ts --outdir ./dist --target node --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc","clean":"rm -rf dist","typecheck":"tsc --noEmit","test:watch":"bun test --watch","validate:docs":"bun ../../scripts/validate-markdown-examples.ts","validate:pack":"bun pm pack --dry-run","publish:package":"npm publish --access public","check:publishable":"npm view $npm_package_name@$npm_package_version version >/dev/null 2>&1 && exit 1 || exit 0"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8a39a153-f3f3-4d69-b634-6436185a06af"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-aggregates"},"_npmVersion":"11.6.2","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.2.0","@codeforbreakfast/eventsourcing-store":"workspace:*","@codeforbreakfast/eventsourcing-commands":"workspace:*"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"effect":"3.18.4","eslint":"9.39.1","typescript":"5.9.3","@types/node":"24.10.0","@codeforbreakfast/bun-test-effect":"workspace:*","@codeforbreakfast/eventsourcing-store-inmemory":"workspace:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-aggregates_0.9.3_1764059357165_0.5458400495002242","host":"s3://npm-registry-packages-npm-production"}},"0.9.4":{"name":"@codeforbreakfast/eventsourcing-aggregates","version":"0.9.4","description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","default":"./dist/index.js"},"./package.json":"./package.json"},"scripts":{"build":"bun build ./src/index.ts --outdir ./dist --target node --format esm --external effect --external @effect/* --external @codeforbreakfast/* && bun x tsc","test":"bun test","test:watch":"bun test --watch","lint":"eslint . --ext .ts,.tsx","typecheck":"tsc --noEmit","clean":"rm -rf dist","publish:package":"npm publish --access public","validate:pack":"bun pm pack --dry-run","check:publishable":"npm view $npm_package_name@$npm_package_version version >/dev/null 2>&1 && exit 1 || exit 0","validate:docs":"bun ../../scripts/validate-markdown-examples.ts"},"keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"author":{"name":"Code for Breakfast"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","directory":"packages/eventsourcing-aggregates"},"bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","peerDependencies":{"effect":"^3.17.0"},"dependencies":{"@codeforbreakfast/eventsourcing-commands":"workspace:*","@codeforbreakfast/eventsourcing-store":"workspace:*","type-fest":"5.2.0"},"devDependencies":{"@types/node":"24.10.0","@codeforbreakfast/bun-test-effect":"workspace:*","@codeforbreakfast/eventsourcing-store-inmemory":"workspace:*","effect":"3.19.9","typescript":"5.9.3","eslint":"9.39.1"},"publishConfig":{"access":"public"},"sideEffects":false,"engines":{"node":">=18.0.0"},"gitHead":"dc9291553d278cb59572e9fb1569fe0c01194eea","_id":"@codeforbreakfast/eventsourcing-aggregates@0.9.4","_nodeVersion":"20.19.6","_npmVersion":"11.6.2","dist":{"integrity":"sha512-NFToquGtpFir+WCx/0tLj5OiEcYe72bqv3z9JzSwa5MI52OaSGk0AYsUejA+Imc69aWq8QoQFBMp8gqkYEC2xw==","shasum":"87db90e53352306cfd97e0ee9937d18dbe192689","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-aggregates/-/eventsourcing-aggregates-0.9.4.tgz","fileCount":32,"unpackedSize":94692,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-aggregates@0.9.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCVExh8eT8GCFpv7poyR2/ifYRNHssi2hwJbfN/qJgdHQIhAJA5PXYdUF+PX63oI3lEQDIiTAf4V9UkLxkp+GfbrU60"}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:8a39a153-f3f3-4d69-b634-6436185a06af"}},"directories":{},"maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eventsourcing-aggregates_0.9.4_1765443327449_0.3971833700133207"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-21T10:16:54.065Z","modified":"2025-12-11T08:55:27.983Z","0.2.0":"2025-09-21T10:16:54.420Z","0.3.0":"2025-09-21T11:51:44.931Z","0.4.0":"2025-09-21T12:23:01.512Z","0.4.1":"2025-09-21T13:00:56.133Z","0.5.0":"2025-09-21T13:50:58.422Z","0.5.1":"2025-09-21T15:44:34.895Z","0.5.2":"2025-09-21T16:08:48.721Z","0.5.4":"2025-09-21T17:14:21.714Z","0.5.5":"2025-09-21T17:48:42.406Z","0.5.6":"2025-09-24T07:10:45.251Z","0.5.7":"2025-09-24T09:43:17.732Z","0.6.0":"2025-09-28T10:10:33.321Z","0.6.3":"2025-09-28T14:00:14.266Z","0.6.4":"2025-09-28T16:34:07.706Z","0.6.5":"2025-09-29T14:06:06.355Z","0.7.0":"2025-10-05T15:22:34.541Z","0.7.1":"2025-10-05T18:41:53.427Z","0.7.2":"2025-10-07T16:29:09.983Z","0.8.0":"2025-10-11T07:55:52.432Z","0.8.1":"2025-10-12T11:13:47.376Z","0.8.2":"2025-10-14T08:22:59.457Z","0.9.0":"2025-10-18T14:10:34.459Z","0.9.1":"2025-10-26T14:13:25.296Z","0.9.2":"2025-11-03T08:48:42.806Z","0.9.3":"2025-11-25T08:29:17.376Z","0.9.4":"2025-12-11T08:55:27.610Z"},"bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"author":{"name":"Code for Breakfast"},"license":"MIT","homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","keywords":["event-sourcing","aggregates","aggregate-root","cqrs","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","immutable","domain-modeling","event-driven","composable","state-management"],"repository":{"type":"git","url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","directory":"packages/eventsourcing-aggregates"},"description":"Type-safe aggregate root patterns for event sourcing with Effect - Build bulletproof domain models with functional composition and immutable state management","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"readme":"# @codeforbreakfast/eventsourcing-aggregates\n\nType-safe aggregate root patterns for event sourcing with Effect integration. This package provides functional patterns for building aggregate roots that handle commands, emit events, and maintain consistency in your event-sourced applications.\n\n## Installation\n\n```bash\nnpm install @codeforbreakfast/eventsourcing-aggregates effect\n```\n\n```bash\nbun add @codeforbreakfast/eventsourcing-aggregates effect\n```\n\n## Key Features\n\n- **Functional Aggregate Patterns**: Composable functions for building domain aggregates with Effect\n- **Type-Safe Event Sourcing**: Schema-validated events with automatic state reconstruction\n- **Domain-Specific Command Processing**: Generic command layer that maintains strong typing for each domain's events\n- **Command Context Tracking**: Built-in command tracking with user attribution\n- **Event Metadata**: Automatic timestamping and originator tracking for all events\n- **Effect Integration**: Built on Effect for composable, functional aggregate operations\n- **Testing Support**: Test-friendly APIs for unit testing aggregate behavior\n- **Serialization Boundary Pattern**: Events stay strongly-typed throughout domain layer, generic only at storage/wire boundaries\n\n## Core Exports\n\n```typescript\nimport {\n  // Main aggregate creation function\n  makeAggregateRoot,\n\n  // Aggregate event store factory\n  defineAggregateEventStore,\n\n  // Core interfaces and types\n  AggregateState,\n  EventMetadata,\n\n  // Command processing\n  CommandHandler,\n  CommandRouter,\n  createCommandProcessingService,\n  CommandProcessingService,\n  CommandProcessingError,\n  CommandRoutingError,\n\n  // Command context services\n  CommandContext,\n  CommandContextService,\n\n  // Helper functions\n  eventMetadata,\n  eventSchema,\n} from '@codeforbreakfast/eventsourcing-aggregates';\n```\n\n## Quick Start\n\n```typescript\nimport { Effect, Schema, Option, Chunk, Context, pipe } from 'effect';\nimport {\n  makeAggregateRoot,\n  AggregateState,\n  CommandContext,\n  CommandContextTest,\n  eventSchema,\n  eventMetadata,\n  defineAggregateEventStore,\n  type EventRecord,\n} from '@codeforbreakfast/eventsourcing-aggregates';\nimport type { EventStore } from '@codeforbreakfast/eventsourcing-store';\nimport { makeInMemoryEventStore } from '@codeforbreakfast/eventsourcing-store-inmemory';\n\n// 1. Define your aggregate ID schema\nconst UserId = Schema.String.pipe(Schema.brand('UserId'));\ntype UserId = typeof UserId.Type;\n\n// 2. Define your initiator ID schema (who executes commands)\nconst InitiatorId = Schema.String.pipe(Schema.brand('InitiatorId'));\ntype InitiatorId = typeof InitiatorId.Type;\n\n// 3. Define your domain events using eventSchema\nconst UserRegisteredEvent = eventSchema(Schema.Literal('UserRegistered'), {\n  email: Schema.String,\n  name: Schema.String,\n});\n\nconst UserEmailUpdatedEvent = eventSchema(Schema.Literal('UserEmailUpdated'), {\n  oldEmail: Schema.String,\n  newEmail: Schema.String,\n});\n\nconst UserEvent = Schema.Union(UserRegisteredEvent, UserEmailUpdatedEvent);\ntype UserEvent = typeof UserEvent.Type;\n\n// 4. Define your aggregate state\n// Note: Aggregate state doesn't need to store its own ID - that's implicit from the stream\ninterface UserState {\n  email: string;\n  name: string;\n  isActive: boolean;\n}\n\n// 5. Create the event application function\n// Events don't contain aggregate IDs - the ID comes from the event stream\nconst applyUserEvent: (\n  state: Option.Option<UserState>\n) => (event: UserEvent) => Effect.Effect<UserState, Error, never> = (state) => (event) =>\n  pipe(\n    event.type === 'UserRegistered'\n      ? Effect.succeed({\n          email: event.data.email,\n          name: event.data.name,\n          isActive: true,\n        })\n      : event.type === 'UserEmailUpdated'\n        ? pipe(\n            state,\n            Option.match({\n              onNone: () => Effect.fail(new Error('Cannot update email: user does not exist')),\n              onSome: (currentState) =>\n                Effect.succeed({\n                  ...currentState,\n                  email: event.data.newEmail,\n                }),\n            })\n          )\n        : Effect.fail(new Error(`Unknown event type: ${(event as any).type}`))\n  );\n\n// 6. Create event store tag using factory\nconst UserEventStore = defineAggregateEventStore<UserEvent, InitiatorId>('User');\n\n// 7. Define command handlers that return functions taking state\n// Commands return bare events - framework adds metadata automatically during commit\nconst registerUser = (email: string, name: string) => (currentState: AggregateState<UserState>) =>\n  pipe(\n    currentState.data,\n    Option.match({\n      onSome: () => Effect.fail(new Error('User already exists')),\n      onNone: () =>\n        Effect.succeed([\n          {\n            type: 'UserRegistered' as const,\n            data: { email, name },\n          } satisfies UserEvent,\n        ]),\n    })\n  );\n\nconst updateUserEmail = (newEmail: string) => (currentState: AggregateState<UserState>) =>\n  pipe(\n    currentState.data,\n    Option.match({\n      onNone: () => Effect.fail(new Error('User not found')),\n      onSome: (state) =>\n        Effect.succeed([\n          {\n            type: 'UserEmailUpdated' as const,\n            data: {\n              oldEmail: state.email,\n              newEmail,\n            },\n          } satisfies UserEvent,\n        ]),\n    })\n  );\n\n// 8. Create the aggregate root\nconst UserAggregate = makeAggregateRoot(\n  UserId,\n  InitiatorId,\n  applyUserEvent as any,\n  UserEventStore,\n  {\n    registerUser,\n    updateUserEmail,\n  }\n);\n\n// 9. Usage example\nconst userId = 'user-123' as UserId; // The aggregate ID is only used for loading/committing\n\nconst program = pipe(\n  // Load an existing user (returns empty state if not found)\n  UserAggregate.load(userId),\n  Effect.tap((state) => Effect.log(`Loaded user state: ${JSON.stringify(state)}`)),\n  Effect.flatMap((existingUser) => {\n    // Create a new user if one doesn't exist\n    if (Option.isNone(existingUser.data)) {\n      return pipe(\n        // Generate registration events using the command handler\n        UserAggregate.commands.registerUser('john@example.com', 'John Doe')(existingUser as any),\n        Effect.flatMap((events: any) =>\n          // Commit events to store with the aggregate ID\n          UserAggregate.commit({\n            id: userId,\n            eventNumber: existingUser.nextEventNumber,\n            events,\n          })\n        ),\n        Effect.flatMap(() => UserAggregate.load(userId)),\n        Effect.tap((state) => Effect.log(`User after registration: ${JSON.stringify(state)}`))\n      );\n    }\n    return Effect.succeed(existingUser);\n  }),\n  Effect.flatMap((userState) =>\n    // Update the user's email\n    pipe(\n      UserAggregate.commands.updateUserEmail('john.doe@newdomain.com')(userState as any),\n      Effect.flatMap((events: any) =>\n        UserAggregate.commit({\n          id: userId,\n          eventNumber: userState.nextEventNumber,\n          events,\n        })\n      ),\n      Effect.flatMap(() => UserAggregate.load(userId)),\n      Effect.tap((state) => Effect.log(`User after email update: ${JSON.stringify(state)}`))\n    )\n  )\n);\n\n// Run with dependencies\n(async () => {\n  const eventStoreLayer: any = makeInMemoryEventStore(UserEventStore as any);\n  const contextLayer: any = CommandContextTest<string>('system-user');\n\n  const runnable: Effect.Effect<any, any, never> = pipe(\n    program,\n    Effect.provide(eventStoreLayer),\n    Effect.provide(contextLayer)\n  ) as any;\n\n  await Effect.runPromise(runnable);\n})();\n```\n\n## Core Concepts\n\n### AggregateState\n\nRepresents the current state of an aggregate at a point in time:\n\n```typescript\nimport { Option } from 'effect';\n\ninterface AggregateState<TData> {\n  readonly nextEventNumber: number;\n  readonly data: Option.Option<TData>;\n}\n```\n\n### makeAggregateRoot\n\nThe main function for creating aggregate roots with event sourcing capabilities:\n\n```typescript\nimport { Schema } from 'effect';\nimport { makeAggregateRoot } from '@codeforbreakfast/eventsourcing-aggregates';\n\ndeclare const IdSchema: any;\ndeclare const applyEventFunction: any;\ndeclare const EventStoreTag: any;\ndeclare const commandHandlers: any;\n\nconst MyAggregate = makeAggregateRoot(\n  IdSchema,\n  Schema.String,\n  applyEventFunction,\n  EventStoreTag,\n  commandHandlers\n);\n```\n\n### Event Schema Creation\n\nUse `eventSchema` to create properly structured domain events:\n\n```typescript\nimport { Schema } from 'effect';\nimport { eventSchema } from '@codeforbreakfast/eventsourcing-aggregates';\n\nconst MyEvent = eventSchema(Schema.Literal('MyEventType'), {\n  field1: Schema.String,\n  field2: Schema.Number,\n});\n```\n\n### Command Context\n\nTrack command execution metadata:\n\n```typescript\nimport { Effect, pipe } from 'effect';\nimport { CommandContext, CommandContextTest } from '@codeforbreakfast/eventsourcing-aggregates';\n\nconst myCommand = pipe(\n  CommandContext<string>(),\n  Effect.flatMap((context) => context.getInitiator),\n  Effect.map((initiatorId) => initiatorId)\n);\n\nconst testLayer = CommandContextTest<string>('test-user-id');\n```\n\n### Event Metadata Generation\n\nAutomatically generate event metadata with timestamps and originator:\n\n```typescript\nimport { Effect, pipe } from 'effect';\nimport { eventMetadata } from '@codeforbreakfast/eventsourcing-aggregates';\n\nconst createEvent = pipe(\n  eventMetadata<string>(),\n  Effect.map((metadata) => ({\n    type: 'SomethingHappened' as const,\n    metadata,\n    data: {},\n  }))\n);\n```\n\n## Advanced Patterns\n\n### Business Rule Validation\n\n```typescript\nimport { Effect, Option, Chunk, pipe } from 'effect';\nimport { AggregateState, eventMetadata } from '@codeforbreakfast/eventsourcing-aggregates';\n\ninterface BankAccountState {\n  balance: number;\n}\n\nconst transferMoney =\n  (toAccountId: string, amount: number) => (currentState: AggregateState<BankAccountState>) =>\n    pipe(\n      currentState.data,\n      Option.match({\n        onNone: () => Effect.fail(new Error('Account not found')),\n        onSome: (account) => {\n          if (account.balance < amount) {\n            return Effect.fail(new Error('Insufficient funds'));\n          }\n          if (amount <= 0) {\n            return Effect.fail(new Error('Transfer amount must be positive'));\n          }\n\n          return pipe(\n            eventMetadata<string>(),\n            Effect.map((metadata) =>\n              Chunk.of({\n                type: 'MoneyTransferred' as const,\n                metadata,\n                data: {\n                  toAccountId,\n                  amount,\n                },\n              })\n            )\n          );\n        },\n      })\n    );\n```\n\n### Complex Event Application\n\n```typescript\nimport { Effect, Option, pipe } from 'effect';\n\ndeclare const BankAccountEvent: any;\ntype BankAccountEvent = typeof BankAccountEvent;\n\ninterface BankAccountState {\n  balance: number;\n  isActive: boolean;\n  transactions: Array<{\n    type: string;\n    amount: number;\n    timestamp: Date;\n  }>;\n}\n\nconst applyBankAccountEvent =\n  (state: Option.Option<BankAccountState>) => (event: BankAccountEvent) => {\n    switch (event.type) {\n      case 'AccountOpened':\n        return pipe(\n          state,\n          Option.match({\n            onSome: () => Effect.fail(new Error('Account already exists')),\n            onNone: () =>\n              Effect.succeed({\n                balance: event.data.initialDeposit,\n                isActive: true,\n                transactions: [],\n              }),\n          })\n        );\n\n      case 'MoneyTransferred':\n        return pipe(\n          state,\n          Option.match({\n            onNone: () => Effect.fail(new Error('Account does not exist')),\n            onSome: (currentState) =>\n              Effect.succeed({\n                ...currentState,\n                balance: currentState.balance - event.data.amount,\n                transactions: [\n                  ...currentState.transactions,\n                  {\n                    type: 'transfer' as const,\n                    amount: event.data.amount,\n                    timestamp: event.metadata.occurredAt,\n                  },\n                ],\n              }),\n          })\n        );\n\n      default:\n        return Effect.fail(new Error(`Unknown event: ${(event as any).type}`));\n    }\n  };\n```\n\n### Testing Aggregates\n\nTest aggregate behavior in isolation:\n\n```typescript\nimport { describe, it, expect } from 'bun:test';\nimport { Effect, Option, Chunk, pipe } from 'effect';\nimport { AggregateState, CommandContextTest } from '@codeforbreakfast/eventsourcing-aggregates';\n\ndeclare const UserAggregate: any;\ndeclare const applyUserEvent: any;\n\ninterface UserState {\n  email: string;\n  name: string;\n  isActive: boolean;\n}\n\ndescribe('UserAggregate', () => {\n  it('should register a new user', async () => {\n    const program: Effect.Effect<any, any, never> = pipe(\n      Effect.succeed(UserAggregate.new()),\n      Effect.flatMap((state: any) =>\n        pipe(\n          UserAggregate.commands.registerUser('test@example.com', 'Test User')(state),\n          Effect.tap((events: any) => {\n            const event: any = Chunk.unsafeHead(events);\n            expect(event.type).toBe('UserRegistered');\n            expect(event.data.email).toBe('test@example.com');\n            return Effect.void;\n          }),\n          Effect.flatMap((events: any) =>\n            pipe(\n              Chunk.unsafeHead(events),\n              applyUserEvent(state.data),\n              Effect.tap((newState: any) => {\n                expect(newState.email).toBe('test@example.com');\n                expect(newState.isActive).toBe(true);\n                return Effect.void;\n              })\n            )\n          )\n        )\n      )\n    ) as any;\n\n    await Effect.runPromise(\n      pipe(program, Effect.provide(CommandContextTest<string>('test-initiator')))\n    );\n  });\n\n  it('should prevent duplicate registration', async () => {\n    const existingState: AggregateState<UserState> = {\n      nextEventNumber: 1,\n      data: Option.some({\n        email: 'existing@example.com',\n        name: 'Existing User',\n        isActive: true,\n      }),\n    };\n\n    const program: Effect.Effect<any, any, never> = pipe(\n      UserAggregate.commands.registerUser('duplicate@example.com', 'Duplicate User')(existingState),\n      Effect.either,\n      Effect.tap((result: any) => {\n        expect(result._tag).toBe('Left');\n        return Effect.void;\n      })\n    ) as any;\n\n    await Effect.runPromise(\n      pipe(program, Effect.provide(CommandContextTest<string>('test-initiator')))\n    );\n  });\n});\n```\n\n## Error Handling\n\nHandle domain-specific errors with Effect's error management:\n\n```typescript\nimport { Data, Effect, pipe } from 'effect';\n\ndeclare const TransferCommand: any;\ntype TransferCommand = typeof TransferCommand;\ndeclare const processTransfer: (command: TransferCommand) => Effect.Effect<any, any, any>;\n\nclass InsufficientFundsError extends Data.TaggedError('InsufficientFundsError')<{\n  required: number;\n  available: number;\n}> {}\n\nclass AccountNotFoundError extends Data.TaggedError('AccountNotFoundError')<{\n  accountId: string;\n}> {}\n\nconst handleTransferCommand = (command: TransferCommand) =>\n  pipe(\n    processTransfer(command),\n    Effect.catchTag('InsufficientFundsError', (error) =>\n      Effect.logError(`Insufficient funds: need ${error.required}, have ${error.available}`)\n    ),\n    Effect.catchTag('AccountNotFoundError', (error) =>\n      Effect.logError(`Account not found: ${error.accountId}`)\n    )\n  );\n```\n\n## Command Processing\n\nThe package provides a generic command processing layer that maintains strong typing for domain events.\n\n### Type-Safe Command Handlers\n\nCommand handlers are generic over your domain event types:\n\n```typescript\nimport { Effect, Schema, Context, Layer, pipe } from 'effect';\nimport {\n  CommandHandler,\n  CommandRouter,\n  createCommandProcessingService,\n  CommandProcessingService,\n  CommandRoutingError,\n} from '@codeforbreakfast/eventsourcing-aggregates';\nimport type { EventStore } from '@codeforbreakfast/eventsourcing-store';\nimport type { WireCommand } from '@codeforbreakfast/eventsourcing-commands';\n\ndeclare const userEventStoreLayer: any;\n\nconst UserCreated = Schema.Struct({\n  type: Schema.Literal('UserCreated'),\n  data: Schema.Struct({\n    name: Schema.String,\n    email: Schema.String,\n  }),\n});\n\nconst UserUpdated = Schema.Struct({\n  type: Schema.Literal('UserUpdated'),\n  data: Schema.Struct({\n    name: Schema.String,\n  }),\n});\n\nconst UserEvent = Schema.Union(UserCreated, UserUpdated);\ntype UserEvent = typeof UserEvent.Type;\n\nconst UserEventStore = Context.GenericTag<EventStore<UserEvent>, EventStore<UserEvent>>(\n  'UserEventStore'\n);\n\nconst createUserHandler: CommandHandler<UserEvent> = {\n  execute: (command: Readonly<WireCommand>) =>\n    Effect.succeed([\n      {\n        type: 'UserCreated' as const,\n        data: {\n          name: (command.payload as any).name,\n          email: (command.payload as any).email,\n        },\n      },\n    ]),\n};\n\nconst createUserRouter = (): CommandRouter<UserEvent> => ({\n  route: (command: Readonly<WireCommand>) => {\n    if (command.target === 'user' && command.name === 'CreateUser') {\n      return Effect.succeed(createUserHandler);\n    }\n    return Effect.fail(\n      new CommandRoutingError({\n        target: command.target,\n        message: `No handler found for ${command.target}:${command.name}`,\n      })\n    );\n  },\n});\n\nconst UserCommandProcessingService = Layer.effect(\n  CommandProcessingService,\n  createCommandProcessingService(UserEventStore)(createUserRouter())\n);\n\nconst processCommand = (command: WireCommand) =>\n  pipe(\n    CommandProcessingService,\n    Effect.flatMap((service) => service.processCommand(command)),\n    Effect.provide(UserCommandProcessingService),\n    Effect.provide(userEventStoreLayer)\n  );\n```\n\n### Key Principles\n\n**⚠️ IMPORTANT: Never use generic `Event` types in domain code**\n\nThe `Event` type from `@codeforbreakfast/eventsourcing-store` has `data: Schema.Unknown` and is only for serialization boundaries (storage, wire protocol).\n\n```typescript\nimport { Effect } from 'effect';\nimport { CommandHandler } from '@codeforbreakfast/eventsourcing-aggregates';\nimport type { Event } from '@codeforbreakfast/eventsourcing-store';\n\ndeclare const UserEvent: any;\ntype UserEvent = typeof UserEvent;\n\nconst wrongHandler: CommandHandler<Event> = {\n  execute: () => Effect.succeed([{ type: 'UserCreated', data: { name: 'John' } } as Event]),\n};\n\nconst correctHandler: CommandHandler<UserEvent> = {\n  execute: () =>\n    Effect.succeed([{ type: 'UserCreated', data: { name: 'John', email: 'john@example.com' } }]),\n};\n```\n\nEach aggregate or bounded context should:\n\n1. Define its own event union type\n2. Create a named event store tag\n3. Use typed command handlers and routers\n\nSee [ARCHITECTURE.md](./ARCHITECTURE.md) for detailed design rationale.\n\n## Integration with Event Stores\n\nThis package works with any event store implementation that matches the EventStore interface:\n\n```typescript\nimport { Effect, pipe } from 'effect';\nimport { makeInMemoryEventStore } from '@codeforbreakfast/eventsourcing-store-inmemory';\n\ndeclare const myAggregateOperation: Effect.Effect<any, any, any>;\ndeclare const MyEventStoreTag: any;\ndeclare const postgresEventStore: any;\n\nconst eventStoreLayer: any = makeInMemoryEventStore(MyEventStoreTag as any);\nconst testProgram = pipe(myAggregateOperation, Effect.provide(eventStoreLayer));\n\nconst productionProgram = pipe(myAggregateOperation, Effect.provide(postgresEventStore));\n```\n\n## Related Packages\n\n- **[@codeforbreakfast/eventsourcing-commands](../eventsourcing-commands)** - CQRS command types and schemas\n- **[@codeforbreakfast/eventsourcing-store](../eventsourcing-store)** - Core event store interfaces and in-memory implementation\n- **[@codeforbreakfast/eventsourcing-store-postgres](../eventsourcing-store-postgres)** - PostgreSQL event store implementation\n- **[@codeforbreakfast/eventsourcing-projections](../eventsourcing-projections)** - Read-side projection patterns\n- **[@codeforbreakfast/eventsourcing-websocket-transport](../eventsourcing-websocket-transport)** - Real-time event streaming\n\n## API Reference\n\nFor detailed TypeScript definitions, see the [source code](./src/index.ts) included with this package.\n\n## Contributing\n\nThis package is part of the [@codeforbreakfast/eventsourcing](https://github.com/codeforbreakfast/eventsourcing) monorepo. Please see the main repository for contributing guidelines.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}