{"_id":"@codeforbreakfast/eventsourcing-commands","_rev":"14-7a236e488e230643e46dbb9809633004","name":"@codeforbreakfast/eventsourcing-commands","dist-tags":{"latest":"0.4.9"},"versions":{"0.2.0":{"name":"@codeforbreakfast/eventsourcing-commands","version":"0.2.0","keywords":["cqrs","commands","command-query-separation","event-sourcing","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","schemas","domain-modeling"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-commands@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":"7e2738b0819e92dc6d32a0535f6aa95d84a7517a","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-commands/-/eventsourcing-commands-0.2.0.tgz","fileCount":27,"integrity":"sha512-sDYZfhGmPpkvlLmiPaUCEvFKbEr2sGU+7WO/aXSBPxQ/BpGyV71I5TtcuFWL+b/spjphYmeK+ho64WlA7X+8Lg==","signatures":[{"sig":"MEUCIGRMyWXY917Sy43O0/++xDNlkwuxKQhLWr86PNXW1HJCAiEAim8qIl7IqUR8Na/+Bin4L5VqofzFw2aPzFrKUarnHK8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":75025},"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-commands"},"_npmVersion":"10.8.2","description":"Wire command validation and dispatch for event sourcing systems - External boundary layer with schema validation","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","typescript":"5.9.2","@types/node":"24.5.2","@codeforbreakfast/buntest":"workspace:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-commands_0.2.0_1759054233467_0.7261641695566308","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"@codeforbreakfast/eventsourcing-commands","version":"0.2.3","keywords":["cqrs","commands","command-query-separation","event-sourcing","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","schemas","domain-modeling"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-commands@0.2.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":"07da5c5cab4ba25fa932efdb277177ac01fb2660","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-commands/-/eventsourcing-commands-0.2.3.tgz","fileCount":27,"integrity":"sha512-gMvddK7qdI9OJOKK7Ll0PJexUV/1aj6kibPTTDPENdqJrhIqhx4RPedZKsQ9ryWsbxdYz3/DA0zRAv2O/TOt8Q==","signatures":[{"sig":"MEQCIB/dhY2pG/eCsnZ+2oYNLDORqGdVsbetIf49QuDgdEarAiAxMqcsvZ5nPH5fUBGVg5LmUl97BtE3p7F+L8drP+W3QQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-commands@0.2.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":75187},"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:823888e9-b023-4a93-830a-1b50d26e05b6"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-commands"},"_npmVersion":"11.6.1","description":"Wire command validation and dispatch for event sourcing systems - External boundary layer with schema validation","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","typescript":"5.9.2","@types/node":"24.5.2","@codeforbreakfast/buntest":"workspace:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-commands_0.2.3_1759068014925_0.21228664205503844","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"@codeforbreakfast/eventsourcing-commands","version":"0.3.0","keywords":["cqrs","commands","command-query-separation","event-sourcing","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","schemas","domain-modeling"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-commands@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":"08086c36b5f873663aac6417b95dc9c00c26b48b","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-commands/-/eventsourcing-commands-0.3.0.tgz","fileCount":27,"integrity":"sha512-RacY5pc5BySSGLIxkILwx/PmwkeWP3bLmvdpbRoLX4+usKxprTySnoj6urLuaEEQs5XIVTLSXaB4WIw/U4nt2g==","signatures":[{"sig":"MEUCIFxucmxjU1dcS7rYiVMawjFZmU7wi8GSobAYZQP5MawhAiEA3uc8CXk5ZfkpHJ7+5T+y2zH+OD3/yKae4YzLFegAU54=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-commands@0.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":89902},"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:823888e9-b023-4a93-830a-1b50d26e05b6"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-commands"},"_npmVersion":"11.6.1","description":"Wire command validation and dispatch for event sourcing systems - External boundary layer with schema validation","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","typescript":"5.9.2","@types/node":"24.5.2","@codeforbreakfast/buntest":"workspace:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-commands_0.3.0_1759077247242_0.08602999185871818","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"@codeforbreakfast/eventsourcing-commands","version":"0.3.1","keywords":["cqrs","commands","command-query-separation","event-sourcing","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","schemas","domain-modeling"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-commands@0.3.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":"a91edd4f42aa363b920db8b2ceb21a9aa498706f","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-commands/-/eventsourcing-commands-0.3.1.tgz","fileCount":27,"integrity":"sha512-quvXb2kW4B8MKAjDH8tsGust5hn6278VEKLyEKHCTiQn1hVybu0kf6Bza87gdCV/JyJX6tHqmuEz90kCncaZ1A==","signatures":[{"sig":"MEYCIQCyFNrgzeIGhDn8HZqWH7qxnkZFIiQnBCMhtg3azO0b7AIhAPOc1MVxXM+mZ6jzBDmjGMU9m1wCei05Glf1FNilj8QC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-commands@0.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":91006},"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:823888e9-b023-4a93-830a-1b50d26e05b6"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-commands"},"_npmVersion":"11.6.1","description":"Wire command validation and dispatch for event sourcing systems - External boundary layer with schema validation","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.0.1","@codeforbreakfast/eventsourcing-store":"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:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-commands_0.3.1_1759154766626_0.5967147089974865","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"@codeforbreakfast/eventsourcing-commands","version":"0.4.0","keywords":["cqrs","commands","command-query-separation","event-sourcing","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","schemas","domain-modeling"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-commands@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":"b26bf912a6a4befbd9db27e6ead1fa9b80705ffa","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-commands/-/eventsourcing-commands-0.4.0.tgz","fileCount":27,"integrity":"sha512-W9QMtmC05X/00oDL9gN+VrTyWxF2n1hGTJfqGry9lMMWpQfmeXkwA1298F1CRYX8wXXn4CDzAVsQUfgLzdD+fw==","signatures":[{"sig":"MEUCIQDp7qDU1gL7ZIpITNgavoclJ9kBOcVEOL6p6fUcGfZq6wIgDlKUE1kSZAvJuBZEcyQoRwPK8Uw6Zbvt9xVTbrlhnQo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-commands@0.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":103979},"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:823888e9-b023-4a93-830a-1b50d26e05b6"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-commands"},"_npmVersion":"11.6.1","description":"Wire command validation and dispatch for event sourcing systems - External boundary layer with schema validation","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.0.1","@codeforbreakfast/eventsourcing-store":"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:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-commands_0.4.0_1759677754016_0.4150466193017537","host":"s3://npm-registry-packages-npm-production"}},"0.4.1":{"name":"@codeforbreakfast/eventsourcing-commands","version":"0.4.1","keywords":["cqrs","commands","command-query-separation","event-sourcing","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","schemas","domain-modeling"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-commands@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":"b593303f6ab7e464be89d3320d5737010ea8b685","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-commands/-/eventsourcing-commands-0.4.1.tgz","fileCount":27,"integrity":"sha512-2G284GGBnKn2rbWPylkgApBSCLyaRNofO2muDLn4Zhy82xzAdFgn7yPF6u3lpw79mDMmZ0S/uCB54jwjGlhEdg==","signatures":[{"sig":"MEUCIQD5tpIrO0EMrqefCYeNqKE9dJza5WZSkU9JQXmuJ22RZAIgDn8JuQhlPctCZvbKBb1Y5mb+Qj38L4OojTfTjOLIxCg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-commands@0.4.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":103979},"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:823888e9-b023-4a93-830a-1b50d26e05b6"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-commands"},"_npmVersion":"11.6.1","description":"Wire command validation and dispatch for event sourcing systems - External boundary layer with schema validation","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.0.1","@codeforbreakfast/eventsourcing-store":"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:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-commands_0.4.1_1759689712686_0.33427754743084304","host":"s3://npm-registry-packages-npm-production"}},"0.4.2":{"name":"@codeforbreakfast/eventsourcing-commands","version":"0.4.2","keywords":["cqrs","commands","command-query-separation","event-sourcing","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","schemas","domain-modeling"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-commands@0.4.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":"299ee1242ac3c76e0d2535450e8ed3ef49368607","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-commands/-/eventsourcing-commands-0.4.2.tgz","fileCount":27,"integrity":"sha512-te3alxj7aMQU9M0OjCFXStPnn+1cGerdTMI50EKtZ6tZPy1Fxm50NtYXzTDPO98zLxy4TvNG+wkboDOMFoNPIQ==","signatures":[{"sig":"MEUCIQDBAOUA7yBgYAeC5QSGR05gojNavZih/9Yr2WedaUntkwIgbDcfcv2Dy01DaOUbue+2kc9vBZNAcGvDDbIGIVRnb0o=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-commands@0.4.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":104095},"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:823888e9-b023-4a93-830a-1b50d26e05b6"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-commands"},"_npmVersion":"11.6.1","description":"Wire command validation and dispatch for event sourcing systems - External boundary layer with schema validation","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.0.1","@codeforbreakfast/eventsourcing-store":"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:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-commands_0.4.2_1759854550241_0.5912167888139994","host":"s3://npm-registry-packages-npm-production"}},"0.4.3":{"name":"@codeforbreakfast/eventsourcing-commands","version":"0.4.3","keywords":["cqrs","commands","command-query-separation","event-sourcing","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","schemas","domain-modeling"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-commands@0.4.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":"8bdd3bd9402544c420c83943a1cc5d354ff4ff6f","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-commands/-/eventsourcing-commands-0.4.3.tgz","fileCount":19,"integrity":"sha512-qVCekn2E1NEiipIP05VaADBjGgoWNuSFPRCjBYMma7uAgBPSo7NCMeaOA87KPfMVnwb0Kghr+86YsLPa8OHdFQ==","signatures":[{"sig":"MEYCIQCCGDevWRh8T1Cvo0YsUQ65njv/4I3DTrvxFB/+riTLQQIhALfho75h1RZQ99AlqgoqOfklGFf1h4sNn/JiSTPTkLfC","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-commands@0.4.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":77156},"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 --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:823888e9-b023-4a93-830a-1b50d26e05b6"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-commands"},"_npmVersion":"11.6.1","description":"Wire command validation and dispatch for event sourcing systems - External boundary layer with schema validation","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.0.1","@codeforbreakfast/eventsourcing-store":"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:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-commands_0.4.3_1760267626368_0.16199490334159283","host":"s3://npm-registry-packages-npm-production"}},"0.4.4":{"name":"@codeforbreakfast/eventsourcing-commands","version":"0.4.4","keywords":["cqrs","commands","command-query-separation","event-sourcing","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","schemas","domain-modeling"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-commands@0.4.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":"b4ac87298b80a1a3d8e182a80f81ae0d70201f0a","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-commands/-/eventsourcing-commands-0.4.4.tgz","fileCount":19,"integrity":"sha512-tjofr419T+pZTPZnsOzyhxgkD/XZc+TnfrpC4WCGzNInMGDEyqOWb8VTGOO3NMsPww4QtKJwIdQ+UNwutFe6yQ==","signatures":[{"sig":"MEQCIEwpbDwDWpTWho2SHDscEgvnCzMuvKa813F0wTS3SApFAiBMhHAQWem7BdbbcoFm1SfVxXxe/5nNxYgC9WL0Im45Ww==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-commands@0.4.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":77149},"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:823888e9-b023-4a93-830a-1b50d26e05b6"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-commands"},"_npmVersion":"11.6.2","description":"Wire command validation and dispatch for event sourcing systems - External boundary layer with schema validation","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.0.1","@codeforbreakfast/eventsourcing-store":"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:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-commands_0.4.4_1760430178946_0.008885353765740511","host":"s3://npm-registry-packages-npm-production"}},"0.4.5":{"name":"@codeforbreakfast/eventsourcing-commands","version":"0.4.5","keywords":["cqrs","commands","command-query-separation","event-sourcing","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","schemas","domain-modeling"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-commands@0.4.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":"7d32c610503a3812cefb072e2ac044411bef3859","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-commands/-/eventsourcing-commands-0.4.5.tgz","fileCount":19,"integrity":"sha512-5LE9h+NP0mEHLXSyk45StZR10w+81YCq8Gu8d/Eax8OSHayqH2RhDoYqrSndTgfdbS4e0E4Zkiqgq9ms4U5Kzg==","signatures":[{"sig":"MEQCIGjcENo7++gI0pkBOgDKKqIf96aSySgAyGUqTp1CNGkfAiAYrMR+S0d22ynoi2Qvfa7HPVFLVW5/LzxktXwsGoXfkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-commands@0.4.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":77149},"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:823888e9-b023-4a93-830a-1b50d26e05b6"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-commands"},"_npmVersion":"11.6.2","description":"Wire command validation and dispatch for event sourcing systems - External boundary layer with schema validation","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.1.0","@codeforbreakfast/eventsourcing-store":"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:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-commands_0.4.5_1760796633992_0.2643858867980964","host":"s3://npm-registry-packages-npm-production"}},"0.4.6":{"name":"@codeforbreakfast/eventsourcing-commands","version":"0.4.6","keywords":["cqrs","commands","command-query-separation","event-sourcing","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","schemas","domain-modeling"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-commands@0.4.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":"fd922251f48a2c95da8df3b14f195d67588be16c","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-commands/-/eventsourcing-commands-0.4.6.tgz","fileCount":19,"integrity":"sha512-J+KouPIAk9kSlJzj8RIoZlFXe3Db3I+t8EDsuCbRVvmOMwf3dKuXP/qVJRk/qJSaQZdBTisO74wGHBqti8s+PA==","signatures":[{"sig":"MEQCIHRRzWEx5gWLiHq9jJKOIrbS98SLB4u18eFsIHTXw5syAiB+X/40M7lqhrCFD53xZvdNJZ+WK5Q7DF+pnle72/yEAA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-commands@0.4.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":77149},"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:823888e9-b023-4a93-830a-1b50d26e05b6"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-commands"},"_npmVersion":"11.6.2","description":"Wire command validation and dispatch for event sourcing systems - External boundary layer with schema validation","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.1.0","@codeforbreakfast/eventsourcing-store":"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:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-commands_0.4.6_1761488005135_0.11730521972817476","host":"s3://npm-registry-packages-npm-production"}},"0.4.7":{"name":"@codeforbreakfast/eventsourcing-commands","version":"0.4.7","keywords":["cqrs","commands","command-query-separation","event-sourcing","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","schemas","domain-modeling"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-commands@0.4.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":"1b627b39ba4108e805bee1f92836985c7516473b","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-commands/-/eventsourcing-commands-0.4.7.tgz","fileCount":19,"integrity":"sha512-sYyT0+CdqyGLT4yyJNkFfCuFBc2SQ7VXEd7QeyIzWHAqMHtW3kRDf92/ruVgWv6VPyH2qOyHDVI4y/7mhnYRzg==","signatures":[{"sig":"MEYCIQCEyicn7lR1N4kcbGpxfqa5SlIooZWFMybkZlp1WLcPxQIhAIsweV6CkP2kcSL3GH5/FDbkBl/dWKSCSh2fsH+KFoWz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-commands@0.4.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":77149},"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:823888e9-b023-4a93-830a-1b50d26e05b6"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-commands"},"_npmVersion":"11.6.2","description":"Wire command validation and dispatch for event sourcing systems - External boundary layer with schema validation","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.1.0","@codeforbreakfast/eventsourcing-store":"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:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-commands_0.4.7_1762159722528_0.00750082910966543","host":"s3://npm-registry-packages-npm-production"}},"0.4.8":{"name":"@codeforbreakfast/eventsourcing-commands","version":"0.4.8","keywords":["cqrs","commands","command-query-separation","event-sourcing","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","schemas","domain-modeling"],"author":{"name":"Code for Breakfast"},"license":"MIT","_id":"@codeforbreakfast/eventsourcing-commands@0.4.8","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"dist":{"shasum":"f8be43e7abb97590b931a31bab1c70a9e9a29976","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-commands/-/eventsourcing-commands-0.4.8.tgz","fileCount":19,"integrity":"sha512-qRV6pNVRc2gRVNDCfCTMnoPZUJEeMBC60HEJKQFiIiyxKQNJ40Ebp0eMCioBwqmbU8giEqh02FKFEiRqVeQeaA==","signatures":[{"sig":"MEUCIFKQZwWSwrmlFXhKCawFZh8YSqnQRBRnWcGs+TZigis9AiEAokw0NN0vCbkq4+xGj8Cooh+P1wyECs4/UVUxbGhffeQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-commands@0.4.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":77174},"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:823888e9-b023-4a93-830a-1b50d26e05b6"}},"repository":{"url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","type":"git","directory":"packages/eventsourcing-commands"},"_npmVersion":"11.6.2","description":"Wire command validation and dispatch for event sourcing systems - External boundary layer with schema validation","directories":{},"sideEffects":false,"_nodeVersion":"20.19.5","dependencies":{"type-fest":"5.2.0","@codeforbreakfast/eventsourcing-store":"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:*"},"peerDependencies":{"effect":"^3.17.0"},"_npmOperationalInternal":{"tmp":"tmp/eventsourcing-commands_0.4.8_1764059357081_0.7863312863877767","host":"s3://npm-registry-packages-npm-production"}},"0.4.9":{"name":"@codeforbreakfast/eventsourcing-commands","version":"0.4.9","description":"Wire command validation and dispatch for event sourcing systems - External boundary layer with schema validation","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":["cqrs","commands","command-query-separation","event-sourcing","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","schemas","domain-modeling"],"author":{"name":"Code for Breakfast"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","directory":"packages/eventsourcing-commands"},"bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","peerDependencies":{"effect":"^3.17.0"},"dependencies":{"@codeforbreakfast/eventsourcing-store":"workspace:*","type-fest":"5.2.0"},"devDependencies":{"@codeforbreakfast/bun-test-effect":"workspace:*","@types/node":"24.10.0","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-commands@0.4.9","_nodeVersion":"20.19.6","_npmVersion":"11.6.2","dist":{"integrity":"sha512-ah7ozXLkrD8o5fgpXNM94vTHmKEIXc6uvgVHVDESu/4R1QibGQOVK8k1ax7s6uNKj/sqCaraDa5qVUjL/6dNTg==","shasum":"f46b3214655043a0cdc66c7e5c8048f34c4838b4","tarball":"https://registry.npmjs.org/@codeforbreakfast/eventsourcing-commands/-/eventsourcing-commands-0.4.9.tgz","fileCount":19,"unpackedSize":77174,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@codeforbreakfast%2feventsourcing-commands@0.4.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD5VJX5DX9unP/uo54mvnvWlw6yM03SAOGIWXMasQX1swIgRGjRrp8CDh0OHiPZLmlJ2ctkswc+JWud8NqYaxz0ias="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:823888e9-b023-4a93-830a-1b50d26e05b6"}},"directories":{},"maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/eventsourcing-commands_0.4.9_1765443327630_0.22104737907136163"},"_hasShrinkwrap":false}},"time":{"created":"2025-09-28T10:10:33.395Z","modified":"2025-12-11T08:55:28.169Z","0.2.0":"2025-09-28T10:10:33.669Z","0.2.3":"2025-09-28T14:00:15.110Z","0.3.0":"2025-09-28T16:34:07.429Z","0.3.1":"2025-09-29T14:06:06.798Z","0.4.0":"2025-10-05T15:22:34.241Z","0.4.1":"2025-10-05T18:41:52.858Z","0.4.2":"2025-10-07T16:29:10.432Z","0.4.3":"2025-10-12T11:13:46.566Z","0.4.4":"2025-10-14T08:22:59.139Z","0.4.5":"2025-10-18T14:10:34.176Z","0.4.6":"2025-10-26T14:13:25.320Z","0.4.7":"2025-11-03T08:48:42.719Z","0.4.8":"2025-11-25T08:29:17.316Z","0.4.9":"2025-12-11T08:55:27.780Z"},"bugs":{"url":"https://github.com/codeforbreakfast/eventsourcing/issues"},"author":{"name":"Code for Breakfast"},"license":"MIT","homepage":"https://github.com/codeforbreakfast/eventsourcing#readme","keywords":["cqrs","commands","command-query-separation","event-sourcing","domain-driven-design","ddd","effect","effect-ts","functional-programming","fp","typescript","type-safe","schemas","domain-modeling"],"repository":{"type":"git","url":"git+https://github.com/CodeForBreakfast/eventsourcing.git","directory":"packages/eventsourcing-commands"},"description":"Wire command validation and dispatch for event sourcing systems - External boundary layer with schema validation","maintainers":[{"name":"graemef","email":"graemef@gmail.com"}],"readme":"# @codeforbreakfast/eventsourcing-commands\n\nCQRS command types and schemas for event sourcing. This package provides core command handling abstractions with type-safe command and result definitions, featuring a strongly typed command registry system.\n\n## Overview\n\nThis package contains the fundamental CQRS (Command Query Responsibility Segregation) types that bridge the gap between user intentions and domain events. Commands represent requests to change system state, while command results indicate the outcome of processing those commands.\n\nThe package features a **typed command registry** that ensures each command name is tied to exactly one payload schema, providing compile-time safety and exhaustive validation using Effect's pattern matching for comprehensive command handling.\n\n## Installation\n\n```bash\nnpm install @codeforbreakfast/eventsourcing-commands\n```\n\n## Key Concepts\n\n- **Commands**: Represent user intent to change aggregate state\n- **Command Results**: Indicate success/failure of command processing\n- **Type Safety**: Full TypeScript support with Effect schemas\n- **Pattern Matching**: Effect's exhaustive pattern matching for command handling\n- **Typed Registry**: Compile-time validation and exhaustive command schemas\n- **Payload Validation**: Automatic schema-based validation for all commands\n\n## Quick Start\n\n### 1. Define Your Commands\n\n```typescript\nimport { Schema } from 'effect';\nimport { defineCommand } from '@codeforbreakfast/eventsourcing-commands';\n\n// Define command payload schemas\nconst CreateUserPayload = Schema.Struct({\n  name: Schema.String.pipe(Schema.minLength(1)),\n  email: Schema.String.pipe(Schema.pattern(/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/)),\n});\n\nconst UpdateEmailPayload = Schema.Struct({\n  newEmail: Schema.String.pipe(Schema.pattern(/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/)),\n});\n\n// Create command definitions\nconst createUserCommand = defineCommand('CreateUser', CreateUserPayload);\nconst updateEmailCommand = defineCommand('UpdateEmail', UpdateEmailPayload);\n```\n\n### 2. Create Command Matcher\n\n```typescript\nimport { Effect, Match, pipe, Schema } from 'effect';\nimport {\n  CommandFromDefinitions,\n  makeCommandRegistry,\n  CommandResult,\n  CommandDefinition,\n} from '@codeforbreakfast/eventsourcing-commands';\nimport { EventStreamPosition } from '@codeforbreakfast/eventsourcing-store';\n\n// Declare commands from previous example\ndeclare const createUserCommand: CommandDefinition<'CreateUser', { name: string; email: string }>;\ndeclare const updateEmailCommand: CommandDefinition<'UpdateEmail', { newEmail: string }>;\n\n// Define your command array\nconst commands = [createUserCommand, updateEmailCommand] as const;\n\n// Extract the command union type\ntype Commands = CommandFromDefinitions<typeof commands>;\n\n// Create a matcher using Effect's pattern matching\nconst commandMatcher = (command: Commands): Effect.Effect<CommandResult, never, never> =>\n  pipe(\n    Match.value(command),\n    Match.when({ name: 'CreateUser' }, (cmd) =>\n      Effect.succeed({\n        _tag: 'Success' as const,\n        position: { streamId: cmd.target, eventNumber: 1 } as EventStreamPosition,\n      })\n    ),\n    Match.when({ name: 'UpdateEmail' }, (cmd) =>\n      Effect.succeed({\n        _tag: 'Success' as const,\n        position: { streamId: cmd.target, eventNumber: 2 } as EventStreamPosition,\n      })\n    ),\n    Match.exhaustive // TypeScript ensures all commands are handled!\n  );\n```\n\n### 3. Build the Typed Registry\n\n```typescript\nimport {\n  makeCommandRegistry,\n  makeCommandRegistryLayer,\n  CommandFromDefinitions,\n  CommandDefinition,\n  CommandResult,\n} from '@codeforbreakfast/eventsourcing-commands';\nimport { Effect } from 'effect';\n\n// Declare from previous examples\ndeclare const commands: readonly [\n  CommandDefinition<'CreateUser', { name: string; email: string }>,\n  CommandDefinition<'UpdateEmail', { newEmail: string }>,\n];\ndeclare const commandMatcher: (\n  command: CommandFromDefinitions<typeof commands>\n) => Effect.Effect<CommandResult, never, never>;\n\n// Create the registry with commands and matcher\nconst registry = makeCommandRegistry(commands, commandMatcher);\n\n// Or create as an Effect Layer\nconst registryLayer = makeCommandRegistryLayer(commands, commandMatcher);\n```\n\n### 4. Dispatch Commands\n\n```typescript\nimport {\n  WireCommand,\n  CommandRegistry,\n  CommandResult,\n} from '@codeforbreakfast/eventsourcing-commands';\nimport { Effect, Context } from 'effect';\n\n// Declare registry from previous example\ndeclare const registry: Context.Tag.Service<typeof CommandRegistry>;\n\nconst wireCommand: WireCommand = {\n  id: 'cmd-123',\n  target: 'user-456',\n  name: 'CreateUser',\n  payload: {\n    name: 'John Doe',\n    email: 'john@example.com',\n  },\n};\n\n// The registry automatically validates the command against the appropriate schema\nconst result: CommandResult = await Effect.runPromise(registry.dispatch(wireCommand));\n\nif (result._tag === 'Success') {\n  console.log('Command executed successfully:', result.position);\n} else {\n  console.error('Command failed:', result.error);\n}\n```\n\n## API Reference\n\n### Core Types\n\n#### WireCommand\n\nWire commands are used for transport/serialization (APIs, message queues, etc.):\n\n```typescript\ninterface WireCommand {\n  readonly id: string;\n  readonly target: string; // Usually the aggregate ID\n  readonly name: string; // Command name\n  readonly payload: unknown; // Unvalidated payload\n}\n```\n\n#### DomainCommand\n\nDomain commands are the validated internal representation:\n\n```typescript\ninterface DomainCommand<TPayload> {\n  readonly id: string;\n  readonly target: string;\n  readonly name: string;\n  readonly payload: TPayload; // Validated payload\n}\n```\n\n#### CommandResult\n\nAll command processing results follow this discriminated union:\n\n```typescript\nimport { EventStreamPosition } from '@codeforbreakfast/eventsourcing-store';\n\ntype CommandResult =\n  | { _tag: 'Success'; position: EventStreamPosition }\n  | {\n      _tag: 'Failure';\n      error: {\n        _tag:\n          | 'ValidationError'\n          | 'HandlerNotFound'\n          | 'ExecutionError'\n          | 'AggregateNotFound'\n          | 'ConcurrencyConflict'\n          | 'UnknownError';\n        commandId: string;\n        [key: string]: unknown;\n      };\n    };\n```\n\n### Command Definition API\n\n#### `defineCommand(name, payloadSchema)`\n\nCreates a strongly typed command definition that pairs a command name with its payload schema:\n\n```typescript\nimport { Schema } from 'effect';\nimport { defineCommand } from '@codeforbreakfast/eventsourcing-commands';\n\nconst userCommand = defineCommand(\n  'CreateUser',\n  Schema.Struct({\n    name: Schema.String,\n    email: Schema.String,\n  })\n);\n```\n\n#### `buildCommandSchema(commands)`\n\nBuilds a discriminated union schema from multiple command definitions. This creates an exhaustive schema that validates any registered command:\n\n```typescript\nimport { buildCommandSchema, CommandDefinition } from '@codeforbreakfast/eventsourcing-commands';\nimport { Schema } from 'effect';\n\n// Declare commands from previous examples\ndeclare const createUserCommand: CommandDefinition<'CreateUser', { name: string; email: string }>;\ndeclare const updateEmailCommand: CommandDefinition<'UpdateEmail', { newEmail: string }>;\n\nconst commands = [createUserCommand, updateEmailCommand];\nconst exhaustiveSchema = buildCommandSchema(commands);\n```\n\n### Registry API\n\n#### `makeCommandRegistry(commands, matcher)`\n\nCreates a command registry using Effect's pattern matching. Features:\n\n- **Exhaustive validation**: All commands are validated against discriminated union schema\n- **Compile-time safety**: TypeScript ensures all command types are handled in matcher\n- **Pattern matching**: Uses Effect's `Match.exhaustive` for comprehensive command handling\n- **Type inference**: Full TypeScript support throughout the dispatch pipeline\n\n```typescript\nimport { Match, pipe, Effect } from 'effect';\nimport {\n  makeCommandRegistry,\n  CommandFromDefinitions,\n  CommandResult,\n  CommandDefinition,\n} from '@codeforbreakfast/eventsourcing-commands';\nimport { EventStreamPosition } from '@codeforbreakfast/eventsourcing-store';\n\n// Declare commands from previous examples\ndeclare const createUserCommand: CommandDefinition<'CreateUser', { name: string; email: string }>;\ndeclare const updateEmailCommand: CommandDefinition<'UpdateEmail', { newEmail: string }>;\n\nconst commands = [createUserCommand, updateEmailCommand] as const;\ntype Commands = CommandFromDefinitions<typeof commands>;\n\nconst commandMatcher = (command: Commands): Effect.Effect<CommandResult, never, never> =>\n  pipe(\n    Match.value(command),\n    Match.when({ name: 'CreateUser' }, (cmd) =>\n      Effect.succeed({\n        _tag: 'Success' as const,\n        position: { streamId: cmd.target, eventNumber: 1 } as EventStreamPosition,\n      })\n    ),\n    Match.when({ name: 'UpdateEmail' }, (cmd) =>\n      Effect.succeed({\n        _tag: 'Success' as const,\n        position: { streamId: cmd.target, eventNumber: 2 } as EventStreamPosition,\n      })\n    ),\n    Match.exhaustive // Compile-time exhaustiveness checking\n  );\n\nconst registry = makeCommandRegistry(commands, commandMatcher);\n```\n\n#### `makeCommandRegistryLayer(commands, matcher)`\n\nCreates an Effect Layer containing the command registry:\n\n```typescript\nimport { Effect, pipe } from 'effect';\nimport {\n  makeCommandRegistryLayer,\n  CommandRegistry,\n  CommandFromDefinitions,\n  CommandDefinition,\n  CommandResult,\n  WireCommand,\n} from '@codeforbreakfast/eventsourcing-commands';\n\n// Declare from previous examples\ndeclare const commands: readonly [\n  CommandDefinition<'CreateUser', { name: string; email: string }>,\n  CommandDefinition<'UpdateEmail', { newEmail: string }>,\n];\ndeclare const commandMatcher: (\n  command: CommandFromDefinitions<typeof commands>\n) => Effect.Effect<CommandResult, never, never>;\ndeclare const wireCommand: WireCommand;\n\nconst layer = makeCommandRegistryLayer(commands, commandMatcher);\n\n// Use in your Effect program\nconst program = pipe(\n  CommandRegistry,\n  Effect.flatMap((registry) => registry.dispatch(wireCommand)),\n  Effect.provide(layer)\n);\n```\n\n## Key Benefits\n\n### Compile-Time Safety\n\nThe matcher-based registry system provides several compile-time guarantees:\n\n- **Exhaustive command handling**: `Match.exhaustive` ensures all command types are handled\n- **Schema consistency**: Each command name maps to exactly one payload schema\n- **Type inference**: Full TypeScript support with exact command types in each match arm\n- **No runtime lookups**: Pattern matching eliminates the need for handler maps\n\n### Runtime Validation\n\n- **Exhaustive validation**: Commands are validated against a discriminated union of all registered schemas\n- **Early failure**: Invalid commands fail fast with detailed error messages\n- **Pattern matching**: Effect's matchers provide functional command dispatch\n- **Type-safe handling**: Each match arm receives the exact command type\n\n### Example Error Handling\n\n```typescript\nimport { Effect, Context } from 'effect';\nimport {\n  WireCommand,\n  CommandRegistry,\n  CommandResult,\n} from '@codeforbreakfast/eventsourcing-commands';\n\n// Declare from previous examples\ndeclare const registry: Context.Tag.Service<typeof CommandRegistry>;\ndeclare const wireCommand: WireCommand;\n\nconst result: CommandResult = await Effect.runPromise(registry.dispatch(wireCommand));\n\nswitch (result._tag) {\n  case 'Success':\n    console.log('Command processed:', result.position);\n    break;\n\n  case 'Failure':\n    switch (result.error._tag) {\n      case 'ValidationError':\n        console.error('Invalid payload:', result.error.validationErrors);\n        break;\n\n      case 'HandlerNotFound':\n        console.error('Unknown command:', result.error.commandName);\n        console.log('Available commands:', result.error.availableHandlers);\n        break;\n\n      case 'ExecutionError':\n        console.error('Handler failed:', result.error.message);\n        break;\n\n      default:\n        console.error('Unknown error:', result.error);\n    }\n}\n```\n\n## Architecture\n\nThis package sits between the domain layer (aggregates) and infrastructure layers (protocols, transports):\n\n- **Wire Layer** → External APIs use `WireCommand` for transport\n- **Validation Layer** → Registry validates and transforms to `DomainCommand`\n- **Domain Layer** → Handlers process validated `DomainCommand`s\n- **Result Layer** → Standardized `CommandResult` responses\n\n## Related Packages\n\n- `@codeforbreakfast/eventsourcing-store` - Event storage and streaming\n- `@codeforbreakfast/eventsourcing-aggregates` - Domain aggregate patterns\n- `@codeforbreakfast/eventsourcing-protocol` - Protocol implementation\n","readmeFilename":"README.md"}