├── .adr-dir ├── .github ├── copilot-instructions.md ├── dependabot.yml └── workflows │ ├── ci.yml │ ├── copilot-setup-steps.yml │ ├── dependabot.yml │ └── publish-release.yml ├── .gitignore ├── .vale.ini ├── .vale ├── .gitignore └── config │ └── vocabularies │ ├── Casual │ └── accept.txt │ ├── Dogma │ └── accept.txt │ ├── GitHubMarkdown │ └── accept.txt │ ├── Go │ └── accept.txt │ ├── ProperNouns │ └── accept.txt │ └── Technical │ └── accept.txt ├── CHANGELOG.md ├── LICENSE ├── Makefile ├── README.md ├── aggregate.go ├── aggregate_nocoverage.go ├── aggregate_test.go ├── application.go ├── codecov.yml ├── concurrency.go ├── doc.go ├── docs ├── adr │ ├── 0001-record-architecture-decisions.md │ ├── 0002-document-api-changes.md │ ├── 0003-aggregate-lifetime-control.md │ ├── 0004-adr-process.md │ ├── 0005-routing-of-commands-to-processes.md │ ├── 0006-stateless-aggregates-and-processes.md │ ├── 0007-location-of-examples.md │ ├── 0008-location-of-testing-features.md │ ├── 0009-immutable-keys.md │ ├── 0010-handler-timeout-hints.md │ ├── 0011-message-timing-information.md │ ├── 0012-identifier-comparison.md │ ├── 0013-instance-exists-check.md │ ├── 0014-apply-historical-events-to-aggregates.md │ ├── 0015-routing-unrecognized-messages.md │ ├── 0016-automatic-aggregate-creation.md │ ├── 0017-recreate-aggregate-after-destruction.md │ ├── 0018-projection-compaction.md │ ├── 0019-automatic-process-creation.md │ ├── 0020-identifier-constraints.md │ ├── 0021-remove-handler-timeout-hints.md │ ├── 0022-remove-crud-application-support.md │ ├── 0023-message-order-guarantees.md │ ├── 0024-permanently-end-processes.md │ ├── 0025-prevent-reverting-ended-processes.md │ ├── 0026-event-stream-based-projection-occ.md │ ├── 0027-message-type-registry.md │ ├── 0028-binary-marshaling.md │ ├── README.intro.md │ └── README.md ├── concepts.md ├── glossary.md └── handler-type-comparison.md ├── error.go ├── executor.go ├── executor_nocoverage.go ├── executor_test.go ├── go.mod ├── go.sum ├── handler.go ├── handlerroute.go ├── handlerroute_nocoverage.go ├── handlerroute_test.go ├── integration.go ├── integration_nocoverage.go ├── message.go ├── message_test.go ├── messageroute.go ├── messageroute_nocoverage.go ├── messageroute_test.go ├── messagetyperegistry.go ├── messagetyperegistry_test.go ├── process.go ├── process_nocoverage.go ├── process_test.go ├── projection.go ├── projection_nocoverage.go ├── projection_test.go ├── util.go ├── util_test.go ├── uuid.go └── uuid_test.go /.adr-dir: -------------------------------------------------------------------------------- 1 | docs/adr 2 | -------------------------------------------------------------------------------- /.github/copilot-instructions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/.github/copilot-instructions.md -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/.github/dependabot.yml -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.github/workflows/copilot-setup-steps.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/.github/workflows/copilot-setup-steps.yml -------------------------------------------------------------------------------- /.github/workflows/dependabot.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/.github/workflows/dependabot.yml -------------------------------------------------------------------------------- /.github/workflows/publish-release.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/.github/workflows/publish-release.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /artifacts/ 2 | /.makefiles/ 3 | -------------------------------------------------------------------------------- /.vale.ini: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/.vale.ini -------------------------------------------------------------------------------- /.vale/.gitignore: -------------------------------------------------------------------------------- 1 | /* 2 | !/config 3 | -------------------------------------------------------------------------------- /.vale/config/vocabularies/Casual/accept.txt: -------------------------------------------------------------------------------- 1 | tongue(-in-cheek)? 2 | -------------------------------------------------------------------------------- /.vale/config/vocabularies/Dogma/accept.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/.vale/config/vocabularies/Dogma/accept.txt -------------------------------------------------------------------------------- /.vale/config/vocabularies/GitHubMarkdown/accept.txt: -------------------------------------------------------------------------------- 1 | TIP 2 | NOTE|[Nn]ote 3 | IMPORTANT|[Ii]mportant 4 | -------------------------------------------------------------------------------- /.vale/config/vocabularies/Go/accept.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/.vale/config/vocabularies/Go/accept.txt -------------------------------------------------------------------------------- /.vale/config/vocabularies/ProperNouns/accept.txt: -------------------------------------------------------------------------------- 1 | Nygard 2 | Pryce 3 | -------------------------------------------------------------------------------- /.vale/config/vocabularies/Technical/accept.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/.vale/config/vocabularies/Technical/accept.txt -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/CHANGELOG.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/LICENSE -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/Makefile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/README.md -------------------------------------------------------------------------------- /aggregate.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/aggregate.go -------------------------------------------------------------------------------- /aggregate_nocoverage.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/aggregate_nocoverage.go -------------------------------------------------------------------------------- /aggregate_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/aggregate_test.go -------------------------------------------------------------------------------- /application.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/application.go -------------------------------------------------------------------------------- /codecov.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/codecov.yml -------------------------------------------------------------------------------- /concurrency.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/concurrency.go -------------------------------------------------------------------------------- /doc.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/doc.go -------------------------------------------------------------------------------- /docs/adr/0001-record-architecture-decisions.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0001-record-architecture-decisions.md -------------------------------------------------------------------------------- /docs/adr/0002-document-api-changes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0002-document-api-changes.md -------------------------------------------------------------------------------- /docs/adr/0003-aggregate-lifetime-control.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0003-aggregate-lifetime-control.md -------------------------------------------------------------------------------- /docs/adr/0004-adr-process.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0004-adr-process.md -------------------------------------------------------------------------------- /docs/adr/0005-routing-of-commands-to-processes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0005-routing-of-commands-to-processes.md -------------------------------------------------------------------------------- /docs/adr/0006-stateless-aggregates-and-processes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0006-stateless-aggregates-and-processes.md -------------------------------------------------------------------------------- /docs/adr/0007-location-of-examples.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0007-location-of-examples.md -------------------------------------------------------------------------------- /docs/adr/0008-location-of-testing-features.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0008-location-of-testing-features.md -------------------------------------------------------------------------------- /docs/adr/0009-immutable-keys.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0009-immutable-keys.md -------------------------------------------------------------------------------- /docs/adr/0010-handler-timeout-hints.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0010-handler-timeout-hints.md -------------------------------------------------------------------------------- /docs/adr/0011-message-timing-information.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0011-message-timing-information.md -------------------------------------------------------------------------------- /docs/adr/0012-identifier-comparison.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0012-identifier-comparison.md -------------------------------------------------------------------------------- /docs/adr/0013-instance-exists-check.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0013-instance-exists-check.md -------------------------------------------------------------------------------- /docs/adr/0014-apply-historical-events-to-aggregates.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0014-apply-historical-events-to-aggregates.md -------------------------------------------------------------------------------- /docs/adr/0015-routing-unrecognized-messages.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0015-routing-unrecognized-messages.md -------------------------------------------------------------------------------- /docs/adr/0016-automatic-aggregate-creation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0016-automatic-aggregate-creation.md -------------------------------------------------------------------------------- /docs/adr/0017-recreate-aggregate-after-destruction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0017-recreate-aggregate-after-destruction.md -------------------------------------------------------------------------------- /docs/adr/0018-projection-compaction.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0018-projection-compaction.md -------------------------------------------------------------------------------- /docs/adr/0019-automatic-process-creation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0019-automatic-process-creation.md -------------------------------------------------------------------------------- /docs/adr/0020-identifier-constraints.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0020-identifier-constraints.md -------------------------------------------------------------------------------- /docs/adr/0021-remove-handler-timeout-hints.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0021-remove-handler-timeout-hints.md -------------------------------------------------------------------------------- /docs/adr/0022-remove-crud-application-support.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0022-remove-crud-application-support.md -------------------------------------------------------------------------------- /docs/adr/0023-message-order-guarantees.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0023-message-order-guarantees.md -------------------------------------------------------------------------------- /docs/adr/0024-permanently-end-processes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0024-permanently-end-processes.md -------------------------------------------------------------------------------- /docs/adr/0025-prevent-reverting-ended-processes.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0025-prevent-reverting-ended-processes.md -------------------------------------------------------------------------------- /docs/adr/0026-event-stream-based-projection-occ.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0026-event-stream-based-projection-occ.md -------------------------------------------------------------------------------- /docs/adr/0027-message-type-registry.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0027-message-type-registry.md -------------------------------------------------------------------------------- /docs/adr/0028-binary-marshaling.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/0028-binary-marshaling.md -------------------------------------------------------------------------------- /docs/adr/README.intro.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/README.intro.md -------------------------------------------------------------------------------- /docs/adr/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/adr/README.md -------------------------------------------------------------------------------- /docs/concepts.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/concepts.md -------------------------------------------------------------------------------- /docs/glossary.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/glossary.md -------------------------------------------------------------------------------- /docs/handler-type-comparison.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/docs/handler-type-comparison.md -------------------------------------------------------------------------------- /error.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/error.go -------------------------------------------------------------------------------- /executor.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/executor.go -------------------------------------------------------------------------------- /executor_nocoverage.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/executor_nocoverage.go -------------------------------------------------------------------------------- /executor_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/executor_test.go -------------------------------------------------------------------------------- /go.mod: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/go.mod -------------------------------------------------------------------------------- /go.sum: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /handler.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/handler.go -------------------------------------------------------------------------------- /handlerroute.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/handlerroute.go -------------------------------------------------------------------------------- /handlerroute_nocoverage.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/handlerroute_nocoverage.go -------------------------------------------------------------------------------- /handlerroute_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/handlerroute_test.go -------------------------------------------------------------------------------- /integration.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/integration.go -------------------------------------------------------------------------------- /integration_nocoverage.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/integration_nocoverage.go -------------------------------------------------------------------------------- /message.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/message.go -------------------------------------------------------------------------------- /message_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/message_test.go -------------------------------------------------------------------------------- /messageroute.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/messageroute.go -------------------------------------------------------------------------------- /messageroute_nocoverage.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/messageroute_nocoverage.go -------------------------------------------------------------------------------- /messageroute_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/messageroute_test.go -------------------------------------------------------------------------------- /messagetyperegistry.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/messagetyperegistry.go -------------------------------------------------------------------------------- /messagetyperegistry_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/messagetyperegistry_test.go -------------------------------------------------------------------------------- /process.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/process.go -------------------------------------------------------------------------------- /process_nocoverage.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/process_nocoverage.go -------------------------------------------------------------------------------- /process_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/process_test.go -------------------------------------------------------------------------------- /projection.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/projection.go -------------------------------------------------------------------------------- /projection_nocoverage.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/projection_nocoverage.go -------------------------------------------------------------------------------- /projection_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/projection_test.go -------------------------------------------------------------------------------- /util.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/util.go -------------------------------------------------------------------------------- /util_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/util_test.go -------------------------------------------------------------------------------- /uuid.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/uuid.go -------------------------------------------------------------------------------- /uuid_test.go: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/dogmatiq/dogma/HEAD/uuid_test.go --------------------------------------------------------------------------------