{"_id":"@almin/usecase-bus","_rev":"6-d9e70e2eade8846ef407d26741f21294","name":"@almin/usecase-bus","dist-tags":{"latest":"1.2.3"},"versions":{"1.2.0":{"name":"@almin/usecase-bus","version":"1.2.0","description":"A mediator for UseCase and Command.","keywords":["almin","command","usecase"],"homepage":"https://github.com/almin/almin/tree/master/packages/@almin/usecase-bus/","bugs":{"url":"https://github.com/almin/almin/issues"},"license":"MIT","author":{"name":"azu"},"files":["bin/","lib/","src/"],"main":"lib/index.js","types":"lib/index.d.ts","repository":{"type":"git","url":"https://github.com/almin/almin.git"},"scripts":{"build":"cross-env NODE_ENV=production tsc -p .","prepublish":"npm run --if-present build","test":"mocha \"test/**/*.ts\"","prettier":"prettier --write \"**/*.{js,jsx,ts,tsx,css}\"","watch":"tsc -p . --watch","clean":"rimraf lib/"},"prettier":{"printWidth":120,"singleQuote":false,"tabWidth":4},"devDependencies":{"@types/mocha":"^5.2.1","@types/node":"^9.4.7","almin":"^0.17.1","cross-env":"^5.1.4","mocha":"^5.2.0","prettier":"^1.13.5","rimraf":"^2.6.2","ts-node":"^6.1.0","ts-node-test-register":"^3.0.0","typescript":"^2.9.1"},"peerDependencies":{"almin":">=0.16.0"},"publishConfig":{"access":"public"},"licenseText":"Copyright (c) 2018 azu\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n","_id":"@almin/usecase-bus@1.2.0","dist":{"shasum":"6dcdd977433067c7ddae2843a49526e6ec105e26","tarball":"https://registry.npmjs.org/@almin/usecase-bus/-/usecase-bus-1.2.0.tgz","fileCount":19,"unpackedSize":26892,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbG8slCRA9TVsSAnZWagAA9ioP/j+O7gvGbxR6d/ZeKEa1\nPBisIGUinGjzw5piSyckc04HwwCI7gzuXkKKBfdGw7ccan6cF6lHL69Mzn2S\nyo7hRsGQ19LE6KHKwWFeUnJcvoSlxgN/wrZL50Cjo8FjpySfr5RL/6mEIpLM\n4+sky7O3r9SoX1SXl8r+DhKTiHQaPsGiDSpQKY7mOXMQfO76+Sw6fsDhJT6U\ngfzBG/cjoAMW62gP5i19dpJLYcrwvRsZ+fsalZsEK+cXY4lqO84vltQkE5q4\nraKYjg7r+/ELcqQOmJcc+CUlFMwYMZt/Lm+Kv8cbRlZwKtXGrlIwHMUxkNQd\nB6zNEOWa9dFRxsm9TRObWseqKg8AvFA35iKVr+2KEePvZ4G06MI6wmNVitGQ\n5gCo6FbaaL49desbyRrumS2N+C4pK1I0YJ01FzZOUixCCr05CL3V97FPIIWI\n7xSdnLilTPBP0w98V++jR2zco4JNHhhXbAkqnBuslfiACS4xjbWw4qfc6LNI\nmcjY3elUlTRedmEbLPLxI/F2ac0Oi2up5FQ9RonbJ08OdHz88FUZ4+HDorCH\n8/W5koNuj77OOXuM3X993aAtWeDS6s6xcJ7CVDmsMKwuZcpOdAD7/hXPaLGE\nVQE9ZPbpDLbvLM7zxMByGqQLmVdOwf2csibDBnbOhX3zbTfcu2otlVguDNbF\nwfIX\r\n=YlBE\r\n-----END PGP SIGNATURE-----\r\n","integrity":"sha512-ENDelAVyP6FtT3Q+shfqc8jB6MGpNZeiQw4stC9MMCJ6UCKUBzIqMvYFvSNmxVqamK/ReNzbPuXucHo2lAzTFw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQC5jV1ebo6/zqjFTca1Gh2N5WvnRde/Wge16da6Zj4JqQIgNdRbHz0YTfUNHxxGaB/xbrjRHTMl3VpJ64aev39d8aM="}]},"maintainers":[{"name":"azu","email":"azuciao@gmail.com"}],"_npmUser":{"name":"azu","email":"azuciao@gmail.com"},"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/usecase-bus_1.2.0_1528548133394_0.22515534062294074"},"_hasShrinkwrap":false},"1.2.1":{"name":"@almin/usecase-bus","version":"1.2.1","description":"A mediator for UseCase and Command.","keywords":["almin","command","usecase"],"homepage":"https://github.com/almin/almin/tree/master/packages/@almin/usecase-bus/","bugs":{"url":"https://github.com/almin/almin/issues"},"license":"MIT","author":{"name":"azu"},"files":["bin/","lib/","src/"],"main":"lib/index.js","types":"lib/index.d.ts","directories":{"lib":"lib","test":"test"},"repository":{"type":"git","url":"git+https://github.com/almin/almin.git"},"scripts":{"build":"cross-env NODE_ENV=production tsc -p .","prepublish":"npm run --if-present build","test":"mocha \"test/**/*.ts\"","prettier":"prettier --write \"**/*.{js,jsx,ts,tsx,css}\"","watch":"tsc -p . --watch","clean":"rimraf lib/"},"prettier":{"printWidth":120,"singleQuote":false,"tabWidth":4},"devDependencies":{"@types/mocha":"^5.2.1","@types/node":"^9.4.7","almin":"^0.18.0","cross-env":"^5.1.4","mocha":"^5.2.0","prettier":"^1.13.5","rimraf":"^2.6.2","ts-node":"^7.0.1","ts-node-test-register":"^4.0.0","typescript":"^3.0.1"},"peerDependencies":{"almin":">=0.16.0"},"publishConfig":{"access":"public"},"gitHead":"5df93f9bbea86f4f59a9243dec22802ad2f0fd70","_resolved":"","_integrity":"","_from":"file:almin-usecase-bus-1.2.1.tgz","_id":"@almin/usecase-bus@1.2.1","_npmVersion":"6.2.0","_nodeVersion":"10.0.0","_npmUser":{"name":"azu","email":"azuciao@gmail.com"},"dist":{"integrity":"sha512-28IcHx+6ufTa2DP/bXeqCQpBE54FgfJQYtpCnWHBK/AP1XRE+C4Ys4zQt+e55mnMjOO1I2JiNrTvcWU4clfNrg==","shasum":"5342517809593047567bcc93f4fc5a44ff7c5c1d","tarball":"https://registry.npmjs.org/@almin/usecase-bus/-/usecase-bus-1.2.1.tgz","fileCount":16,"unpackedSize":27151,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbgmAHCRA9TVsSAnZWagAAz34P/16QMY284mLne6NEXL1f\nPDASwUU61l7F3hjn7S3OLglt3cvwt94KrYdNNaC0ENgAYgerKylRWrXv7Ldq\nag/RJbFxa4GPTVdk91mxqX8lg6f6ZWvjFoCi0tcDutig5BICciyiQ5UlLxBA\neMWleJ0SDCKlWuYukTiijra8A+aQAAvPNpU1aOgpLEv8fIwVKSLsLLupamoI\naYEBLSv3ZuyDx4Ow8/nxNctqLmB8EFLSvF3kFR5XCpROKujEEp8HCAWLxBGc\nLEnr2UwaP08vBANr1lvY3X1EUUn5rVdUd8HmJWBadrgD/0oEUtEOVy8HmpeK\no+oZ8dxNvOEWm0ELVWUWqB7z4lCWbJIcdmOQ4qpbBNfXPSfUpe693UdC1zgR\nRfNJC7CJtXUrADd8OmpYpz/cbWunvvaXdysDVytKZy4ocEEBZqZT3es1pMYm\nsuTB3/mCZ7Uo4CiaKTIvBmyjZ+rX0VXWlIqnt377U5LRwg8T0jAFGGy5ozVB\n1bK5h+GPAtEl+HfbTp4mixAnm1TkYSyNLQ1f5xvFAdTHAiVHHcDbrYZcumdD\nBAOpasRiDj8Msv+q/R4JdMRoRsiaAfjda4lNFFOQdfAwCN4OO/R8a5aWlj2Q\nM8z60OZkzWZOqbkWSfdYEQ/QG31Wjxt2gSQD0y1Oz0pKCgMBTNsCyt2XApyJ\nExHz\r\n=Crcl\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCAzhUWtKGfBjyOjTpwrgRVKiVa8P+mse/qxfzKt4r7rwIhAJnrUomGRxuCLMPdsZPJa02Gp1awg3mP3s4WvhQzaMDI"}]},"maintainers":[{"name":"azu","email":"azuciao@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/usecase-bus_1.2.1_1535270918434_0.6568791129446347"},"_hasShrinkwrap":false},"1.2.2":{"name":"@almin/usecase-bus","version":"1.2.2","description":"A mediator for UseCase and Command.","keywords":["almin","command","usecase"],"homepage":"https://github.com/almin/almin/tree/master/packages/@almin/usecase-bus/","bugs":{"url":"https://github.com/almin/almin/issues"},"license":"MIT","author":{"name":"azu"},"main":"lib/index.js","types":"lib/index.d.ts","directories":{"lib":"lib","test":"test"},"repository":{"type":"git","url":"git+https://github.com/almin/almin.git"},"scripts":{"build":"cross-env NODE_ENV=production tsc -p .","prepublish":"npm run --if-present build","test":"mocha \"test/**/*.ts\"","prettier":"prettier --write \"**/*.{js,jsx,ts,tsx,css}\"","watch":"tsc -p . --watch","clean":"rimraf lib/"},"prettier":{"printWidth":120,"singleQuote":false,"tabWidth":4},"devDependencies":{"@types/mocha":"^5.2.1","@types/node":"^9.4.7","almin":"^0.18.1","cross-env":"^5.1.4","mocha":"^5.2.0","prettier":"^1.13.5","rimraf":"^2.6.2","ts-node":"^7.0.1","ts-node-test-register":"^4.0.0","typescript":"^3.0.1"},"peerDependencies":{"almin":">=0.16.0"},"publishConfig":{"access":"public"},"gitHead":"cc26f5becaef3dac8edc5f3e3ab2449fe0539077","_resolved":"","_integrity":"","_from":"file:almin-usecase-bus-1.2.2.tgz","_id":"@almin/usecase-bus@1.2.2","_npmVersion":"6.4.1","_nodeVersion":"10.0.0","_npmUser":{"name":"azu","email":"azuciao@gmail.com"},"dist":{"integrity":"sha512-7e+3JcdB9CSHwmARDwGh/qn94OON1eOOUqMsUVifOIp23q7mj/U3ESbhpN0eHRn2OZ7RmhdKZWotOkQVxmbw/w==","shasum":"44015e4ef1ed9f27bdcee7db46265ff72b63c07a","tarball":"https://registry.npmjs.org/@almin/usecase-bus/-/usecase-bus-1.2.2.tgz","fileCount":16,"unpackedSize":27353,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJbiHqHCRA9TVsSAnZWagAAXj8P/3ap1pWokQC0byWta9y8\naKhpEyUlKXbSlrnm9Z/2zfKf39nkIOUGrBeL9RaccCHnK4edpFNDWvPbZmgc\nyAtxIfCEZU3m7jn633hSY49NuDPmw+l6oPO0c+OGZgdJtsxdTI49IodUWJAh\nF4XzbVCya4pV16CbOWGS5MiJTlXfSARWsuAYYoBLP0kdW34eidunttlu/Eef\n097KB/bypn/pbUWL3fx6YoBQBQB872yv+vUHJVSaIeckIoaOGnOtcNh54pq2\nXoYFdmwjYN/nGQnYh8yP+YEeksMZWn7KYPBZiyZ3ErdtkgbfbLfonWoPqwNE\nQsOYnXdbFTwTEVFS3R9JjX8IwBKqXxbmxMowBghHzr8N+JMj3Ja2oH1/njjG\ncmeyUPr3lE8nIaWE9ZYFSFus6WPCu1yhos3yGDcQw9KUKSnMTx/ZLECnchsV\nnceuSVycFHgs8axBceF7BOPN4PEZlr9bdrw1uAmaYVS1hSYaGsn+svX2gI8T\nLVyQuLT53MJTaOj9nsjGhgqUtVBuV6e3I4GO/ELUPpOOuv5NPDSwcLK6IupA\n0Xvfmzn8tIvbIm17mGKN9JrZtIoTk4pJyVQjAQNKyy5/6YMbGUV6hMt0WZ+v\n9bVJhohY3POAspOKQACG1IJ/R0hqeXE/A6K2xUamA5Lgh6FwMmDDAQeAlUWH\nmHQA\r\n=h6op\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIB9bO0JcenILlXtrV7iwRbwuqXq3QP1fLp3pspTXAbPrAiA66mgcQhmE7jN1SQ7N7gB8rfKVEwVjAVuyaveitokh+w=="}]},"maintainers":[{"name":"azu","email":"azuciao@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/usecase-bus_1.2.2_1535670918487_0.3654784517151206"},"_hasShrinkwrap":false},"1.2.3":{"name":"@almin/usecase-bus","version":"1.2.3","description":"A mediator for UseCase and Command.","keywords":["almin","command","usecase"],"homepage":"https://github.com/almin/almin/tree/master/packages/@almin/usecase-bus/","bugs":{"url":"https://github.com/almin/almin/issues"},"license":"MIT","author":{"name":"azu"},"main":"lib/index.js","types":"lib/index.d.ts","directories":{"lib":"lib","test":"test"},"repository":{"type":"git","url":"git+https://github.com/almin/almin.git"},"scripts":{"build":"cross-env NODE_ENV=production tsc -p .","prepublish":"npm run --if-present build","test":"mocha \"test/**/*.ts\"","prettier":"prettier --write \"**/*.{js,jsx,ts,tsx,css}\"","watch":"tsc -p . --watch","clean":"rimraf lib/"},"prettier":{"printWidth":120,"singleQuote":false,"tabWidth":4},"devDependencies":{"@types/mocha":"^7.0.2","@types/node":"^14.0.22","almin":"^0.19.0","cross-env":"^7.0.2","mocha":"^8.0.1","prettier":"^2.0.5","rimraf":"^3.0.2","ts-node":"^8.10.2","ts-node-test-register":"^8.0.1","typescript":"^3.9.6"},"peerDependencies":{"almin":">=0.16.0"},"publishConfig":{"access":"public"},"gitHead":"4a68daa246948b47f428ee186b37ad9e31b67aeb","_id":"@almin/usecase-bus@1.2.3","_nodeVersion":"14.5.0","_npmVersion":"lerna/3.22.1/node@v14.5.0+x64 (darwin)","_npmUser":{"name":"azu","email":"azuciao@gmail.com"},"dist":{"integrity":"sha512-V6z9n1YkStxf+Ph+FEZTD89Ow4hPBiymIdPinbMWlATOAtA9GeWl4xCmxNRm9NDXrt9E4V+Fz/5/94gQGzZahg==","shasum":"c2cd622f83bfdf7db641a45a6de1b553a378190d","tarball":"https://registry.npmjs.org/@almin/usecase-bus/-/usecase-bus-1.2.3.tgz","fileCount":26,"unpackedSize":67541,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJfCsncCRA9TVsSAnZWagAAOD0QAJjXmnHm2OFXhCOut6Oo\nddFPcZ+21pdgZPIqUsKzGBTF4yQ83WYhk6ftMCprCIzLxJot4Gk1ohos/7OW\nQs8cCRyXjMTWlWSCcIcngltDATErT8RMIhnfK2pUs1T06dnW4U1Rp0AqOegE\nCBZ2YtTt4BGxzFjJMHiN+4xvjdY7bMoGNdcccgCmAggQE04D8ujpOCxVEJ5S\nlG8YbHqRtdgvEth3wedHdGSFdTnMDU56X6DGFMk0AJ04m+GArUa6b/sLLU7H\noAwhqeIvSWi8k+Z56+MjHKheIJPyXRnMPuT9D+3oeQaaqtkmXEUNDK0i8rk5\nYcy4shXxLfWcfBtP0R3wTQuTsrsl/m03ynPVOEPYDmXDkGKK5h7ng0+vJ/EV\n+P+VtzYnCpxQ1z9ZrROnvV+vBER0uHHqxNm+8PwEULampqeWMuZYbvIL+uaJ\nNA0VJIYW16JrFPasowesPUM42kc0O0/8OJlKwXMjJYq4WthtSGOoSnHpwWBN\nZRgsDeMWXrZcb3d9K/AfzjmjrklzdM7F8bNjrg7/3q1eD5AdTAgi4ixceBdu\n9fSTnY6Zhq/G/S7X/YqQ9Q3FPOAW/A774DdHqa3ycFlN46cKziPbrA2PYB5n\nLzz5+cqbh8rhJqb0J8maAKghbLX9dJIxeHdfZSF7S/TB1wpkNmNITHrglOGg\nxHHK\r\n=kerB\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDQw4Pf0cQCxqAdA9t3VBvSttPIvCdYU7cHZZMlxcBMGgIhAIA875L+m7l1lpx/eHRXzWNhzFQF9S1GwmTH09ocE+pY"}]},"maintainers":[{"name":"azu","email":"azuciao@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/usecase-bus_1.2.3_1594542556285_0.6772235510439757"},"_hasShrinkwrap":false}},"time":{"created":"2018-06-09T12:42:13.331Z","1.2.0":"2018-06-09T12:42:13.461Z","modified":"2022-06-12T14:33:59.901Z","1.2.1":"2018-08-26T08:08:38.573Z","1.2.2":"2018-08-30T23:15:18.632Z","1.2.3":"2020-07-12T08:29:16.395Z"},"maintainers":[{"name":"azu","email":"azuciao@gmail.com"}],"description":"A mediator for UseCase and Command.","homepage":"https://github.com/almin/almin/tree/master/packages/@almin/usecase-bus/","keywords":["almin","command","usecase"],"repository":{"type":"git","url":"git+https://github.com/almin/almin.git"},"author":{"name":"azu"},"bugs":{"url":"https://github.com/almin/almin/issues"},"license":"MIT","readme":"# @almin/usecase-bus\n\nA mediator for UseCase and Command.\nThis library provide Command Bus.\n\n## What is Command and Command handler pattern?\n\n- [Implementing the microservice application layer using the Web API | Microsoft Docs](https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-application-layer-implementation-web-api \"Implementing the microservice application layer using the Web API | Microsoft Docs\")\n    - [日本語訳](https://docs.microsoft.com/ja-jp/dotnet/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-application-layer-implementation-web-api \"Web API を使用したマイクロサービス アプリケーション レイヤーの実装 | Microsoft Docs\")\n\n### Command\n\n- A bus send Command to a single Command Handler\n- Command may be rejected by system\n- Command may be failed during executing in Handler\n- Command may be various effect in system state\n- Command does not be over the boundary\n- Command should have imperative named.\n\n## What is merits?\n\n- Flexible\n- Retry the UseCase\n- Logging\n- Adoptable\n- Additional Event\n\n## What is de-merits?\n\n- Add new Layer(CommandBus)\n\n## Install\n\nInstall with [npm](https://www.npmjs.com/):\n\n    npm install @almin/usecase-bus\n\n## Usage\n\n```ts\nimport { UseCase, Context } from \"almin\";\nimport { UseCaseCommandBus } from \"@almin/usecase-bus\"\n// async code\n(async () => {\n    const context = new Context({\n        store: new NopeStore()\n    });\n\n    class CommandA {\n        type = \"CommandA\";\n    }\n\n    class CommandB {\n        type = \"CommandB\";\n    }\n\n    const executed: (CommandA | CommandB)[] = [];\n\n    class TestUseCaseA extends UseCase {\n        execute(command: CommandA) {\n            executed.push(command);\n        }\n    }\n\n    class TestUseCaseB extends UseCase {\n        execute(command: CommandB) {\n            executed.push(command);\n        }\n    }\n\n    const createTestUseCaseB = (_command: CommandB) => {\n        return new TestUseCaseB();\n    };\n\n    // create binding between Command Constructor and UseCase/UseCaseFactory.\n    const bus = UseCaseCommandBus.create(context)\n        .bind(CommandA, new TestUseCaseA())\n        .bindFactory(CommandB, createTestUseCaseB);\n    // send CommandA => execute TestUseCaseA\n    await bus.send(new CommandA());\n    assert.strictEqual(executed.length, 1);\n    assert.ok(executed[0] instanceof CommandA);\n    // send CommandB => execute createTestUseCaseB()\n    await bus.send(new CommandB());\n    assert.strictEqual(executed.length, 2);\n    assert.ok(executed[1] instanceof CommandB);\n})()\n```\n\n## Changelog\n\nSee [Releases page](https://github.com/almin/almin/releases).\n\n\n## Reference\n\n- [Implementing the microservice application layer using the Web API | Microsoft Docs](https://docs.microsoft.com/en-us/dotnet/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-application-layer-implementation-web-api \"Implementing the microservice application layer using the Web API | Microsoft Docs\")\n    - [日本語訳](https://docs.microsoft.com/ja-jp/dotnet/standard/microservices-architecture/microservice-ddd-cqrs-patterns/microservice-application-layer-implementation-web-api \"Web API を使用したマイクロサービス アプリケーション レイヤーの実装 | Microsoft Docs\")\n- [predaddy/src/predaddy/messagehandling at 3.0 · szjani/predaddy](https://github.com/szjani/predaddy/tree/3.0/src/predaddy/messagehandling#messagebus \"predaddy/src/predaddy/messagehandling at 3.0 · szjani/predaddy\")\n- [jbogard/MediatR: Simple, unambitious mediator implementation in .NET](https://github.com/jbogard/MediatR \"jbogard/MediatR: Simple, unambitious mediator implementation in .NET\")\n\n## Contributing\n\nPull requests and stars are always welcome.\n\nFor bugs and feature requests, [please create an issue](https://github.com/almin/almin/issues).\n\n1. Fork it!\n2. Create your feature branch: `git checkout -b my-new-feature`\n3. Commit your changes: `git commit -am 'Add some feature'`\n4. Push to the branch: `git push origin my-new-feature`\n5. Submit a pull request :D\n\n## Author\n\n- [github/azu](https://github.com/azu)\n- [twitter/azu_re](https://twitter.com/azu_re)\n\n## License\n\nMIT © azu\n","readmeFilename":"README.md"}